Probleme beim übertragen von HEX-Werten über MSComm (RS232)

  • VB6

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Modran.

    Probleme beim übertragen von HEX-Werten über MSComm (RS232)

    Moin Moin,

    Wenn ich einen HEX-Wert an einen anderen Rechner über die RS232 Schnittstelle sende passiert folgender Fehler:
    Manche HEX-Werte werden nicht korrekt übertragen, d.h. beim Empfänger kommt der HEX-Wert 3F an. Das ist komischerweise nur bei einigen Werten so. Das blöde ist, dass genau die Werte die ich brauche, um eine MAZ anzusteuern, nicht korrekt übertragen werden.
    Z.B.: hex01, hex 20, hex21.

    Kann mir jemand sagen woran das liegt?
    Hoffentlich kann mir jemand weiterhelfen, bin schon fast am verzweifeln !!!


    Hier der Quellcode:

    <pre>
    Private Sub cmdVerbinden_Click()

    MSComm1.CommPort = 1
    MSComm1.Settings = "38400,o,8,1"
    MSComm1.PortOpen = True

    End Sub

    Private Sub cmdPLAY_Click()

    MSComm1.Output = Chr$(&H20)

    End Sub
    </pre>

    Noch zur Info: Ich arbeite mit VisualBasic 6 (Prof. Edition)
    mit Windows 2000 SP4
    Bist du sicher, dass die Verwendung von Chr$ notwendig ist ?
    Du sendest ja so einen konvertierten ASCII Zeichensatz,
    probier einfach mal direkt 20, 21 zu senden.

    Edit: Möglicherweise musst du ja auch einfach ein
    Carriage Return und Line Feed anhängen (vbCrLf) ?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Unknown“ ()

    Hab das mal folgendermassen probiert:

    <pre>MSComm1.Output = 20</pre>

    Nimmt VB aber nicht an (Fehler 380, Ungültiger Eigenschaftswert).

    Wie kriege ich das hin, dass VB auch Byte-Werte direkt nimmt?

    Hab's auch schonmal mit einem Byte-Array probiert:

    <pre>
    Private Sub cmdPLAY_Click()

    Dim Buffer(3) As Byte

    Buffer(0) = 20
    MSComm1.Output = Buffer(0)


    End Sub
    </pre>

    Funktioniert aber auch nicht, gleiche Fehlermeldung wie oben.

    Aus der MSDN
    Anmerkungen

    Die Output-Eigenschaft kann Textdaten oder Binärdaten übertragen. Damit mit der Output-Eigenschaft Textdaten übertragen werden können, müssen Sie einen Wert vom Typ Variant angeben, der eine Zeichenfolge enthält. Damit Binärdaten übertragen werden können, müssen Sie einen Wert vom Typ Variant an die Output-Eigenschaft übergeben, in dem ein Byte-Datenfeld enthalten ist.


    Deshalb kann dein Versuch ein Byte-Array zu übergeben
    auch nicht funktionieren. Ob das allerdings dein Problem
    lösen wird, weiß ich nicht. Probier aber bitte mal ein
    vbCrLf hinter deinem Chr$(20) usw. zu senden,
    soweit ich weiß, besagt der RS232 Standard nämlich,
    dass dieses Abschlusszeichen enthalten sein muss.
    Ein Endzeichen wie vbCr oder vbCrLf ist in der RS23-Protokoll nicht zwingend erforderlich.
    Es kommt immer darauf an, mit was für einem Gerät man über die Schnittstelle kommuniziert, und welches Protokoll dieses Gerät vorsieht.

    Wenn beim Empfänger ein "&h3f" ankommt, obwohl Du ein "&h20" gesendet hast, dann stimmt irgendetwas in der Übertragung nicht, z.Bsp. könnte die eingestellte Baudrate oder die Parität nicht stimmen oder von dem Gerät nicht unterstützt werden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Modran“ ()