04. september 2006 - 09:15Der er
6 kommentarer og 1 løsning
Sende og modtage SMS
Hejsa,
Jeg søger et par eksempler på hvordan man via VB.NET (eller bare alm. VB) kan sende og modtage SMS via et GSM/GPRS modem tilsluttet computerens COM port.
Som sagt - gerne nogle praktisk fungerende eksempler jeg kan arbejde videre med...
Du kan prøve at gøre dette for at prøve noget nyt.
Opret et nyt projekt og tilføj en "SerialPort" til dit projekt og kald den for "serial".
Under settings for din serial port kan du sætte din baudrate (sæt den evt. på 115200, som de fleste kan køre på). Databits og alt det andet du kan indsætte plejer der ikke at skulle rodes ved, men til gengæld skal du lige sætte PortName til din ports navn fx "COM7" eller "COM3" .. Jeg kører selv på COM3.
Prøv nu at opret en tekstboks i en rimelig god størrelse og kald den txtReceived og lav den til multiline = true og scrollbar = both.
Lav derefter to knapper, hvor den ene hedder btnOpen og den anden btnClose - med text sat til Open og Close for hver af dem (gæt selv hvilken der skal til hvilken). Når man trykker på btnOpen skal koden være:
--------------------
Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click Try serial.Open() Catch ex As Exception MsgBox("Fejl:" & vbCrLf & vbCrLf & ex.ToString) End Try End Sub
--------------------
og for btnClose skal den være:
--------------------
Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click Try serial.Close() Catch ex As Exception MsgBox("Fejl:" & vbCrLf & vbCrLf & ex.ToString) End Try End Sub
--------------------
Lav nu en tekstboks uden multiline og kald den txtSend og lav også en knap der hedder btnSend. BtnSend kan have teksten "send". Lav for knappen btnSend koden:
--------------------
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click Try serial.Write(txtSend.Text & vbCr) Catch ex As Exception MsgBox("Fejl:" & vbCrLf & vbCrLf & ex.ToString) End Try End Sub
--------------------
Når du sender er det en god idé at sende vbCr .. det vil din mobil sikkert gerne have :) (vil min i hvert fald).
Her er koden for din serial samt en funktion til opdatering af et tekstfelt som du bare skal indsætte i View-code vinduet:
--------------------
Private Sub serial_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles serial.DataReceived updaterecv(serial.ReadExisting.ToString) End Sub
Private Sub updaterecv(ByVal teksten As String) If (txtReceived.InvokeRequired = True) Then Dim d As New SetTextCallback(AddressOf updaterecv) Me.Invoke(d, New Object() {teksten}) Else txtReceived.Text = txtReceived.Text & teksten End If End Sub
--------------------
Og til sidst skal du også lige "declare" en enkelt variabel over alt andet kode (selvfølgelig stadig i dit projekt under din class men før dine subs).
--------------------
Delegate Sub SetTextCallback(ByVal teksten As String)
--------------------
Prøv nu at starte dit projekt og trykke på knappen OPEN og bagefter skriv "AT" uden " " i dit tekstsend-felt og tryk på knappen send.. Så skulle du gerne få noget tilbage som
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.