PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Serielle Schnittstelle


Format C:
01.07.2002, 17:06
moin

COM1 ist bei mit in der Systemsteuerung mit einer Baud Rate von 9600 Bits/s eingestellt.

Wenn ich jedoch COM1 mit GetCommState abfrage bekomme ich als Ergebniss einen Baud Rate von 1200 Bits/s.

Frage:

Wenn ich jetzt mit SetCommState die Baud Rate verändere (z.B. 300) dann ist die Veränderung jedoch nicht in der Systemsteuerung zu sehen, dort stehen dann immer noch die alten Werte drinn.
Kann es sein das die neuen Einstellungen nur bis zum Herunterfahren des Rechners gültig sind ? ?
Beim Neustart werden wieder die alten Werte zurüchgesetzt d.h BaudRate=9600 in der Systemsteuerung und 1200 wenn ich mit GetCommState abfrage.


MfG



hPort = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0,
0, OPEN_EXISTING, 0, NULL);

if(hPort == INVALID_HANDLE_VALUE)
MessageBox(hwnd, "Fehler 1", "", 0);

dcb.DCBlength=sizeof(dcb);

if(! GetCommState(hPort, &dcb))
MessageBox(hwnd, "Fehler 2", "", 0);

sprintf(test, "%d", dcb.BaudRate);
MessageBox(0, test, "", 0);


K21
01.07.2002, 17:21
AFAIK ändert sich die baudrate nichtmal für die gesamte windowssession sondern nur für die dauer des programmablaufes.
wenn du das für die gesamte dauer ändern willst ist es imho nicht einfach über die DCB Struktur realisierbar

Format C:
01.07.2002, 17:30
d.h. Das man sich auf die Voreinstellungen in der Systemsteuerung nicht verlassen kann ?

Sollten deshalb die Werte bei Programmstart mit SetCommState sicherheitshalber neu gesetzt werden ?

MfG

K21
01.07.2002, 17:43
auf jeden fall!
ausserdem willst du dein programm ja sicherlich auch mal auf nem andren rechner ausführen und um da sicherzugehen dass auch deine gewünschte baudrate benutzt wird ist es doch sinnvoll sie selbst kontrolliert zu verändern... und so schwer issed ja nicht die baudrate zu verändern :)
(bei c++ geht es ~so:
DCB mDCB;
mDCB.BaudRate = CBR_2400;
bzw. welchen wert du halt haben willst :)