在c#.net中通过DWM-156发送短消息的AT命令
问题描述:
当我第一次发送短消息它发送成功但当我按下按钮第二次它不发送消息我混淆了串口打开或关闭或AT命令在哪里正常工作在c#.net中通过DWM-156发送短消息的AT命令
遗憾的英语不好
这里是我的全部代码
SerialPort serialPort = new SerialPort();
private void Form1_Load(object sender, EventArgs e)
{
this.serialPort = new SerialPort();
this.serialPort.PortName = "COM6";
this.serialPort.BaudRate = 921600;
this.serialPort.Parity = Parity.None;
this.serialPort.DataBits = 8;
this.serialPort.StopBits = StopBits.One;
serialPort.WriteBufferSize = 300;
this.serialPort.Handshake = Handshake.RequestToSend;
this.serialPort.DtrEnable = true;
this.serialPort.RtsEnable = true;
serialPort.Open();
}
public bool send_sms()
{
String SMSMessage = txtmsg.Text;
String CellNumber = cellNum.Text;
String messageToSend = null;
if (SMSMessage.Length <= 160)
{
messageToSend = SMSMessage;
}
else
{
messageToSend = SMSMessage.Substring(0, 160);
}
if (serialPort.IsOpen)
{
this.serialPort.Write("AT\r");
Thread.Sleep(1000);
this.serialPort.Write("AT+CMGF=1\r");
Thread.Sleep(1000);
this.serialPort.Write("AT+CMGS=\"" + CellNumber + "\"\r\n");
Thread.Sleep(1000);
this.serialPort.Write(SMSMessage + "\x1A");
return true;
}
return false;
}
private void sendbtn_Click(object sender, EventArgs e)
{
send_sms();
}
答
发送消息后,就把3秒延迟下一条消息发送之前。
this.serialPort.Write("AT+CMGS=\"" + CellNumber + "\"\r\n");
this.serialPort.Write(SMSMessage + "\x1A");
Thread.Sleep(3000);
,并保持该消息长度< 150个字符
相反 “\ X1A” 的尝试使用(炭)26:https://social.msdn.microsoft.com/Forums/vstudio/en-US/2c3947e6-cc03-4822-a70e-3cba86747ced/how-to-send-ctrlz-through-serial-in-c-?forum = csharpgeneral&https://*.com/questions/7188566/sending-ctrlz-to- a-serial-port – PaulF
可能需要检查调制解调器的响应,并检查RTS线是否已置位(可能是调制解调器上的LED)。 – PaulF