Binäres senden auf dem COM-Port

Hallo, Leute!

Ich habe hier ein Problem, das ich seit 2 Tagen zu lösen versuche…

Mein PC soll über den COM-Port (19200,8,n,1) Kontakt zu einem anderen Rechner aufnehmen (Maschinensteuerung). - Eine Anweisung umfasst immer 14 Byte, die von dem anderen Rechner binär erwartet werden.
01 04 03 01 01 00 00 00 00 00 00 00 00 0A soll als Beispiel für einen gültigen Befehl dienen.

Das Grundproblem stellt sich mir so dar:
VB sendet immer im Textmodus.
Der o.a. Befehl wurde übertragen als: h30 h31 h30 h34 usw., also der hex-wert der ANSII-Zeichen (und in der Summe logischerweise 28 statt 14 Byte).

Daraufhin habe ich es so probiert:

strBefehl=“010403010100000000000000000A“
strSendung=““
For i = 1 to len(strBefehl) Step 2
Dummy=Cint(Mid(strBefehl,i,2))
strSendung = strSendung & chr(Dummy)
Next i

…und hatte, wie ich es schon befürchtet hatte, das Problem mit h00, wo kein Zeichen gesendet wurde.

Mit „MSComm1.InputMode = comInputModeBinary“ kann ich zwar den Eingang manipulieren, ich habe aber nichts vergleichbares für den Ausgang gefunden :frowning:.

Umgebung: VB6SP5
OS…: NT4SP6

Wer hat eine Idee???

TIA und Grüße, Michael

hallo michael,

also imho muss man angeben können, wie die zeichen gesendet werden

z.b. mit „befehl(parameter, vbtext)“

ansonsten würde ich an deiner stelle mal in den google-groups danach googeln…

gruß

rasta

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Leut und Leute,

Um auf dem Com-Port rauszuschreiben benutze ich
Form1.MSComm2.Output = „0“
Form1.MSComm2.Output = Chr$(4)
für ein 0x30 und ein 0x04 auszugeben.
Aufgrund schlechtem Gedächtnis wußte ich es nicht mehr auswendig, hatte aber das Gefühl, sowas ähnliches schonmal gelöst zu haben, und im PC suchts sich halt leichter als im eigenen Graumatsch.
Hoffe, das hilft weiter.

Gruß,

Uwe P.

P.S. Binär sendet wie Text, m.W. ist der Unterschied nur beim carridge return / line feed erheblich.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo, Hick, Rasta und Du, der dies liest, seit gegrüßt.

Mein Lösungsansatz war, wie sich eben harusstellte, korrekt.

Für den Befehl h81 sende ich den Character d129 oder allgemeiner: den entsprechenden Character zum Hexwert .
Wenn die Anweisung h00 gefunden wird, brauche ich *nur* „VBNullChar“ zu senden (da lag ja des Hundes Kern begraben).

Ich komme grade von der Maschine, wo ich das ausprobiert hatte… (und wurde warscheinlich für verrückt erklärt, als ich anfing rümzuhüpfen als oben rechts im Magazin eine kleine rote Lampe durch meinen Knopfdruck (touchscreen) an und ausging, aber diese kleine Lampe diente eben nur als Referenz ob es funzt oder nicht)

Ein kleiner Schritt für diese Firma, ein großer Schritt für einen Praktikanten :smiley:

@Rasta: Eine Umschaltung scheint nicht möglich; aber danke für den Googlegroups-Tip! - DAS habe ich in dem Stress völlig vergessen.

Grüße, Michael

P.S.
Ich werde später ein wenig Code dazu posten, da ich denke das dieses vielleicht für den/die eine(n) oder andere(n) interessant sein könnte.