Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Falkge
Anmeldungsdatum: 31.05.2014 Beiträge: 2 Wohnort: Erfurt
|
Verfasst am: 31.05.2014, 15:45 Titel: Open COM Empfangspuffer leeren |
|
|
Hallo,
Gibt es eine Möglichkeit bei FB den Empfangsbuffer zu leeren?
Problem ist folgendes:
Ich empfange Daten von einem Controller und durch einen Interrupt
kann das Senden des Controllers unterbrochen werden. Sendet der
Controller dann später neue Werte auf Anfrage von meinem FB Programm
so interpretiert FB merkwürdige Werte.
Starte ich allerdings das FB Programm neu so sind die Werte wieder so
wie sie sein sollten. Daher weiß ich das der Fehler nicht im Programm des
Controllers liegt.
Meine Vermutung ist das durch dass unterbrochene Senden vom Controller
die Variable FB-seitig nicht gefüllt ist er dann mit den neuen Werten vom
Controller diese erst auffüllt. Dadurch die wirren Werte...
Die Kommunikation funktioniert ansonsten in beide Richtungen problemlos
Bis eben zu den besagten Interrupt(Unterbrechung)
Ich hoffe ihr könnt mir helfen...
Mit freundlichen Grüßen |
|
Nach oben |
|
 |
micha
Anmeldungsdatum: 09.12.2005 Beiträge: 72
|
Verfasst am: 01.06.2014, 11:51 Titel: |
|
|
Der Puffer wird Hardwareseitig also vom Gerätetreiber verwaltete.
Nach einem Verlust der Kommunikation bleibt dir nur ein CLOSE gefolgt von OPEN um neue Session mit "sauberem" Puffer zu iniziieren.
(So far I know) Vielleicht it das aber doch alles ganz anderes
Ist das ein "echter" COM Port oder via USB TTL Adapter ?
micha |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 01.06.2014, 19:33 Titel: |
|
|
Vielleicht als Anregung:
Code: | Sub LeerePuffer(dateinr As Integer)
Dim anz As Integer
Do
anz = Loc(dateinr)
If anz > 0 Then
' In FB ist in der Regel keine Dummy-Variable nötig, da Funktionen
' auch wie Statements aufgerufen werden können, wenn der
' Rückgabewert nicht benötigt wird.
Input(anz, dateinr)
End If
Loop While anz > 0
End Sub |
d.h. einfach solange Zeichen lesen, bis keine mehr im Puffer (=LOC()-Rückgabewert = 0) drinliegen. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Falkge
Anmeldungsdatum: 31.05.2014 Beiträge: 2 Wohnort: Erfurt
|
Verfasst am: 02.06.2014, 19:09 Titel: |
|
|
Hallo,
also CLOSE und OPEN habe ich schon verwendet, leider aber ohne Erfolg...
Ich versuche mal was an den COM Port(ist übrigens virtuell-> TTL) einstellungen von Windows zu drehen, ansonsten werde ich was basteln mit der Anregung von Dreael
Mit freundlichen Grüßen |
|
Nach oben |
|
 |
|