[Gelöst] Windows-Probleme mit SynaSer und Windows 10

Antworten
volker
Beiträge: 24
Registriert: Mi 14. Nov 2012, 14:36
OS, Lazarus, FPC: Rosa Linux Desktop R8 (L 1.6, FPC 2.6.4)
CPU-Target: 32Bit

[Gelöst] Windows-Probleme mit SynaSer und Windows 10

Beitrag von volker »

Hallo Experten, vielleicht habt Ihr eine Idee:
Habe eine Waage mit serieller Schnittstelle, die kontinuierlich die Wäge-Ergebnisse als CR-LF terminierten ASCII-String ausgibt über die serielle RS232 Schnittstelle.
Kann dies mit einem USB-Serial-Konverter unter Linux mit der SynaSer-Unit perfekt auslesen.
Nun muss ich aber (leider, seufz :evil: ) dies unter Windows 10 zum laufen bekommen. Ist für ein Unternehmen, und der Packtisch in der Versandabteilung hat eine Windows-10 Arbeitsstation.
Mit dem Hyperterminal (vom alten Windows XP - läuft auch unter Windows 10) sehe ich die Wäge-Ergebnisse. D.h. die Schnittstelle (gibt sich als COM3 aus) funktioniert.
Doch die SynaSer Funktionen versagen kläglich. Ich mache dies in einem Timer (alles getestet, von 250 bis 5000 ms):

Code: Alles auswählen

  IF SerialPort.CanRead (50)
    THEN Memo1.Lines.Add ('Gelesen: "' + SerialPort.RecvString (50) + '"                   RecvString ' + IntToStr (SerialPort.LastError) + ' ' + SerialPort.LastErrorDesc)
    ELSE Memo1.Lines.Add ('keine Daten');

funktioniert unter Linux perfekt, Unter Windows-10 bekomme ich immer "Timeout", egal ob ich hier 50 ms oder 5000 ms (=5 sekunden) eingebe.
Ganz komisch: bei Werten über 100 hängt sich das ganze :evil: :evil: :evil: ...ding auf, und so alle 2-3 Minuten kommt "Timeout". Aber niemals "keine Daten", d.h. die Funktion CanRead liefert true, aber RecvString liefert nix oder hängt sich auf.

Hat jemand von Euch eine Idee? oder gibt es einen Workaround speziell für Windows ? Oder sollte ich eine andere Komponente verwenden, z.B. LazSerial ?
Vielen Dank für Eure Hilfe
Zuletzt geändert von volker am Mi 5. Feb 2020, 13:34, insgesamt 1-mal geändert.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Windows-Probleme mit SynaSer und Windows 10

Beitrag von af0815 »

ich habe Waagen und andere Geräte sowohl unter Windows als auch unter Linux am laufen. Kein wirkliches Problem.

Allerdings ist mein Design nicht auf Polling in der Art und weise von dir aufgebaut.

Wieso pollst du überhaupt mit einem Timer !? Du sagst ja selbst, das die Waage laufend Daten mit crlf terminiert ausgibt. Also warte auf die fertigen Ergebnisse und mache keinen Stress. Überall gibt es callbacks, die dir die Ergebnisse der Schnittstelle frei haus liefern.

wenn polling, dann stosse ich die Waage mit einer Abfrage an, das Ergebnis kommt per Callback.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

volker
Beiträge: 24
Registriert: Mi 14. Nov 2012, 14:36
OS, Lazarus, FPC: Rosa Linux Desktop R8 (L 1.6, FPC 2.6.4)
CPU-Target: 32Bit

Re: Windows-Probleme mit SynaSer und Windows 10

Beitrag von volker »

Hallo af0815,
vielen Dank für die Antwort, bekomme wieder Hoffnung. Das mit dem Polling war nur eine erste Idee um zu schauen, ob da überhaupt Daten ankommen. Die Waage (KERN DE60K10D) hat 2 Modi:
1.) Kontinuierliches Senden
2.) Genau einen String senden wenn sie ein ASCII "w" empfängt.
Beides funktioniert perfekt unter Linux. Habe die Synapse SynaSer Funktionen RecvString, RecvPacket und RecvBuffer ausprobiert. Unter Windows immer TimeOut-Error bzw. bei RecvBuffer (das scheint die zugrundeliegende Funktion zu sein, wenn man in den Quelltext guckt) immer 0 Bytes empfangen.

Kannst du mir eventuell mit einem Code-Schnipsel weiterhelfen, wie Du die Daten ausliest?

Hast du irgendwelche Defaultwerte im Gerätemanager verändert?

vielen Dank für deine Hilfe, ich bin hier am verzweifeln...

volker
Beiträge: 24
Registriert: Mi 14. Nov 2012, 14:36
OS, Lazarus, FPC: Rosa Linux Desktop R8 (L 1.6, FPC 2.6.4)
CPU-Target: 32Bit

Re: [Gelöst] Windows-Probleme mit SynaSer und Windows 10

Beitrag von volker »

NACHTRAG zu oberem Beitrag:
GELÖST !! :D :D :D Habe die Komponente LazSerial von JurassicPork benutzt, statt SynaSer.
https://github.com/JurassicPork/TLazSerial
Als Komponente installiert, Lazarus neu kompiliert...
...und damit funktionierts auf Anhieb, hurra, hurra, hurra ! auch unter Windows 10
Trotzdem vielen Dank an alle !

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: [Gelöst] Windows-Probleme mit SynaSer und Windows 10

Beitrag von af0815 »

Ich habe diese Komponente auch in Verwendung, allerdings habe ich sie mir etwas adaptiert :-)

Die geht echt gut, nur am RasPi gibt dieselben Probleme beim kompilieren wie mit Synaser (eh klar, baut ja drauf auf) weil der liebe Gebauer seit langer Zeit nichts mehr gefixt hat, obwohl gemeldet. Nix tragisches, wissen muss man es nur.

Ich arbeite im Normalfall so, das die Programme sowohl unter Windows, Linux und RasPi-Linux laufen. Die Waagenprogramme laufen bevorzugt auf einem industirellen RasPi Display (RsPi3B+ mit Touch Display, 24V Versorgung, serieller Schittstelle und Blechgehäuse). Siehe https://www.mass.de/de/produkte/raspber ... pi-07.html als Referenz.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten