Gast
#2118896
Hallo,
wie kann ich in VisualBasic Express 2008 bei einer Sendekommunikation
über RS232 dafür sorgen, dass das erste Byte mit der Baudrate x und die
nachfolgenden mit der Baudrate y übertragen werden, ich möchte also bei
aufeinanderfolgenden Bytes direkt hintereinander die Baudrate ändern.
Bei meinen bisherigen Versuchen vergehen mindestens 20ms bis
umgeschaltet wird, manchmal gar nicht. Ich bekomme einfach kein halbwegs
zeitlich definiertes Verhalten hin. Es geht um die Nachbildung eines
LIN-Masters im PC zur Generierung des Sync-Breaks.
Hier mein Code:
Module Module1
Public mySerialPort As New System.IO.Ports.SerialPort
Public Sub CommPortSetup()
With mySerialPort
.PortName = "COM1"
.BaudRate = 6600
.DataBits = 8
.Parity = IO.Ports.Parity.None
.StopBits = 1
.Handshake = 0
End With
End Sub
Public Sub WriteSerialPort()
Dim DataOut(9) As Byte
mySerialPort.Open()
DataOut(0) = &H0
DataOut(1) = &H6
DataOut(2) = &HF4
DataOut(3) = &H1
DataOut(4) = &HFF
DataOut(5) = &HFF
DataOut(6) = &HFF
DataOut(7) = &HFF
DataOut(8) = &HFF
With mySerialPort
.DiscardOutBuffer()
.BaudRate = 6600
.Write(DataOut, 0, 1)
.DiscardOutBuffer()
.BaudRate = 9600
.Write(DataOut, 1, 8)
.DiscardOutBuffer()
.Close()
End With
End Sub
End Module
Mir ist klar dass ein PC kein Mikrocontroller ist mit dem man exakte
Zeitbedingungen schaffen kann. Aber bei diesen relativ langen Zeiten
müsste das doch gehen. Mit Timern habe ich auch schon experimentiert,
jedoch erfolglos. Danke für Tipps!
Gruss,
Armin