RS232 HEX oder Zahlen senden
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Zim.
-
-
Könnte vielleicht daran liegen, dass du das Zeichen "2" und nicht die Zahl 2 selbst übergeben hast.
Es sieht so aus, als erwartet die Funktion einen Char. "2" als Char bedeutet 0x32 als Hexzahl und 50 als Dezimalzahl.
Versuchs mal so:
RS232Port.Write(Chr(2))
lg SeriTools -
-
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Also das mit den max 127 ist mit den Encoding weg.
Nun nimmt das gerät welches ich damit ansprechen will das gesendete aber nicht immer an
Kann es am Timing liegen ?
"Gestartet wird eine Mitteilung mit einer Pause von min. 3,5 Charakter Times. Dies entspricht einer
Zeit von ca. 4ms."
Wird in der Beschreibung von dem Gerät genannt. Kann damit einer was anfangen ? -
Sendest Du Bytes (8 Bit) oder Char (16 Bit)?
Das könnte ein Problem werden, weil Du das Timing des Sendens nicht explizit in der Hand hast.
Also füge beim Senden nach jedem Zeichen eine Pause ein: Sleap(5) oder so.Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
Du musst jede Variable explizit deklarieren,
Du musst jede Typkonvertierung explizit durchführen.
D.h., Du weißt, ob Du 8- oder 16-Bit-Zeichen sendest.
Das System macht auch alles implizit, aber das ist kein Stil, das ist Scheiße.Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
Ich sehe bei SerialPort folgende Write-Operationen:
Write(Byte(), int, int) - Byte-Array, Startindex, Anzahl (8 Bit)
Write(Char(), int, int) - Char-Array, Startindex, Anzahl (16 Bit)
Write(String) - (16 Bit)
Probiere mal folgendes, hatten wir oben schon mal:
Das schreibt sauber 8 Bit und sollte eigentlich funktionieren.Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
ich hab das die ganze zeit nicht verstanden ...
Okey ähm machen wirs anders
Hier der Code:
VB.NET-Quellcode
- Sub test()
- Dim Msg(8) As Byte
- Dim sendCHR As Byte
- Msg(0) = 25
- Msg(1) = 16
- Msg(2) = 0
- Msg(3) = 19
- Msg(4) = 0
- Msg(5) = 1
- Msg(6) = 2
- Msg(7) = 0
- Msg(8) = 10
- Dim temp As String = Crc_(Msg, 8)
- Dim sendCRC1 As Byte = CByte(CInt("&H" & VB.Left(temp, 2)))
- Dim sendCRC2 As Byte = CByte(CInt("&H" & VB.Right(temp, 2)))
- For j = 0 To 8 'Befehl Senden an MFC
- sendCHR = Msg(j)
- RS232Port.Write(Chr(sendCHR))
- Next (j)
- RS232Port.Write(Chr(sendCRC1))
- RS232Port.Write(Chr(sendCRC2))
- End Sub
Sooo .. Die Werte aus dem Array müssen gesendet werden und dann noch die CRC Werte die bekomme ich aus einer anderen Funktion.
Im Momment muss ich das in der Regel 2 mal senden, teilweise aber auch öffter damit das Gerät es akzeptiert.
Wie würde ich das nun machen müssen wenn ich das mit dem Write Byte befehl senden will ?Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Zim“ ()
-
-
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
Tags
-
Ähnliche Themen
-
lorenzo - - Sonstige Problemstellungen
-
3 Benutzer haben hier geschrieben
- Gast (9)
- RodFromGermany (6)
- SeriTools (1)