我想通过Windows应用程序发送短信。我运行了代码但是我收到了一个错误。这是
AT
OK AT+CMGF=1
OK AT+CSCA="+9460921985"
OK AT+CMGS="+9660775564"
this is new message
+CMS ERROR: 500
我正在使用此代码。
Public Class Form2
Dim number As String = "+9660775564"
''# Dim message As String = TextBox1.Text
Dim serialport As New IO.Ports.SerialPort
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try With serialport
.PortName = "COM5" ''# "COM24"
.BaudRate = "9600"
.Parity = IO.Ports.Parity.None
.DataBits = 8
.StopBits = IO.Ports.StopBits.One
.Handshake = IO.Ports.Handshake.RequestToSend
.DtrEnable = True .RtsEnable = True
End With
serialport.Open()
''# checks phone status
serialport.WriteLine("AT" & vbCrLf)
''# Configures message as SMS
serialport.WriteLine("AT+CMGF=1" & vbCrLf)
''# Sets message center number
''# serialport.WriteLine("AT+CSCA=""+447785016005""" & vbCrLf)
serialport.WriteLine("AT+CSCA=""+9460921985""" & vbCrLf)
''# Sets destination number
serialport.WriteLine("AT+CMGS=""" & number & """" & vbCrLf)
''# Specifies message and sends Ctrl+z
serialport.WriteLine(TextBox1.Text & Chr(26))
''# Displays buffer containing output messages
System.Threading.Thread.Sleep(2000) ''# CurrentThread.Sleep(2000)
MsgBox(serialport.ReadExisting)
serialport.Close()
MessageBox.Show("OK")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
提前感谢您的帮助。
答案 0 :(得分:2)
我根本没有编写短信的经验,但你似乎在调用serialPort.WriteLine以及在行尾添加vbCrLf。
其次,你确定它是你想要的vbCrLf - 我看到的一些东西只是提到'回车' - 这将是vbCr。
答案 1 :(得分:1)
我偶然发现了Microsoft SMS Sender,它可能会帮助你。我从来没有使用过它......
答案 2 :(得分:0)
+ CMS ERROR 500(通常)扩展为“未知错误”。从GSM调制解调器AT命令文档:
如果发送失败,例如,如果a 消息太长,结果代码 取决于当前的设置 AT ^ SM20命令:
如果AT ^ SM20等于1 (出厂默认值)任何发送失败 消息以“OK”响应。 用户应该意识到,尽管如此 消息将“OK”响应 不会发送给订阅者。
如果AT ^ SM20等于0 无法发送消息已得到响应 与“错误”。 •如果发送失败 超时,然后AT ^ SM20 = 1导致“+ CMS错误: 未知错误“要返回;
AT ^ SM20 = 0导致“+ CMS 错误:计时器已过期“将被退回。
可能您可能遇到超时/连接问题。也许检查您的调制解调器/手机是否已成功注册该服务,即检查对AT + COPS的响应?和AT + CREG?命令。