Trådad kommunikation med comport VB

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2009

Trådad kommunikation med comport VB

Jag har ett program som pratar med en enhet via en usb kabel, koden jag har nu fungerar bra men jag skulle vilja att den kör:

SendCommand och kan läsa in svaret samt lopar det om och om igen.

men vad jag än provar så får jag det inte att fungera :/
har testat en backgroundWorker men det fick jag inte att fungera, är ny när det gäller både VB och trådning

sen har jag provat att bara skapa en ny tråd men det har inte heller fungerat riktigt :/

aldra hälst skulle jag vilja he en egen typ module? där allt som har med att upprätta en förbindelse och sända/ta emot data ligger men när jag försöker det så vill den inte riktigt heller...

nån som har något förslag eller en gammal kod snutt som gör ungefär samma sak?

här är min kod i som just nu ligger i Form1
den fungerar men går inte att köra parallelt med andra saker:

Public Class Form1 Dim comPorts As Array Dim rxBuff As String 'Buffer for receievd data Dim connected As Integer = 0 Dim scan As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim gogo As Thread = New Thread(AddressOf port.main) End Sub Public Sub Connect() comPorts = IO.Ports.SerialPort.GetPortNames() 'Set remaining port attributes SerialPort1.BaudRate = 19200 SerialPort1.Parity = IO.Ports.Parity.None SerialPort1.StopBits = IO.Ports.StopBits.One SerialPort1.DataBits = 8 For i As Integer = 0 To UBound(comPorts) '======================================================= SerialPort1.Close() SerialPort1.PortName = comPorts(i) SerialPort1.Open() '======================================================= If SendCommand("AT+GMM", 0) = "UC864-E" Then MsgBox("Connection made" & vbLf & "On Port: " & SerialPort1.PortName) connected = 1 Exit For End If 'SerialPort1.Close() Next If connected = 0 Then MsgBox("No connection made") End If End Sub Public Function SendCommand(ByVal command As String, ByVal mode As Integer) ''Clear buffer rxBuff = "" ''If port is closed, then open it ''If SerialPort1.IsOpen = False Then SerialPort1.Open() ''Write this data to port If SerialPort1.IsOpen = True Then SerialPort1.Write(command & vbCr) Else MsgBox("No connection to the device") End If ''Pause for 100ms System.Threading.Thread.Sleep(100) 'If the buffer is still empty then no data. End sub If rxBuff = "" Then Return "No Response" ElseIf mode = 0 Then Return myFunctions.extract(rxBuff) Else Return rxBuff End If End Function Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived 'This sub gets called automatically when the com port recieves some data 'Pause while all data is read System.Threading.Thread.Sleep(20) 'Move recieved data into the buffer rxBuff = rxBuff + (SerialPort1.ReadExisting) End Sub End Class

tack på förhand