调制解调器启动时执行AT命令的问题
作者:互联网
我正在开发一个应用程序,它将读取数据并将数据写入gsm调制解调器.当我关闭调制解调器并再次打开时,在启动时,我需要发送一个AT命令,以便该调制解调器自动设置为端口给定的设置.当我在超级终端中给出此命令时,它不会显示,但命令会发送到调制解调器.并且调制解调器将自身设置为我为超级终端端口设置提供的设置.从那时起,我可以发送其余命令.但是在我的应用程序中,我无法发送第一个AT命令,因此我是通过超级终端手动执行的.为什么在我的应用程序中没有发生这种情况?我也尝试使用按钮单击发送此命令,但是仍然没有在端口上执行该命令.
port.Open();
port.DtrEnable = true;
port.RtsEnable = true;
if (port != null)
{
btn_connect.Enabled = false;
btn_disconnect.Enabled = true;
port.WriteLine("AT");
port.WriteLine("AT+CLIP=1");
port.WriteLine("AT+CMGF=1");
con_status.Text = "Connected at " + cboPortName.Text;
}
我在应用程序中提供的端口设置为:
port.PortName = cboPortName.Text;
port.BaudRate = Convert.ToInt32(this.cboBaudRate.Text); //9600
port.DataBits = Convert.ToInt32(this.cboDataBits.Text); //8
port.ReadTimeout = Convert.ToInt32(this.txtReadTimeOut.Text); //300
port.WriteTimeout = Convert.ToInt32(this.txtWriteTimeOut.Text); //300
port.StopBits = StopBits.One; //1
port.Parity = Parity.None; // None
port.Encoding = Encoding.GetEncoding("iso-8859-1");
port.Open();
port.DtrEnable = true;
port.RtsEnable = true;
解决方法:
要检查2件事,波特率和回声.
默认情况下,SerialPort类使用9600.
通常,调制解调器处于AutoBaud模式,当向其发送“ AT”命令时,它将根据COM端口链接的波特率进行调整.这不太可能,但是您的调制解调器可能正在固定的BaudRate上运行,并且无法调整…因此,请检查您在超级终端中使用的是哪个BaudRate,并使用相同的BaudRate.
回声-要查看命令已发送(并且调制解调器正在响应),我相信您需要在调制解调器中打开回声,即,无论您发送给调制解调器并接收到的任何字符都会被发送/回显给您.
(您也可以在超级终端中打开本地回显…但您不想要…您真的想知道调制解调器看到了您的角色)
如果无法使调制解调器回显发送的数据,则说明配置串行端口链接的方式存在问题(即使用错误的流控制握手/奇偶校验等,或未提高流控制状态)行).
假设您的调制解调器配置为使用RTS / CTS流控制,是否尝试过:
port.Handshake = HandShake.RequestToSend? (即硬件控制线流量控制).
因此,看起来该调制解调器的eeprom默认值是不回声(即有人更改了回声并执行了& W0),或者已配置了超级终端,以在打开端口时在调制解调器上将其关闭对它,即它有一个AT“ Initialization String”!).您应该检查该端口的初始化字符串是什么,并在使用SerialPort类时复制/使用它.
另一个最佳实践是在发出下一个AT命令之前等待响应代码-延迟是执行此操作的一种方法,但不是最佳实践,因为某些命令执行所花费的时间可能会有所不同….而某些调制解调器则不会就像在“忙”时收到另一个命令一样.
第一次尝试此命令:
> AT& FE1(重置为出厂设置并打开回显)(请注意,如果您刚刚打开调制解调器,则& F是不必要的,因为那时无论如何它应该都处于出厂设置. E1打开回声).
>等待OK响应代码如果使用超级终端,则只要您在命令中键入命令即可直观地等待响应代码返回(如果使用脚本发送命令则让脚本等待)或发送AT命令在代码中,您的代码将需要捕获响应并采取相应的措施.
>发出下一条命令(例如,您的AT CLIP = 1)
>等待OK,ERROR或命令特定的响应代码.注意:即使使用同一命令,不同的调制解调器也可能使用不同的响应代码.
>发出下一个命令,等等,等等
以下是一些可能方便使用的链接以供参考,例如show flavours或AT命令以及一些超级终端参考.
> http://www.hilgraeve.com/manuals/
> http://www.stanmex.com/documents/fm_software_docs/HowToConfigureGSMModemUsingHyperTerminal.pdf
> http://www.computerhope.com/atcom.htm
> http://www.howtofixcomputers.com/bb/ftopic78209.html
> http://www.multitech.net/developer/wp-content/uploads/2010/10/S000463C.pdf
> http://en.wikipedia.org/wiki/Motorola_phone_AT_commands
> http://www.dataip.co.uk/Reference/ATCommands.php
标签:at-command,modem,c 来源: https://codeday.me/bug/20191201/2077756.html