views:

781

answers:

4

Hello, 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.

+2  A: 

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.

samjudson
Good spot, WriteLine will automatically append the correct line terminator for the environment
ck
+1  A: 

I stumbled across Microsoft SMS Sender awhile ago and it may help you out. I never got around to using it though...

Austin Salonen
A: 

+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.

tonys
A: 

I have created my own solution in VB using some external service:

http://sarfraznawaz.wordpress.com/2010/03/15/send-sms-to-any-network-in-pakistan-for-free/

Sarfraz