Qt : 向 GPRS 调制解调器发送 AT 命令
Posted
技术标签:
【中文标题】Qt : 向 GPRS 调制解调器发送 AT 命令【英文标题】:Qt : send AT command to GPRS modem 【发布时间】:2014-07-02 15:00:29 【问题描述】:我有一块带有 GPRS 屏蔽的 Arduino 板。我可以使用 Arduino 的 IDE 发送和接收 SMS,但我现在要使用 Wavecom GPRS 调制解调器。
我可以将字符串从 Qt 连接并发送到 Arduino 板,这样当 Arduino 从 Qt 接收到特殊字符串时,它会发送一条短信。请参阅下面的代码。
但是现在,我被困住了...不知道如何直接从 Qt 发送 AT 命令,而不仅仅是发送 Arduino 等待发送 SMS 的字符串...
现在有人可以从 Qt 向 GPRS 调制解调器发送 AT 命令吗?
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
【问题讨论】:
这与 Arduino 板有何不同?如果您使用 QSerialPort 类,QIODevice::write() 会将这一切抽象出来,前提是 GPRS 的调制解调器 AT 通信是通过串行端口硬件接口发生的。 我希望我错了,但我只能从 Qt 向正在监听信号的 Arduino 发送一个信号(在我的情况下是一个字符串)。当他收到信号时,他会发送带有 Arduino 板中 AT 命令的 SMS。我无法将任何数据放入 GPRS 调制解调器中......我一直在寻找 QProcess 类来执行发送 AT 命令的 shell 脚本,但仍然希望可以直接从 Qt 执行此操作 您认为 AT 命令是如何工作的?以我的经验,它们通常是通过常规串行端口发送的。现在,您可能有一些蓝牙等调制解调器,但根据您的串行使用情况,它可能是串行的。调制解调器和你的 Qt 程序之间没有紧密的联系。我不知道为什么你认为两个程序只有在它们都用 Qt 等编写时才能说话。 刚刚发现您可以输入 AT 命令:m_serialPort->write(QByteArray("AT..\r\n"));
这样可以节省我的时间!!
因为我离专业人士还很远^^
【参考方案1】:
AT
命令通常通过串口发送,由 GPRS 调制解调器上的控制器软件处理。因此,您只需要在 Qt 应用程序中处理发送端即可。
因此,您只需通过 QtSerialPort 模块使用QIODevice::write()
接口:
mySerialPort->write("My AT command");
【讨论】:
非常感谢您的回答! :) 我认为这适用于“普通”调制解调器,但使用 Arduino 命令如下:SIM900.print("AT+CMGF=1\r");
因为上面有一个屏蔽 -SIM900-。这不起作用... mySerialPort->write("SIM900.print(\"AT+CMGF=1\r\")\r\n");不知道该如何面对以上是关于Qt : 向 GPRS 调制解调器发送 AT 命令的主要内容,如果未能解决你的问题,请参考以下文章
如何使用python(pyserial)向华为E3272 Hilink发送AT命令?
使用 Android 模拟器测试来自外部应用程序的 COM 的 AT 命令