1. Pastikan Jumper Pada modul terpasang pada D0 untuk Tx dan D1 untuk Rx (berlawanan dengan Rx/Tx pada arduino board) agar komunikasi dapat terlaksana.
2. gunakan class serial communication utuk memanggil fungsi komunikasi dengan port UART pada Icomsat V1.1
3. Pastikan setting Port sebagai berikut
- Port name : "Com1" - Com1 pada arduino adalah D0 dan D1 (Rx/Tx)
- Baudrate : 9600 bps
- Parity : None
- databits : 8
- Stopbits : One
4. Penting buat kita Untuk memanggil event handler sebelum membuka jalur komunikasi (port.open), agar arduino siap mendengarkan string dari Icomsat.
5. Berikut Cuplikan Code nya:(dalam Vb.net Language)
Imports System Imports System.Text Imports System.Threading Imports System.IO.Ports Imports Microsoft.VisualBasic.Constants Imports Microsoft.SPOT Imports Microsoft.SPOT.Hardware Imports SecretLabs.NETMF.Hardware Imports SecretLabs.NETMF.Hardware.NetduinoPlus Namespace Uart Public Class Com_UART Private Shared GSM_UART As SerialPort Private Shared OnboardLed As OutputPort Private Shared DataIn As String Public Shared Sub Main() ' write your code here OnboardLed = New OutputPort(Pins.ONBOARD_LED, 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 Thread.Sleep(1000) Dim bytesTosend As Byte() = Encoding.UTF8.GetBytes("AT+CMGF=1" & vbCr) Debug.Print("Send port : AT+CMGF=1") GSM_UART.Write(bytesTosend, 0, bytesTosend.Length) Debug.Print("Port is writing...") Thread.Sleep(Timeout.Infinite) 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) DataIn += New String(Encoding.UTF8.GetChars(bufferData)) If DataIn.IndexOf(vbLf) >= 0 Then Debug.Print("Command: " & DataIn) DataIn = DataIn.Trim() ' Get rid of the line feed If DataIn <> "" Then OnboardLed.Write(state:=True) Debug.Print(DataIn) End If If DataIn = "" Then OnboardLed.Write(state:=False) Debug.Print("Command should be Cleared :" & DataIn) End If ' Clear the string for the next transmission DataIn="" End If End Sub End Class End Namespace
No comments:
Post a Comment