Hi Guys
lately I'm try to send SMS via GSMshield (using UART port Com1), but I dont know why it always return error as result (the SMS never sent). Can anybody help me to find the way out...
Public Class GSM_UART_serial Private Shared GSM_UART As SerialPort Private Shared Respons As String Private Shared bytesTosend As Byte() Private Shared SendingSMS As Boolean Public Shared Sub Main() OnboardLed = New OutputPort(Pins.ONBOARD_LED, False) D9 = New OutputPort(Pins.GPIO_PIN_D9, False) SendingSMS = False D9.Write(True) Thread.Sleep(500) D9.Write(False) GSM_UART = New SerialPort("COM1", 9600, Parity.None, 8, StopBits.One) AddHandler GSM_UART.DataReceived, New SerialDataReceivedEventHandler(AddressOf RecieveData) If GSM_UART.IsOpen = False Then GSM_UART.Open() Debug.Print("Port Opening" & " : at baudRate= " & GSM_UART.BaudRate) Else Debug.Print("Port is ready...") End If SendingSMS = True While SendingSMS = True Thread.Sleep(250) GSM_UART_dataWrite("AT+CMGF=1" & vbCr) Thread.Sleep(250) GSM_UART_dataWrite("ATE" & vbCr) Thread.Sleep(250) GSM_UART_dataWrite("AT+CMGS=") Thread.Sleep(250) GSM_UART.WriteByte(34) GSM_UART_dataWrite("085218877358") GSM_UART.WriteByte(34) GSM_UART_dataWrite("" & vbCr) Thread.Sleep(250) GSM_UART_dataWrite("Body Massage being so good" & vbCr) Thread.Sleep(250) GSM_UART_dataWrite("x1A" & vbCr) Thread.Sleep(1000) SendingSMS = False End While Debug.Print(Respons & "?") Thread.Sleep(Timeout.Infinite) End Sub Private Shared Sub GSM_UART_dataWrite(ByVal Command As String) bytesTosend = Encoding.UTF8.GetBytes(Command) Debug.Print("Send port : " & Command) GSM_UART.Write(bytesTosend, 0, bytesTosend.Length) Debug.Print("Port is writing...") End Sub Private Shared Sub RecieveData(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Dim Length As Integer = GSM_UART.BytesToRead Dim bufferData As Byte() = New Byte(Length - 1) {} GSM_UART.Read(bufferData, 0, Length) Respons += New String(Encoding.UTF8.GetChars(bufferData)) If Respons.IndexOf(vbLf) >= 0 Then Respons = Respons.Trim() If Respons <> "" Then OnboardLed.Write(state:=True) Debug.Print(Respons) End If Respons = "" If Respons = "" Then OnboardLed.Write(state:=False) Debug.Print(Respons) End If End If End Subend class
very appreciate for your help
Best Regards