Forum: PC-Programmierung COM-Port Bitreihenfolge tauschen in VB2008 Express


von ArminD (Gast)


Lesenswert?

Hallo,

ich verwende in VB2008Express zum Schreiben auf den COM-Port folgende 
Initialisierung:

My.Computer.Ports.OpenSerialPort("COM1", 9600, IO.Ports.Parity.None, 8, 
1)

Das Schreiben auf meine externe Hardware klappt soweit ganz gut, nur 
wird das MSB zuerst gesendet. Ich habe nirgendwo gefunden wie und wo ich 
das umkonfigurieren kann, so dass das LSB meines zu sendenden 
Datenwortes zuerst kommt. Es ist mir durchaus klar, dass ich das vorher 
selbst drehen kann. Nur gibt es doch sicher eine elegantere Methode. 
Vielen Dank für Hinweise.

Gruss,
Armin

von Peter (Gast)


Lesenswert?

ArminD schrieb:
> Nur gibt es doch sicher eine elegantere Methode.

nein gibt es nicht (oder ich habe auch noch nie etwas davon gehört)

von ArminD (Gast)


Lesenswert?

Danke, dann muss ich auch nicht weiter suchen.

Gruss,
Armin

von JensM (Gast)


Lesenswert?

Hallo Armin,

nach EIA-232 (RS-232) wird das LSB zuerst gesendet.
Ich glaube nicht, dass dein Rechner das MSB zuerst sendet.
Das Problem liegt sicher wo anders.

Oder sprichst du von Bytes?

Intel x86 Architektur verarbeitet natürlich das niederwertige Byte 
zuerst.
Das liegt an der Architektur des Rechners. Am besten die Bytes einzeln 
lossenden oder ein Bytearray übergeben in dem die Bytes in der richtigen 
Reihenfolge liegen.

Gruss JensM

von ArminD (Gast)


Lesenswert?

Hallo Jens,

sorry, da habe ich mich dumm ausgedrückt, mit MSB meinte ich das Bit. 
Ich sende nur vereinzelte Bytes und da wird eben das höchstwertige Bit 
zuerst gesendet und diese Reihenfolge hätte ich gerne durch eine 
Umkonfiguration eleganter geändert, da ich auf eine Änderung des 
angeschlossenen Gerätes keinen Einfluss habe.

Gruss,
Armin

von Peter (Gast)


Lesenswert?

welchens System braucht denn die Bits andersrum?

von Justus S. (jussa)


Lesenswert?

Peter schrieb:
> welchens System braucht denn die Bits andersrum?

so wie es aussieht braucht sein System die Bits doch "richtigrum" nach 
Standard, also LSB zuerst...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

ArminD schrieb:
> Ich sende nur vereinzelte Bytes und da wird eben das höchstwertige Bit
> zuerst gesendet

Es ist mit ziemlicher Wahrscheinlichkeit auszuschließen, daß das so ist. 
Da geht entweder mit Deiner Messtechnik, Deiner Hardware oder Deiner 
Diagnose irgendwas schief; die normale PC-Hardware-UART kann die Daten 
nur in einer standardisierten Reihenfolge versenden, und bei der wird 
immer das niederwertigste Bit (also Bit 0) als erstes übertragen.

Könnte es sein, daß Du für Deinen µC statt eines korrekten 
RS232-Pegelwandlers irgendeine selbstgefrickelte Lösung verwendest, die 
nicht invertiert?

von ArminD (Gast)


Lesenswert?

Hi zusammen,

danke für die Hilfe. Der PC sendet LSBit zuerst. Das war eine 
fehlinterpretation meinerseits, zu blöd zum Bitzählen. An der 
MCU-Hardware habe ich nicht gemessen, die ist zu und gehört mir nicht. 
Also habe ich am seriellen Kabel gemessen und Ruhepegel und somit 
Start/Stop falsch gesehen.
Sorry for inconvenience.

Danke und Gruss,
Armin

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.