自定义C++应用在发送特定 AT 命令时返回"Syntax Error"



我正在尝试写一个c++应用程序,这是能够使一些电话。为此,我订购了一个USB GSM模块和一张预付费的SIM卡。

我在PuTTY中测试了该模块,一切都如预期的那样工作。我选择一个COM端口,可以发送/接收消息。看到的例子:

AT
OK
AT+CMEE=2
OK

但是当我尝试通过我自己的应用程序发送这些命令时,其中一些命令失败了(例如AT+CMEE=2)。

AT
OK
AT+CMEE=2
+CMEE ERROR: Syntax Error

其他命令,如解锁SIM卡也可以正常工作。但是例如"atd";是行不通的。这是写入串行端口的代码。请记住,这只是为了测试的目的:

DWORD dummy;
// "buffer" is just an std::string
char* string = new char[buffer.length() + 3]; // "+3" because I append '' later when printing
strcpy(string, buffer.c_str());
string[buffer.length()] = ' ';
string[buffer.length() + 1] = 'r';
WriteFile(m_hCom,
string,
(buffer.length() + 2) * sizeof(char),
&dummy,
0
);

我尝试了几种变体(''结尾,中间没有空格,等等),但所有这些都导致没有命令工作。因此,这是解决方案,其中至少有一些命令正在工作和响应。

还有什么问题吗?

这取决于操作模式,但在使用GSM调制解调器时,有时应该使用rn终止AT命令。请看这篇文章。看起来你只添加了一个r

最新更新