Hallo zusammen,
ich möchte mein Handy (Samsung Star) per Serialport ansteuern, um SMS zu versenden und zu empfangen. Leider scheitere ich schon an der Verbindung zum Handy. In Putty kann ich eingeben, verbinde zu COM4, dann habe ich ne Konsole und kann Befehle wie "at" eingeben und bekomme Antwort vom Handy.
In VB klappt das aber nicht.
Quellcode
Nach dem
Warum? Wie komme ich an die Daten hinter dem Serialport?
leseratte
ich möchte mein Handy (Samsung Star) per Serialport ansteuern, um SMS zu versenden und zu empfangen. Leider scheitere ich schon an der Verbindung zum Handy. In Putty kann ich eingeben, verbinde zu COM4, dann habe ich ne Konsole und kann Befehle wie "at" eingeben und bekomme Antwort vom Handy.
In VB klappt das aber nicht.
VB.NET-Quellcode
- Imports System.IO.Ports
- Public Class Form1
- Public cmd As String = ""
- Public pin As String = "2508"
- Public t As Threading.Thread
- Public u As Threading.Thread
- Public WithEvents sp As SerialPort
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Dim minutesS As String = InputBox("Zeitspanne in Minuten, 0 für einmalig")
- If minutesS = Nothing Then Exit Sub
- Dim minutes As Integer = CInt(minutesS)
- cmd = pin & " " & "LOCATE"
- If minutes <> 0 Then
- cmd = cmd & " " & minutes.ToString()
- End If
- SendCmdToPhone(cmd)
- End Sub
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- sp = New SerialPort("COM4", 9600)
- Try
- sp.Close()
- Catch ex As Exception
- End Try
- sp.Open()
- t = New Threading.Thread(AddressOf checkSMS)
- t.Start()
- u = New Threading.Thread(AddressOf checkPortConnection)
- u.Start()
- End Sub
- Private Sub checkSMS()
- ' Do
- ' sp.
- '
- ' Loop
- End Sub
- Private Sub checkPortConnection()
- Do
- If Not sp.IsOpen Then
- MsgBox("not open")
- sp.Open()
- Else
- sp.WriteLine("at")
- Dim x As String = sp.ReadLine()
- If Not x.Trim.ToLower.Contains("ok") Then
- sp.Close()
- sp.Open()
- MsgBox("not connected, but open")
- Else
- MsgBox("working")
- End If
- End If
- System.Threading.Thread.Sleep(120000)
- Loop
- End Sub
- Private Sub checkPortConnectionOnce()
- If Not sp.IsOpen Then
- MsgBox("not open")
- sp.Open()
- Else
- sp.Write("at" & Environment.NewLine)
- End If
- End Sub
- Private Function SendCmdToPhone(ByVal cmd As String) As Boolean
- End Function
- Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
- checkPortConnectionOnce()
- End Sub
- Private Sub sp_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles sp.DataReceived
- MsgBox(sp.ReadExisting)
- End Sub
- End Class
Nach dem
sp.write("at" & Environment.NewLine)
kommt einfach nix mehr, das Programm steht. Obwohl ich mit Putty ein "ok" bekomme.Warum? Wie komme ich an die Daten hinter dem Serialport?
leseratte
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Leseratte“ ()