Forum: PC-Programmierung SetCommState


von Alex (Gast)


Lesenswert?

Hi zusammen,

ich habe irgendwo im nächsten Code noch einen Fehler, die SetCommState 
gibt eine False zurück und eine "87"(Falscher Parameter) als Fehlercode:


[c]
dcb.DCBlength = sizeof(DCB);  // Laenge des Blockes MUSS gesetztsein!
  dcb.BaudRate  = atoi(set->m_baudrate);      // Baudrate
  dcb.ByteSize  = (BYTE) atoi(set->m_databits);            // Datenbits
  dcb.Parity    = (BYTE) atoi(set->m_parity);     // Parität
  dcb.StopBits  = (BYTE) atoi(set->m_stopbits);   // Stopbits
//  Communication flow
  dcb.fBinary    =  TRUE;
  dcb.fParity   = TRUE;
  dcb.fOutxCtsFlow  = FALSE;
  dcb.fOutxDsrFlow  = FALSE;
  dcb.fDtrControl    = DTR_CONTROL_DISABLE;
  dcb.fDsrSensitivity  = FALSE;
  dcb.fTXContinueOnXoff = TRUE;
  dcb.fOutX      = FALSE;
  dcb.fInX      = FALSE;
  dcb.fErrorChar    = FALSE;
  dcb.fNull      = FALSE;
  dcb.fRtsControl    = RTS_CONTROL_DISABLE;
  dcb.fAbortOnError  = FALSE;
  dcb.wReserved    = 0;
  BOOL state;
  state = SetCommState(hcomm, &dcb);
[\c]

hcomm habe ich vorher mit CreateFile initialisiert!!!!

danke für die Hilfe



Gruß

von Tobi H. (tobi-) Benutzerseite


Lesenswert?

Woher weisst du, dass in diesen Zeilen die korrekten Werte der 
Konstanten rauskommen:

  dcb.ByteSize  = (BYTE) atoi(set->m_databits);            // Datenbits
  dcb.Parity    = (BYTE) atoi(set->m_parity);     // Parität
  dcb.StopBits  = (BYTE) atoi(set->m_stopbits);   // Stopbits

von Alex (Gast)


Lesenswert?

ich habe Beim debbugen geprüft!!!
Ergebniss ist:
   dcb.ByteSize  = 8
   dcb.Parity    = 0
   dcb.StopBits  = 1 !!!

von arc (Gast)


Lesenswert?

dcb.StopBits  = 1 ergibt nicht ein Stopbit sondern 1.5. Für ein Stopbit 
muss eine 0 im Feld stehen.

von Alex (Gast)


Lesenswert?

Danke, das war der Fehler.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.