Serieller Port, der auf dem Wyse-Client zufällige Fehler ausgibt

504
Big EMPin

Wir testen einen neueren Wyse-Client (Modell Z90D7), der über einen seriellen Anschluss an einen PC verfügt. Wir haben einen externen Kunden, der ein spezielles Gerät verwendet, der PC wird jedoch zum Testen verwendet. Wir führen eine C # -Anwendung auf den Clients über Citrix aus. Wenn wir die Anwendung ausführen, die wir auf unseren alten Wyse-Geräten verwenden, läuft alles einwandfrei und fehlerfrei. Bei dem neuen Gerät funktioniert die serielle Schnittstelle jedoch etwa alle 10 Versuche. Alle anderen Zeiten gibt es entweder einen Überlauffehler, einen Paritätsfehler oder einen RXOver-Fehler.

Ich habe durch Protokollierung verifiziert, dass der Port geöffnet wird und mehrere Befehle ausgeführt werden, nachdem er geöffnet wurde. Die zufälligen Fehler treten jedoch auf, bevor überhaupt tatsächliche Daten übertragen werden können. Ich habe an zahlreichen Stellen gelesen, dass dies ein Pufferproblem sein könnte. Ich habe jedoch noch keine Posts gesehen, in denen Fehler erwähnt wurden, bevor Daten empfangen wurden, daher bin ich nicht ganz sicher.

Ich habe auch versucht, Handshaking und größere Lese- / Schreibpuffer ohne Erfolg zu verwenden. Ich habe ein neues Kabel und den 2. COM-Port an diesem Gerät ausprobiert, kein Glück. Unsere Standardeinstellungen sind:

9600 Baud, gerade Parität, 8 Datenbits, 1 Stoppbit

Da dies auf Citrix läuft, müssen wir auch die hier gezeigten net use-Befehle ausführen, bevor etwas getan wird. Wenn Sie dies nicht tun, wird die serielle Verbindung immer mit dem Hinweis verbunden, dass die Verbindung besteht und keine Daten empfangen werden (dies gilt auch für die alten Geräte). Der genaue Befehl, den wir ausführen (mit natürlich geändertem App-Namen) lautet:

net use com1 /DELETE net use com2 /DELETE net use com1: \\client\com1: net use com2: \\client\com2: start /d "D:\myapp" MyApplication.exe 

Hat jemand, der sich mit seriellen Schnittstellen befasst hat, jemals von diesen drei Fehlern gehört, die sich so abwechseln? Gibt es etwas anderes als einen fehlerhaften Port (oder zwei fehlerhafte Ports), der dies verursachen könnte? Ich denke, die Größe des Hardware-Puffers könnte das Problem sein, kann aber keinen Weg finden, um dies zu überwinden.

3
Alle Fehler scheinen zu sagen, dass sich die Daten nicht bewegen, und zwar in beide Richtungen. RXOver leert den Empfangspuffer nicht schnell genug. Overrun: Der serielle Port-Treiber leert den Chip-Sendepuffer nicht schnell genug. Ich bin nicht sicher, ob es eine Möglichkeit gibt, die Größe des Hardware-Puffers zu erhöhen. Der Windows-Puffer kann über die API erhöht werden, kann jedoch vom Treiber ignoriert werden. Ich würde mehr Ausrüstung ausprobieren, um eine bessere Perspektive für das Problem zu erhalten, möglicherweise ein Kompatibilitätsproblem, aber ich habe keine direkten Erfahrungen mit seriellen Schnittstellen. harrymc vor 6 Jahren 1
https://www.stratusengineering.com/5-common-serial-port-problems/ harrymc vor 6 Jahren 0

1 Antwort auf die Frage

1
harrymc

Alle Fehler scheinen zu sagen, dass sich die Daten nicht bewegen, und zwar in beide Richtungen.

RXOver leert den Empfangspuffer nicht schnell genug. Overrun: Der serielle Port-Treiber leert den Chip-Sendepuffer nicht schnell genug.

Ich bin nicht sicher, ob es eine Möglichkeit gibt, die Größe des Hardware-Puffers zu erhöhen. Der Windows-Puffer kann über die API erhöht werden, kann jedoch vom Treiber ignoriert werden.

Ich schlage vor, mehr Ausrüstung zu verwenden, um eine bessere Perspektive für das Problem zu erhalten, möglicherweise ein Kompatibilitätsproblem mit Ihrem Testcomputer.

Der Artikel 5 Häufige Probleme mit dem seriellen Port listet mögliche Ursachen für solche Probleme auf:

  • Falsche Kommunikationsparameter
    Beide Geräte müssen mit den gleichen Kommunikationsparametern eingerichtet werden, darunter Baudrate, Parität, Anzahl der Datenbits und Anzahl der Stoppbits.

  • Falsches serielles Kabel

  • Fehlerhafte serielle Kabel
  • Fehlerhafte Verkabelung
Bevor ich dies veröffentlichte, ging ich zunächst davon aus, dass es falsche Parameter gibt. Bei meinen Standardparametern 9600-E-8-1 und keinem Handshaking hatte ich ~ 25% Erfolg. Ich habe alle möglichen Kombinationen der Standardparameter ausprobiert, die das Wyse-Gerät zulassen würde, und die beste Konfiguration des 1200-E-8-1 mit Handshaking funktioniert immer noch ~ 75% der Zeit. Wenn ich manuell versuche, die Baudrate niedriger als 1200 einzustellen, funktioniert es nicht mehr. Obwohl ich keine funktionierenden Parameter finden konnte, waren Ihre Informationen zumindest hilfreich. Deshalb habe ich Ihnen die Prämie zugesprochen. Danke für Ihre Hilfe. Zeit, verschiedene Geräte auszuprobieren. Big EMPin vor 6 Jahren 0