问题描述
我正在尝试编写一个能够拨打电话的 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 '\0' 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
);
我尝试了几种变体(最后是“\0”,中间没有空格等),但所有这些都导致命令根本无法运行。所以这是至少一些命令正在工作和响应的解决方案。
还有什么想法可能出问题了吗?
解决方法
这取决于操作模式,但有时您应该在使用 GSM 调制解调器时使用 \r\n
终止 AT 命令。请参阅 this 帖子。看起来您只是添加了一个 \r