2014-07-02 104 views
1

我有一個帶有GPRS屏蔽的Arduino板。我能夠使用Arduino的IDE發送和接收短信,但我現在要使用Wavecom GPRS調制解調器。Qt:發送AT命令到GPRS調制解調器

我可以連接並從Qt發送字符串到Arduino板,以便當Arduino從Qt收到特殊字符串時,它會發送一條SMS。見下面的代碼。

但現在,我卡住了...不知道如何發送AT直接從Qt的命令,而不是隻發送一個字符串,它的Arduino的等待發送SMS ...

現在是否有人如果可以從Qt發送AT命令到GPRS調制解調器?

Arduino的代碼:

void loop() 
{ 
    //Check if available 
    if (Serial.available()) 
    { 
     // read the incoming byte: 
     incomingByte = Serial.read(); 

     //Just to show how it works 
     if(incomingByte == 'X') 
     { 
     AT commands to send an sms 
     }  
    } 
    else 
     delay(5); // there is nothing to read, so wait a few msec's 
} 
+0

是如何從Arduino板有什麼不同?如果您使用QSerialPort類,則QIODevice :: write()將所有這些抽象出來,前提是GPRS的調制解調器AT通信通過串行端口硬件接口進行。 – lpapp

+0

我希望我錯了,但我只能從Qt發送信號給正在監聽信號的Arduino(在我的情況下是一個字符串)。當他收到信號時,他會使用Arduino板上的AT命令發送短信。我無法將任何數據放入GPRS調制解調器中...... 我在尋找QProcess類來執行發送AT命令的shell腳本,但仍然希望可以直接從Qt – gr3g

+0

那裏執行操作。您如何看待AT命令有效嗎?根據我的經驗,它們通常是通過普通的串行端口發送的。現在,可能會出現藍牙等調制解調器,但根據您的串行使用情況,它可能是串行的。調制解調器和你的Qt程序之間沒有緊密的聯繫。我不知道爲什麼你認爲兩個程序只能用Qt編寫纔會說話。 – lpapp

回答

1

AT命令通常通過將由上GPRS調制解調器控制器軟件處理串行端口發送。因此,您只需要在Qt應用程序中處理髮送方。

因此,你只需使用QIODevice::write()接口通過QtSerialPort模塊:

mySerialPort->write("My AT command"); 
+0

非常感謝您的回答! :) 我認爲這是一個「正常」的調制解調器,但與Arduino命令如下:'SIM900.print(「AT + CMGF = 1 \ r」);'因爲有一個屏蔽-SIM900 - 。 這不起作用... mySerialPort-> write(「SIM900.print(\」AT + CMGF = 1 \ r \「)\ r \ n」); 看不到如何面對這一點 – gr3g

相關問題