************GSM Module***********
Sub Process_Globals
Private serial As SoftwareSerial
Private bc As ByteConverter
Private astream As AsyncStreams
Private EOL() As Byte = Array As Byte(13, 10)
Private busy As Boolean
Private state As Int
Private ServerResponse As Boolean
End Sub
Public Sub Init(rx As Byte, tx As Byte)
serial.Initialize(9600, rx, tx)
astream.Initialize(serial.Stream, "astream_NewData", Null)
astream.WaitForMoreDataDelay = 100 'make sure that we receive full messages
busy = False
End Sub
Private Sub SendCommand (cmd() As Byte, ResponseExpected As Boolean) As Boolean
If busy Then Return False
busy = ResponseExpected
astream.Write(cmd).Write(EOL)
Return True
End Sub
Public Sub CheckRegistered
SendCommand("AT+CREG?", True)
End Sub
Private Sub CheckRegisteredResult (buffer() As Byte)
If bc.IndexOf(buffer, "+CREG: 0,1") > -1 Or bc.IndexOf(buffer, "+CREG: 0,5") > -1 Then
Log("Registered")
Else
Log("Not registered")
End If
End Sub
Public Sub Start
state = 1
ServerResponse = False
Connect
End Sub
Private Sub Connect
Log("Connect State: ", state)
Select state
Case 1
astream.Write("AT+CIPSHUT").Write(EOL)
Case 2
astream.Write("AT+CIPMUX=0").Write(EOL)
Case 3
astream.Write("AT+CSTT=""").Write(Main.APN).Write("""").Write(EOL)
Case 4
astream.Write("AT+CIPSTATUS").Write(EOL)
Case 5
astream.Write("AT+CIICR").Write(EOL)
Case 6
astream.Write("AT+CIPSTATUS").Write(EOL)
Case 7
astream.Write("AT+CIFSR").Write(EOL)
Case 8
astream.Write("AT+CIPSTATUS").Write(EOL)
Case 9
astream.Write("AT+CIPSTART=""TCP"",""").Write(Main.Host).Write(""",""80""").Write(EOL)
End Select
End Sub
Public Sub GetTemp(mytemp() As Byte) <<<<---I added This
GlobalStore.Put(0,mytemp)
End Sub
Private Sub AfterConnect
Log("Connected!!!")
astream.Write("AT+CIPSEND").Write(EOL)
End Sub
Private Sub ReadyToSend
Log("Sending data")
ServerResponse = True
astream.Write("POST ").Write(" HTTP/1.0").Write(EOL)
astream.Write("Host: ").Write(Main.Host).Write(EOL)
'astream.Write("Authorization: key=").Write(Main.API_KEY).Write(EOL)
astream.Write("Content-Type: application/json").Write(EOL)
astream.Write("Connection: close").Write(EOL)
astream.Write("Content-Length: ").Write(NumberFormat(GlobalStore.Slot0.Length, 0, 0)).Write(EOL)
astream.Write(EOL)
astream.Write(GlobalStore.Slot0)
astream.Write(Array As Byte(0x1a))
End Sub
Private Sub Error
Log("Error!")
End Sub
Sub AStream_NewData (Buffer() As Byte)
Log("****************")
Log(Buffer)
If ServerResponse Then Return
busy = False
Select True
Case bc.IndexOf(Buffer, "+CREG:") > -1
CheckRegisteredResult(Buffer)
Case bc.IndexOf(Buffer, "+CIFSR") > -1
Dim i As Int = -1
Dim count As Int = 0
i = bc.IndexOf(Buffer, ".")
Do While i > -1
count = count + 1
i = bc.IndexOf2(Buffer, ".", i + 1)
Loop
If count = 3 Then
state = state + 1
Connect
Else
Error
End If
Case bc.IndexOf(Buffer, "CONNECT OK") > -1
AfterConnect
Case bc.IndexOf(Buffer, ">") > -1
ReadyToSend
Case Else
If bc.IndexOf(Buffer, "OK") > -1 And state < 9 Then
state = state + 1
Connect
End If
End Select
End Sub