Reputation: 7927
I want to send SMS by windows application. I ran the code but I got an error. This is
AT
OK AT+CMGF=1
OK AT+CSCA="+9460921985"
OK AT+CMGS="+9660775564"
this is new message
+CMS ERROR: 500
I am using this code.
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
Thanks in advance for your help.
Upvotes: 5
Views: 4556
Reputation: 3984
+CMS ERROR 500 is (normally) expanded as an "Unknown Error". From the GSM modem AT command documentation:
If sending fails, for example, if a message is too long, the result code depends on the current setting of the AT^SM20 command:
If the AT^SM20 equals 1 (factory default) any failure to send a message is responded with "OK". Users should be aware, that despite the "OK" response, the message will not be sent to the subscriber.
If the AT^SM20 equals 0 any failure to send a message is responded with "ERROR". • If sending fails due to timeout, then AT^SM20 =1 causes "+CMS ERROR: Unknown error" to be returned;
AT^SM20 =0 causes "+CMS ERROR: timer expired" to be returned.
Possibly you might be having timeout/connection problems. Maybe check that your modem/phone has registered successfully with the service i.e. check the response to the AT+COPS? and AT+CREG? commands.
Upvotes: 0
Reputation: 50245
I stumbled across Microsoft SMS Sender awhile ago and it may help you out. I never got around to using it though...
Upvotes: 1
Reputation: 56903
I have no experience of writing SMS at all, but you appear to be calling serialPort.WriteLine as well as appending vbCrLf on the end of the line.
Secondly, are you sure it is vbCrLf you want - some things I have seen simply refer to 'Carriage return' - which would be vbCr.
Upvotes: 2