2014-07-02 66 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

相关问题