
Wir testen einen neueren Wyse-Client (Modell Z90D7), der über eine serielle Schnittstelle mit einem PC verbunden ist. Wir haben einen externen Kunden, der ein dediziertes Gerät verwendet, wir testen jedoch mit dem PC. Wir führen auf den Clients über Citrix eine C#-Anwendung aus. Wenn wir die Anwendung ausführen, die wir auf unserem alten Wyse-Gerät verwenden, läuft alles einwandfrei und ohne Fehler. Auf dem neuen Gerät funktioniert die serielle Schnittstelle jedoch etwa einmal bei 10 Versuchen. In allen anderen Fällen erhalte ich entweder einen Overrun-Fehler, einen Paritätsfehler oder einen RXOver-Fehler.
Ich habe durch Protokollierung überprüft, dass der Port geöffnet wird und mehrere Befehle ausgeführt werden, nachdem er geöffnet wurde. Die zufälligen Fehler treten jedoch aufbevor überhaupt tatsächliche Daten übertragen werden können. Ich habe an zahlreichen Stellen gelesen, dass es sich hier um ein Pufferproblem handeln könnte, habe jedoch keine Posts gesehen, in denen Fehler erwähnt wurden, die vor dem Empfang der Daten auftreten, daher bin ich mir nicht ganz sicher.
Ich habe auch versucht, Handshakes und größere Lese-/Schreibpuffer zu verwenden, aber ohne Erfolg. Ich habe ein neues Kabel und den 2. COM-Port an diesem Gerät ausprobiert, auch ohne Erfolg. Unsere Standardeinstellungen sind:
9600 Baud, gerade Parität, 8 Datenbits, 1 Stoppbit
Da dies auf Citrix läuft, müssen wir auchFühren Sie die hier gezeigten Net Use-Befehle ausbevor irgendetwas getan wird. Wenn Sie das nicht tun, zeigt die serielle Verbindung immer an, dass sie verbunden ist, und empfängt keine Daten (das passiert auch auf alten Geräten). Der genaue Befehl, den wir ausführen (natürlich mit 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 schon einmal mit seriellen Schnittstellen gearbeitet hat, schon einmal von diesen drei Fehlern gehört, die so abwechselnd auftreten? Gibt es etwas anderes als eine fehlerhafte Schnittstelle (oder besser gesagt zwei fehlerhafte Schnittstellen), das dies verursachen könnte? Ich denke, dass die Größe des Hardwarepuffers das Problem sein könnte, kann aber keine Möglichkeit finden, dies zu beheben.
Antwort1
Alle Fehler scheinen darauf hinzudeuten, dass sich die Daten nicht bewegen, und zwar in beide Richtungen.
RXOver leert den Empfangspuffer nicht schnell genug. Overrun liegt daran, dass der serielle Porttreiber den Sendepuffer des Chips nicht schnell genug leert.
Ich bin nicht sicher, ob es eine Möglichkeit gibt, die Hardwarepuffergröße zu erhöhen. Der Windows-Puffer kann über die API erhöht werden, aber der Treiber ignoriert dies möglicherweise.
Ich schlage vor, mehr Geräte auszuprobieren, um das Problem besser einschätzen zu können. Möglicherweise liegt ein Kompatibilitätsproblem mit Ihrem Testcomputer vor.
Der Artikel 5 häufige Probleme mit der seriellen Schnittstelle listet einige mögliche Gründe für solche Probleme auf:
Falsche Kommunikationsparameter.
Beide Geräte müssen mit denselben Kommunikationsparametern eingerichtet werden, darunter Baudrate, Parität, Anzahl der Datenbits und Anzahl der Stoppbits.Falsches serielles Kabel
- Schlechte serielle Kabel
- Fehlerhafte Verkabelung