Hallo Ihr Puristen...
Ich arbeite gerade an einem kleinen Testprogramm für die serielle Abfrage einer
Steuerungs-CPU und habe da ein kleines Problem mit der MVCOM-Lib.
Wenn ich mit einem Terminalproggi arbeite und die Verbindung zwischen
Rechner und Steuerplatine besteht, esrcheind sobald ich die Steuerplatine
einschalte im Terminal der Schriftzug "XSTART", welchen die
Steuerplatine sendet, sobald ihre Initialisierung abgelaufen ist und meldet
so den "bereit" Status.
Ich versuche nun eine Function hinzukriegen, welcher ich sagen
kann "Warte solage bis im angegebenen Buffer des COMPorts ein
angegebener String ansteht" also z.B.
Procedure WaitCOM(comPort.l, strWait.s)
...
EndProcedure
Noch besser wäre es natürlich, wenn innerhalb dieser Procedure ein
TimeOut verarbeitet werden könnte... also z.B das nach 10 Sek. die
Abfrage abgebrochen wird und über ProcedureReturn=0 dieser Abbruch
mitgeteilt wird.
Kann mir einer von Euch bei diesem Problem mit einem Codeschnipsel aushelfen?
Ich blicke nicht so richtig durch bei der MVCOM. In VB war das kein Problem aber VB
ist halt irgendwie ziemlich unflexibel, wenn es darum geht ein Proggi zu kompilieren,
welches ohne spezielle DLLs auskommt.
Ich danke schonmal im vorraus für Eure Bemühungen.[/b]
MVCOM warten auf bestimmten Bufferinhalt...
- Tafkadasom2k5
- Beiträge: 1578
- Registriert: 13.08.2005 14:31
- Kontaktdaten:
Weisst du denn, wie man den Pufferinhalt ausließt?
Ich hätte ne Idee, aber dazu bräuchte ich halt den Befehl um den Inhalt des Puffers nachzuschauen..
Gr33tz
Tafkadasom2k5
Ich hätte ne Idee, aber dazu bräuchte ich halt den Befehl um den Inhalt des Puffers nachzuschauen..
Gr33tz
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Die MVCOM-Librarie stellt alle Befehle zur Verfügung, die nötig sind, aber
wie schon erwähnt, komme ich nicht so richtig kalr damit...
In VB waren die Befehle sehr einfach wie z.B. COM.output = "<Befehl>"
oder buffer$=COM.input um den Inhalt des Buffers einzulesen, wobei
die einzulesende Länge einfach mittel COM.inbuffercount=x gesetzt werden konnte.
wie schon erwähnt, komme ich nicht so richtig kalr damit...
In VB waren die Befehle sehr einfach wie z.B. COM.output = "<Befehl>"
oder buffer$=COM.input um den Inhalt des Buffers einzulesen, wobei
die einzulesende Länge einfach mittel COM.inbuffercount=x gesetzt werden konnte.
Ich versuche, zur Löung mit dem Timeout beizutragen:
In endzeit werden die Anzahl an Milliseconds gespeichert, die der Computer schon läuft, dazu werden noch 10.000 Milliskunden = 10 Sekunden addiert.
Die Repeatschleife läuft so lange, bis ElapsedMilliseconds() ( = so lange läuft der PC in ms) plus die entsprechende Timeoutzeit kleiner als die aktuelle ElapsedMilliseconds() größer ist.
Biddeschööööööön!
Code: Alles auswählen
timeoutzeit_in_millisekunden=10*1000
endzeit=ElapsedMilliseconds()+timeoutzeit_in_millisekunden
Repeat
;
; hier deine Befehle
;
Until ElapsedMillisconds() >= endzeit
Die Repeatschleife läuft so lange, bis ElapsedMilliseconds() ( = so lange läuft der PC in ms) plus die entsprechende Timeoutzeit kleiner als die aktuelle ElapsedMilliseconds() größer ist.
Biddeschööööööön!
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- Tafkadasom2k5
- Beiträge: 1578
- Registriert: 13.08.2005 14:31
- Kontaktdaten:
Anderer Lösungsansatz:
EDIT: Hatte einen stumpfen Schreib-Bug entdeckt
N bisschen spät, aber effektiv :P
Code: Alles auswählen
For i=0 to 50
Text.s = ProcedureUmBufferabzufragen()
If Text.s <> ""
i=50
Endif
Delay(50)
Next
If Text = ""
Messagerequester("Fehler: ","Deine Steuerungs CPU hat Mist gebaut, oder konnte die Daten nicht rechtzeitig übermitteln")
Else
Messagerequester("Daten Angekommen: ", Text)
Endif

OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!