Ik krijg steeds rare lock-ups met mijn code.
Ik zal het eventjes schematisch en kort samenvatten.
Ik heb een form met daarop een paar radiobuttons om de Com poort te selecteren. Kep een globale variabele die hComm (van comhandler) heet. Dit initialiseer ik met NUL (handle hComm = NULL).
Nu zeg ik, op event radiobutton1click:
Op radiobutton2click hetzelfde, maar dan bij CreateFile uiteraard COM2.
Nu zou je zeggen dat je gewoon op die 2 button kan blijven douwen. Want wanneer de hComm niet NULL is -> wegslopen die handler en een nieuwe maken maar dan met een andere COMpoort.
Nu het probleem: ik ken 1 keer op een andere knop drukken. Maar de 2de keer hangt de app.
Wie-o-wie weet het antwoord (of een andere manier/voorbeeld prog) om een COMpoort-select-iets te maken?
Ik heb een form met daarop een paar radiobuttons om de Com poort te selecteren. Kep een globale variabele die hComm (van comhandler) heet. Dit initialiseer ik met NUL (handle hComm = NULL).
Nu zeg ik, op event radiobutton1click:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| if (hComm != NULL)
{
ReadThread->Terminate();
Sleep(250);
PurgeComm(hComm, PURGE_RXABORT);
SetCommTimeouts(hComm, &ctmoOld);
CloseHandle(hComm);
hComm = NULL;
}
DCB dcbCommPort;
// Create ComHandler
hComm = CreateFile("COM1",
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
0,
0);
// Error?
if(hComm == INVALID_HANDLE_VALUE)
{
MainForm->Memo1->Text = GetLastError();
}
// Timeout variables
GetCommTimeouts(hComm,&ctmoOld);
ctmoNew.ReadTotalTimeoutConstant = 100;
ctmoNew.ReadTotalTimeoutMultiplier = 0;
ctmoNew.WriteTotalTimeoutMultiplier = 0;
ctmoNew.WriteTotalTimeoutConstant = 0;
SetCommTimeouts(hComm, &ctmoNew);
// Just some more variables
dcbCommPort.DCBlength = sizeof(DCB);
GetCommState(hComm, &dcbCommPort);
BuildCommDCB("19200,N,8,1", &dcbCommPort);
SetCommState(hComm, &dcbCommPort); |
Op radiobutton2click hetzelfde, maar dan bij CreateFile uiteraard COM2.
Nu zou je zeggen dat je gewoon op die 2 button kan blijven douwen. Want wanneer de hComm niet NULL is -> wegslopen die handler en een nieuwe maken maar dan met een andere COMpoort.
Nu het probleem: ik ken 1 keer op een andere knop drukken. Maar de 2de keer hangt de app.
Wie-o-wie weet het antwoord (of een andere manier/voorbeeld prog) om een COMpoort-select-iets te maken?
Het maakt niet niet uit of het rechts of het links is, maar TimmeStein weet precies wat de Jinx is !