Hallo, ich ( Anfänger) habe eine Frage: Ich möchte Daten von der Com-Schnittstelle zu einem µ-Controller verschicken. Allerdings sollen keine Strings verschickt werden, sondern die Telegramme sollen binär aufgebaut sein, z.b. Byte-Arrays. Z.B. Dim i as Variant i = 500 MSComm1.Output = i Es sollte eigentlich prinzipiell möglich sein, denn in der Hilfe unter "output property" steht, wenn kein String verschickt werden soll, muß in der Variant Variable einfach nur ein Byte-Array enthalten sein. Wenn ich obiges Programm ausführe, kommt die Fehlermeldung "ungültiger Eigenschaftswert". Hat jemand eine Lösung?? Ich verzweifle schon... Vielen Dank
>Variant Variable einfach nur ein Byte-Array enthalten sein.
ein BYTE ARRAY
in ein Byte passt nunmal nicht der Wert 500 !!!
Ok, ich geb zu schlechtes Beispiel. Der Wert 5 passt leider auch nicht, auch nicht wenn ich ihn direkt zuweise.
Hallo Helmut, in der Hilfe steht doch, das entweder ein String oder ein Bytearray übergeben werden kann. das Literal 5 oder 500 oder wie auch immer ist aber weder ein String noch ein Bytearray!. Ich mache immer alles mit Strings (auch binärdaten), das geht am einfachsten. Also: MSComm1.Output = chr(5) sendet ein Byte mit dem Inhalt 5. MSComm1.Output = "5" sendet ein Byte mit dem Inhalt Asc(5) = 53 ! Ich würde aber vorher noch die Eigenschaft InputMode auf Binär setzen: MSComm1.InputMode = comInputModeBinary Gruß, Jan
Vielen Dank für die Antwort, klappt. Dieses Forum ist wirklich das schnellste und beste!! Habe aber noch weitere Fragen. Angenommen ich hätte eine Byte-Array ( Dim feld(50) as Byte ) und möchte es "binär" verschicken. Dann müßte ich wahrscheinlich in einer for-Schleife jedes Feld einzeln casten und verschicken, richtig? Also etwas umständlich... Aber eine String ist doch letztendlich auch nur ein Array aus Bytes (pro Zeichen ein Byte), wieso kann ich dann nicht einfach sagen MSComm.Output = feld ?! Ich dachte bisher immer dass die Daten besser binär verschickt werden sollten. Lasse mich aber gerne eines besseren belehren...
Also erstmal hat String oder Array nichts mit binär oder nicht binär zu tun. Du kannst genauso einen binären String wie ein "nicht binräres" byte-Array erstellen. Binärer String: chr(0) & chr(1) & chr(2) & chr(3) Dein Byte-Array: Dim feld(50) as Byte kannst du natürlich direkt an die Output-Eigenschaft des COMM-Steuerelementes zuweisen. Dann werden alle 51 Bytes (0..50) gesendet. Alternativ könntest du aber auch einen 51 Zeichen langen String erstellen und zuweisen. Folgende Beispiele machen genau dasselbe: 1) Dim lsBinStr as String, i as Integer For i = 0 to 50 lsBinStr = lsBinStr & chr(i) Next i MSComm1.Output = lsBinStr 2) Dim lyBinArray(50) as Byte, i as Integer For i = 0 to 50 lyBinArray(i) = i Next i MSComm1.Output = lyBinArray Beide Beispiele senden 51 Bytes, jeweils die Zahlen von 0 bis 50. Gruß, Jan
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.