Okej saken ska undersökas
men nu har jag ett lite jobbigare problem
programmet jag håller på med skickar ett kommando till en modul via en usb port, eller virituell com port.
jag kan skicka och ta emot data utan problem men jag skulle vilja göra det i bakrunden.
dvs jag vill skicka ett spec. kommando vänta på svar, när man har fått svar skicka ett nytt och vänta på svar.. om och om igen..
men det skulle behövas göras i bakrunden så jag kan behandla svaren under tiden och så att användaren kan peta på GUI'n tex trycka på cancel osv.. det finns några fina exempelprogram i msdn men ja lyckas inte få det att fungera med comprten :/
här är en bit av koden:
Dim comPorts As Array 'Com ports enumerated into here
Public rxBuff As String 'Buffer for receievd data
Dim connected As Integer = 0
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 port is closed, then open it
'If SerialPort1.IsOpen = False Then
'===============================================
If SendCommand("AT+GMM", 0) = "UC864-E" Then
MsgBox("Connection made" )
connected = 1
Exit For
End If
'SerialPort1.Close()
Next
If connected = 0 Then
MsgBox("No connection made")
End If
End Sub
If SendCommand("AT+GMM", 0) = "UC864-E" Then
Är för att den ska välja ut rätt port, AT+GMM ger svar UC864-E om det är rätt modul ansluten
Public Function SendCommand(ByVal command As String, ByVal mode As Integer)
'Clear buffer
rxBuff = ""
''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 25ms
System.Threading.Thread.Sleep(20)
'If the port is open, then close it
'If SerialPort1.IsOpen = True Then SerialPort1.Close()
'If the buffer is still empty then no data.
If rxBuff = "" Then
Return "No Response"
Else
MsgBox(rxBuff)
Return rxBuff
End If
End Function
Kan man på nått sätt köra SendCommand via en tråd? jag lyckas inte iallafall