Prošel jsem si snad všechny zdejší příspěvky na téma komunikace přes sériový port, ale odpověď na řešení mého problému jsem nenašel. Takže, takto komunikuji a portem:
Private Sub SpojitMon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SpojitMon.Click
SerialPort3.PortName = PorMon.Text
SerialPort3.BaudRate = CInt(BauMon.Text)
SerialPort3.Parity = CInt(ParMon.Text)
SerialPort3.DataBits = CInt(DatMon.Text)
SerialPort3.StopBits = CInt(StoMon.Text)
SerialPort3.ReceivedBytesThreshold = 1
SerialPort3.Open()
End Sub
Private Sub SerialPort3_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort3.DataReceived
If Me.InvokeRequired() Then
Dim dr As New DataRecievedDelegate(AddressOf DataFromMontage)
Me.Invoke(dr, e, SerialPort3.ReadExisting())
Else
DataFromMontage(e, SerialPort3.ReadExisting())
End If
End Sub
Private Sub DataFromMontage(ByVal e As System.IO.Ports.SerialDataReceivedEventArgs, ByVal linka As String)
Dim data As String = linka
PokusLabel.Text = linka
End Sub
Private Sub Pokus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Pokus.Click
SerialPort3.Write(":CC#")
End Sub
Mělo by to fungovat tak, že po stisku tlačítka "Pokus", se přes port pošla do zařízení řetězec ":CC#", který řekne zařízení, že mi má poslat zpět desetiznakový řetězec, který se snažím zachytit přes "SerialPort3_DataReceived"... Ale, po prvním stisku tlačítka "Pokus" se (většinou) v "PokusLabel" objeví to, co má (10znaků), ale po dalších stiscích tohoto tlačítka se v labelu už neobjeví těch potřebných 10 znaků, ale třeba jen 4, 6, nebo ale třeba i jen jeden znak. Nemůžu přijít na to, co s tím. Pokud si do kódu vložím Breakpoint, třeba do "Sub Pokus_Click..." a pak po spuštění (F5), když se mi to zastaví na tom Breakpointu a já následně pokračuji pomocí stisků F8 a provádím jednotlivé kroky kódu, tak proměnná "linka" (nebo "data")a následně i "pokuslabel" VŽDY obsahuje to, co má- a to po každém stisku tlačítka "Pokus". Ale pokud to spustím bez toho Breakpointu, tak to dělá to, co jsem psal. V zařízení rozhodně problém není, protože jiná aplikace, dodaná k zařízení, zobrazuje přijímaná data správně... Máte někdo nápad, co s tím?
|