5

我想通过 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

在此先感谢您的帮助。

4

3 回答 3

2

我根本没有编写 SMS 的经验,但您似乎正在调用 serialPort.WriteLine 以及在行尾附加 vbCrLf。

其次,你确定它是你想要的 vbCrLf - 我看到的一些东西只是指'回车' - 这将是 vbCr。

于 2009-05-28T11:44:17.293 回答
1

不久前我偶然发现了Microsoft SMS Sender,它可能会对您有所帮助。虽然我从来没有使用过它......

于 2009-05-28T14:03:02.740 回答
0

+CMS ERROR 500(通常)扩展为“未知错误”。来自 GSM 调制解调器 AT 命令文档:


如果发送失败,例如消息过长,结果码取决于 AT^SM20 命令的当前设置:

如果 AT^SM20 等于 1(出厂默认值),任何发送消息的失败都会以“OK”响应。用户应该知道,尽管“OK”响应,消息不会被发送给订阅者。

如果 AT^SM20 等于 0,则任何发送消息的失败都会以“ERROR”响应。• 如果超时发送失败,则AT^SM20 =1 导致返回“+CMS ERROR: Unknown error”;
AT^SM20 =0 导致返回“+CMS ERROR: timer expired”。


您可能遇到超时/连接问题。也许检查您的调制解调器/电话是否已成功注册服务,即检查对 AT+COPS 的响应?和 AT+CREG?命令。

于 2009-05-28T15:17:51.120 回答