在c#.net中通过DWM-156发送短消息的AT命令

在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(); 
     } 
+0

相反 “\ 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

+0

可能需要检查调制解调器的响应,并检查RTS线是否已置位(可能是调制解调器上的LED)。 – PaulF

发送消息后,就把3秒延迟下一条消息发送之前。

this.serialPort.Write("AT+CMGS=\"" + CellNumber + "\"\r\n"); 
this.serialPort.Write(SMSMessage + "\x1A"); 
Thread.Sleep(3000); 

,并保持该消息长度< 150个字符