如何通过Windows应用程序发送短信

时间:2009-05-28 11:33:39

标签: .net vb.net sms serial-port

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

提前感谢您的帮助。

3 个答案:

答案 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?命令。