xsharp.eu • SerialLib Klasse für VO 2.8 - Page 4
Page 4 of 4

SerialLib Klasse für VO 2.8

Posted: Thu Jun 23, 2022 5:42 pm
by g.bunzel@domonet.de
Hallo Franz,
zuerst habe ich habe den Thread-Kram rausgeschmissen und auf Timer umgestellt - hat nicht funktioniert.
Dann alle Varianten für das Senden getestet (:SendLine(), SendLineTo(), SendRaw(), ...). Die Rückmeldung auch mit dem Debugger zu den Methoden war immer 'Successful' - im EchoServer ist aber immer nur die erste Zeile angekommen. Auch mit dem Debugger nix gefunden.
Der VO-EchoClient erstellt für jede Nachricht ein neues Objekt oSocket, sendet dann mit :SendLineTo() und zerstört das Objekt wieder mit :Axit(). Anscheinend funktioniert der EchoServer nur so richtig.
Ich habe dann einen anderen EchoServer gesucht. Dort sind dann alle Nachrichten mit :SendLine() - und auch mit allen anderen Send-Methoden sofort angekommen. Auch eine #ENDE-Nachricht wird noch gesendet.
Das ist der SocketTest, mit dem ich getestet habe: sockettest.sourceforge.net/
Der SocketTest antwortet leider nicht autom.mit den gesendeten Nachrichten. Alle mit 'Send' gesendeten Texte sind aber im VO-Fenster angekommen. Das funktioniert also auch mit einem Timer und ist einfacher und übersichtlicher als mit einem Thread.
Das Problem liegt also wohl nicht an dem :SendTo() in Deiner Anwendung.

HTH

Gerhard Bunzel

SerialLib Klasse für VO 2.8

Posted: Fri Jun 24, 2022 6:51 am
by lagraf
Hallo Gerhard,
danke für deine Bemühungen! Dass der Echo Client immer wieder einen neuen Socket öffnet habe ich in Msg #22844 auch bemerkt und geschrieben.

Inzwischen habe ich den Echo Server und den Echo Client so umgebaut, dass diese die gewünschte Kommunikation bidirektional abwickeln. Wegen dem Thread ist einiges an Absicherungen und Abfragen notwendig, damit dies vernünftig funktioniert. Ich schau mir mal an wie es mit Timer funktioniert, beim Kunden wird irgendwann mal auf eine neue Hardware umgestellt, vielleicht kann ich dann das Prog dabei mit umstellen.

Ablauf für einen Test:
- CrdServer mit Button Start aktivieren
- CrdClient mit Button Start Kommunikation aktivieren
- Im CrdServer mit den 3 Buttons Eingang, Ausgang, Nacht das Einstecken von Karten simulieren
LFSTest.zip
(32.6 KiB) Downloaded 85 times

SerialLib Klasse für VO 2.8

Posted: Fri Jun 24, 2022 8:32 am
by lagraf
Hab gesehen, dass die CrdClient Antworten WITHDRAW und EJECT beim CrdServer wieder nicht ankommen. Ist mir aber jetzt egal, der unbezahlte Aufwand dafür wird mir nun zu groß.
Danke für euren Input!

PS Gerhard: Wie würde das mit dem Timer funktionieren - Wenn der Timer anspringt, Socket öffnen, schauen ob eine Nachricht vorliegt, Socket schließen? Oder welchen Ablauf hattest du im Timer?

SerialLib Klasse für VO 2.8

Posted: Fri Jun 24, 2022 10:35 am
by g.bunzel@domonet.de
Hab die Test-App schon gelöscht. Das mit dem Timer ist aber recht einfach.

Wenn die Connection gestartet wird, auch den Timer starten. Vorher kann es ja noch keine Nachrichten geben:
SetTimer (SELF:handle (), 2000, 500, NULL_PTR)

Im Dispatcher des Fenster dann auf die Timernachricht warten und oSocket so abarbeiten, wie im Thread:
METHOD Dispatch (oEvent) CLASS MyWindow
LOCAL oEvt AS @@Event

oEvt := oEvent

DO CASE
CASE oEvt:message == WM_Timer
DO CASE
CASE oEvt:wParam == 2000 // ID des Timers
cLine := SELF:_oSocket:GetLine()
........

ENDCASE
ENDCASE

RETURN SUPER:Dispatch (oEvt)

Wenn die Connection beendet wird auch den Timer beenden:
KillTimer (SELF:handle (), 2000)

HTH
Gerhard Bunzel

SerialLib Klasse für VO 2.8

Posted: Sat Jun 25, 2022 10:24 am
by softdevo@tiscali.it
I used this code, I hope it still works

Danilo Giuliani

SerialLib Klasse für VO 2.8

Posted: Mon Jun 27, 2022 4:59 am
by lagraf
Hi Danilo,
thank you for the code, but I already got it from Wolfgang.
Franz