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 命令的主要内容,如果未能解决你的问题,请参考以下文章

合宙GPRS模块连接阿里云

合宙GPRS模块连接阿里云

如何使用python(pyserial)向华为E3272 Hilink发送AT命令?

使用 Android 模拟器测试来自外部应用程序的 COM 的 AT 命令

如何在通话期间通过 GSM 调制解调器发送和接收一些数据(Python 和 AT 命令)

+CMS ERROR: 304, 使用 at 命令发送消息