Forum: PC-Programmierung Probleme RS232 bei mehrfachen Versenden von Daten


von Dave_ (Gast)


Lesenswert?

Hallo Zusammen.

Ich versende Daten mit foglgender Routine:

int main (void)
{
  DCB           dcb;
  DWORD         iBytesWritten;
  unsigned char ucMsg[] = {0x41, 0x42, 0x20, 0x43}; // (4)
  //unsigned char ucMsg = 'C';    // zu sendendes Zeichen (1)

  HANDLE hCom = CreateFile ("COM1", GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, 0, NULL);

  dcb.DCBlength = sizeof(DCB);  // Laenge des Blockes MUSS gesetzt
sein!
  GetCommState (hCom, &dcb);    // COM-Einstellungen holen und aendern
  dcb.BaudRate  = 9600;         // Baudrate
  dcb.ByteSize  = 8;            // Datenbits
  dcb.Parity    = NOPARITY;     // Parität
  dcb.StopBits  = ONESTOPBIT;   // Stopbits
  SetCommState (hCom, &dcb);    // COM-Einstellungen speichern

  //WriteFile (hCom, &ucMsg, 4, &iBytesWritten, NULL); // Senden von 4
Bytes
  WriteFile (hCom, &ucMsg, sizeof (ucMsg), &iBytesWritten, NULL); //
Senden von 4 Bytes
  // oder:
  //WriteFile (hCom, &ucMsg, 1, &iBytesWritten, NULL); // Senden eines
Bytes

  CloseHandle (hCom); // COM1 schließen

  return (0);
}

Diese Routine wurde mir in diesem Portal hier Empfohlen. Es
funktioniert gut, bis es aufeinmal irgendwann aussetzt und der Computer
nichts mehr versendet. Kann es sein, daß es bei mehrfacher versendung
von Daten irgendwelche Verwaltungsprobleme durch Windows von der RS232
Schnittstelle gibt?

David

von Karl heinz B. (kbucheg)


Lesenswert?

Ich würde einfach mal hergehen und den hCom den du von
CreateFile zurückbekommst auf Gültigkeit prüfen. Sowas
sollte eigentlich selbstverständlich sein. Überhaupt bei
einer geshareten Resource wie der Seriellen.

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.