Unterschied zwischen ComWrite und MSComm.Output

Hallo

Ich habe ein Problem beim Daten senden über die serielle Schnittstelle.
Ich habe eine Verbindung zu einem anderen Gerät über die serielle Schnittstelle aufgebaut. (Parallel habe ich einen 2. Pc der die Übertragung „mithorcht“)

Wenn ich nun in C den Befehl ComWrite(Com-Port, 0x02) ausführe beginnt das angehängte Gerät eine Parameterliste zu senden. Wenn ich Visual Basic den Befehl MSComm1.Output = Chr(2) verwende passiert nichts.
(Das Gerät, dass mithorcht empfängt allerdings das gleiche ASCII-Zeichen)

Woran könnte das liegen?
Danke im vorraus

mfg Schaumberger Andreas

Hallo Andreas,

Da gibt es 2 Möglichkeiten:

  1. Zeichenformat (7/8 bit, even/odd/no parity) könnte dazu führen, dass dein 2. PC etwas anderes versteht als das Gerät bzw. dass das Gerät ein Zeichen wegen Parity-Fehler zurückweist.

  2. Statusleitung (RTS,CTS usw.), vielleicht braucht das Gerät eine Leitung, die der 2. PC nicht beachtet.

Wenn du so etwas ernsthaft entwickelst, ist ein Schnittstellenprüfer empfehlenswert, der die Leitungen mit LEDs anzeigt. Noch besser ist ein Protokoll-Analysator, aber der kostet etwa so viel wie ein Auto.

Gruss Reinhard

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

Hallo Andreas,

Da gibt es 2 Möglichkeiten:

  1. Zeichenformat (7/8 bit, even/odd/no parity) könnte dazu
    führen, dass dein 2. PC etwas anderes versteht als das Gerät
    bzw. dass das Gerät ein Zeichen wegen Parity-Fehler
    zurückweist.

  2. Statusleitung (RTS,CTS usw.), vielleicht braucht das Gerät
    eine Leitung, die der 2. PC nicht beachtet.

Wenn du so etwas ernsthaft entwickelst, ist ein
Schnittstellenprüfer empfehlenswert, der die Leitungen mit
LEDs anzeigt. Noch besser ist ein Protokoll-Analysator, aber
der kostet etwa so viel wie ein Auto.

Gruss Reinhard

Eigentlich verwende ich bei beiden Programmiersprachen die genau gleiche Einstellungen. An den Statusleitungen kann es auch nicht liegen, da ich ein selber gebautes Kabel verwende in dem nur RxD, TxD und GND ausgeführt ist.
Es muss an einem Unterschied zwischen dem Befehl ComWrite und MSComm1.Output liegen.

mfg Andreas

Hallo Andreas,

Da gibt es 2 Möglichkeiten:

  1. Zeichenformat (7/8 bit, even/odd/no parity) könnte dazu
    führen, dass dein 2. PC etwas anderes versteht als das Gerät
    bzw. dass das Gerät ein Zeichen wegen Parity-Fehler
    zurückweist.

  2. Statusleitung (RTS,CTS usw.), vielleicht braucht das Gerät
    eine Leitung, die der 2. PC nicht beachtet.

Wenn du so etwas ernsthaft entwickelst, ist ein
Schnittstellenprüfer empfehlenswert, der die Leitungen mit
LEDs anzeigt. Noch besser ist ein Protokoll-Analysator, aber
der kostet etwa so viel wie ein Auto.

Gruss Reinhard

Eigentlich verwende ich bei beiden Programmiersprachen die
genau gleiche Einstellungen.

Hallo Andreas,

das ist ja nun mal ganz offensichtlich nicht so. Der seriellen Schnittstelle ist es herzlich egal, wie du deine Software schreibst, wenn ein angeschlossenes Gerät anders reagiert, dann ist etwas Anderes über die Schnittstelle gegangen, Punkt.

Wo du den Fehler lieber suchst, ist eine andere Frage, ich persönlich setze eben da an, wo er auftritt, und erst wenn ich weiss, was an Übertragung A anders ist als an Übertragung B, kann ich sinnvoll nach der Ursache fahnden.

Gruss Reinhard