[C] SetCommTimeouts
Résolu
skarsnick
Messages postés
79
Statut
Membre
-
skarsnick Messages postés 79 Statut Membre -
skarsnick Messages postés 79 Statut Membre -
Bonjour j'ai un soucis avec SetCommTimeouts:
Voici mon code:
Le soucis est que je sors toujours au //ICI ça ne marche pas mon WriteFile n'a jamais été appellé, j'avoue avoir commenter le return après de if(!SetCommTimeouts(hCom,&timeouts)) mais mon WriteFile, bien qu'appellé, n'a pas l'air de marcher non plus...
Une idée?
Voici mon code:
void CS8Dlg::OffButton1()
{
HANDLE hCom;
TCHAR *pcCommPort = TEXT("COM1");
unsigned char value=0x00;
DWORD written;
COMMTIMEOUTS timeouts={0};
OpenFile(pcCommPort,hCom); // l'ouverture se passe bien :)
timeouts.WriteTotalTimeoutMultiplier=550;
timeouts.WriteTotalTimeoutConstant=550;
SetCommTimeouts(hCom,&timeouts);
if(!SetCommTimeouts(hCom,&timeouts))
{
return; //ICI ça ne marche pas
}
while(1)
{
WriteFile(hCom,&value,1,&written,NULL);
}
CloseHandle(hCom);
Le soucis est que je sors toujours au //ICI ça ne marche pas mon WriteFile n'a jamais été appellé, j'avoue avoir commenter le return après de if(!SetCommTimeouts(hCom,&timeouts)) mais mon WriteFile, bien qu'appellé, n'a pas l'air de marcher non plus...
Une idée?
3 réponses
Tu aurais pu titrer ton messages [c++] plutôt que [c] (enfin bref...)
Avec juste un morceau de code sans rien autour on ne peut pas trop t'aider.
D'où sortent ces fonctions tu utilises une lib ou c'est du code à toi ?
Peux tu en gros nous fournir une sorte de code minimal mettant en évidence le bug ?
Bonne chance
Avec juste un morceau de code sans rien autour on ne peut pas trop t'aider.
D'où sortent ces fonctions tu utilises une lib ou c'est du code à toi ?
Peux tu en gros nous fournir une sorte de code minimal mettant en évidence le bug ?
Bonne chance
SetCommTimeouts(hCom,&timeouts);
if(!SetCommTimeouts(hCom,&timeouts))
SetCommTimeouts est appelée 2 fois, peut être le problème ?
appeller GetLastError pour connaitre le problème:
If the function fails, the return value is zero. To get extended error information, call GetLastError.
https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setcommtimeouts?redirectedfrom=MSDN
if(!SetCommTimeouts(hCom,&timeouts))
SetCommTimeouts est appelée 2 fois, peut être le problème ?
appeller GetLastError pour connaitre le problème:
If the function fails, the return value is zero. To get extended error information, call GetLastError.
https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setcommtimeouts?redirectedfrom=MSDN