5

Windows アプリケーションで SMS を送信したい。コードを実行しましたが、エラーが発生しました。これは

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 であると確信していますか?

于 2009-05-28T11:44:17.293 に答える
1

しばらく前にMicrosoftSMSSenderに出くわしましたが、それが役立つかもしれません。私はそれを使用することはできませんでした...

于 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: タイマーの期限が切れました」が返されます。


おそらく、タイムアウト/接続の問題が発生している可能性があります。モデム/電話がサービスに正常に登録されていることを確認してください。つまり、AT+COPS への応答を確認してください。AT+CREG? コマンド。

于 2009-05-28T15:17:51.120 に答える