vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Array über Schleife füllen und dann per Serialport senden 
Autor: Preisser
Datum: 05.12.11 09:04

Hallo,

also, beim Senden von Daten werden immer Bytes gesendet (8 Bit, Wert von 0-255). Strings dagegen bestehen aus Unicode-Characters (16 Bit pro Zeichen), die unter Verwendung einer bestimmten Kodierung (z.B. ASCII, UTF-8, W-1252 usw.) in Bytes konvertiert werden können.
Der SerialPort verwendet beim Senden standardmäßig ASCII.

Soweit ich dich verstehe, hast du in einem String Bytewerte vorliegen, die als Hex-Zahlen dargestellt sind, und beim Senden sollen Bytes mit den dargestellten Werten gesendet werden.
Wenn du jedoch direkt den String mit SerialPort1.Write(...) sendest, wird der String unter Verwendung von ASCII in Bytes umgewandelt.
Bei deinem Beispielstring "01060003" bedeutet dies, dass das erste Zeichen, also "0", in ein Byte umgewandelt wird - aus einer ASCII-Tabelle kann man sehen, dass das Zeichen "0" durch ein Byte mit dem Hex-Wert 30 dargestellt wird; das Zeichen "1" durch den Wert 31, "6" durch den Wert 36 usw. Deshalb entsteht logischerweise die Bytefolge (Hex) 30, 31, 30, 36, ...

Da du anscheinend aber die Bytes senden willst, deren Werte als Hex-Zahlen im String dargestellt werden, müsstest du stattdessen die Zahlen im String als Hex-Zahl parsen, um sie zu versenden (z.B. per Convert.ToByte()).

            Dim byteBuffer As Byte() = New Byte(0) {} 'Buffer mit 1 Byte
            For x = 0 To Telegramm.Length \ 2 - 1
                byteBuffer(0) = Convert.ToByte(Telegramm.Substring(x * 2, 2), _
                  16)
                SerialPort1.Write(byteBuffer, 0, byteBuffer.Length)
            Next
Effizienter wäre es jedoch, die Daten gleich in einem Byte-Array zu haben (und dann z.B. dieses komplett zu versenden statt die einzelnen Bytes in einer Schleife), da man dann nicht extra die Strings als Zahlen parsen muss.

Beitrag wurde zuletzt am 05.12.11 um 09:25:03 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Array über Schleife füllen und dann per Serialport senden2.532M.Profitlich04.12.11 04:44
Re: Array über Schleife füllen und dann per Serialport sende...1.711ModeratorFZelle04.12.11 12:41
Re: Array über Schleife füllen und dann per Serialport sende...1.575M.Profitlich04.12.11 18:22
Re: Array über Schleife füllen und dann per Serialport sende...2.003Preisser05.12.11 09:04
Re: Array über Schleife füllen und dann per Serialport sende...1.599M.Profitlich05.12.11 22:05

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel