Daten von COM in einem Thread einlesen und im Hauptprogramm verarbeiten
Verfasst: Di, 15. Mai 2018 15:00
Hallo.
Ich bin dabei mit eXpress++ eine Datenerfassung für ein Prüfgerät über eine serielle Schnittstelle zu basteln.
Folgendes hab ich:
In einem Thread lesen ich erfolgreich die angekommenen Daten von COM2 ein.
Die sind dann in 4 Variablen (nEl, nEl1, nEl2, nEl3) abgelegt.
In dem Hauptprogramm hab ich die Maske für die anderen Daten dazu und auch 4 Gets nEl, nEl1, nEl2 und nEl3. Die will ich eigentlich nach erfolgreichem Einlesen füllen.
Es gelingt mir aber nicht, die Maske im Hauptprogrammteil aus dem Thread1 heraus zu aktualisieren.
Erst wenn ich im Hauptprogamm etwas mache (einen Button drücke) und ein dc_getrefresh(getlist) absetze, klappt es.
Wie geht das denn direkt aus dem Programmteil des einlesenden Threads?
Ein dc_getrefresh(getlist) dort geht nicht.
Uwe aus OS
Ich bin dabei mit eXpress++ eine Datenerfassung für ein Prüfgerät über eine serielle Schnittstelle zu basteln.
Folgendes hab ich:
In einem Thread lesen ich erfolgreich die angekommenen Daten von COM2 ein.
Die sind dann in 4 Variablen (nEl, nEl1, nEl2, nEl3) abgelegt.
In dem Hauptprogramm hab ich die Maske für die anderen Daten dazu und auch 4 Gets nEl, nEl1, nEl2 und nEl3. Die will ich eigentlich nach erfolgreichem Einlesen füllen.
Es gelingt mir aber nicht, die Maske im Hauptprogrammteil aus dem Thread1 heraus zu aktualisieren.
Erst wenn ich im Hauptprogamm etwas mache (einen Button drücke) und ein dc_getrefresh(getlist) absetze, klappt es.
Wie geht das denn direkt aus dem Programmteil des einlesenden Threads?
Ein dc_getrefresh(getlist) dort geht nicht.
Code: Alles auswählen
PROC DataLesen
if lCOMSchonOffen := .t.
cInputVonCom := ""
cIn = ""
cComAnzeige := "Warte auf Daten vom RB3000"
do while .t.
if com_count(2) > 0
cIn = com_read(2,1)
cInputVonCom = cInputVonCom + cIn
if cIn = chr(13)
cCOMAnzeige = "Habe Daten empfangen vom COM: " + cInputVonCOM
trennen(cInputVonCom)
cInputVonCom := ""
lDataMode := .t.
DC_GetRefresh(GetList)
endif
endif
enddo
endif
RETURN
Uwe aus OS