[c++] Błąd ERROR_INVALID_FUNCTION przy wywołaniu funkcji TransmitCommChar
Ostatnio zmodyfikowano 2018-02-22 18:20
marecki Temat założony przez niniejszego użytkownika |
[c++] Błąd ERROR_INVALID_FUNCTION przy wywołaniu funkcji TransmitCommChar » 2018-02-16 22:23:13 Poniżej kod #include <iostream> #include <windows.h>
using namespace std;
string kodyBledowSystemu( DWORD numer_bledu ); void kontrolaSukcesu( BOOL sukcesu );
HANDLE hPort;
int main() { hPort = CreateFile( "COM4", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL ); if( hPort == INVALID_HANDLE_VALUE ) { cout << "BRAK DOSTEPU DO PORTU" << endl; } else { cout << "UZYSKANO DOSTEP DO PORTU COM" << endl; BOOL sukces = 0; COMSTAT comStat; DWORD Errors = 0; sukces = ClearCommError( hPort, & Errors, & comStat ); kontrolaSukcesu( sukces ); cout << "Bufor odbiorczy: " << comStat.cbInQue << endl; cout << "Bufor nadawczy: " << comStat.cbOutQue << endl; sukces = ClearCommError( hPort, & Errors, & comStat ); kontrolaSukcesu( sukces ); sukces = TransmitCommChar( hPort, 'r' ); Sleep( 1 ); kontrolaSukcesu( sukces ); cout << "Wysyl pojedynczego znaku :" << sukces << endl; sukces = ClearCommError( hPort, & Errors, & comStat ); cout << "Bufor odbiorczy: " << comStat.cbInQue << endl; cout << "Bufor nadawczy: " << comStat.cbOutQue << endl; kontrolaSukcesu( sukces ); } return 0; }
string kodyBledowSystemu( DWORD numer_bledu ) { switch( numer_bledu ) { case 1: return "ERROR_INVALID_FUNCTION"; } }
void kontrolaSukcesu( BOOL sukces ) { if( !sukces ) { DWORD numer_bledu = GetLastError(); string nazwa_bledu = kodyBledowSystemu( numer_bledu ); if( nazwa_bledu == "NOWY BLAD" ) { cout << endl; cout << "-----------------------------------------------" << endl; cout << "Nowy blad o numerze: " << numer_bledu << endl; cout << "Dokonaj nowego wpisu bledu do pamieci!!!" << endl; cout << "--------------------THE END--------------------" << endl; system( "pause" ); exit( 0 ); } else { cout << endl; cout << "-----------------------------------------------" << endl; cout << "NUMER BLEDU: " << numer_bledu << endl; cout << "NAZWA BLEDU: " << nazwa_bledu << endl; cout << "--------------------THE END--------------------" << endl; system( "pause" ); exit( 0 ); } } else { cout << "Wszystko jest ok" << endl; } }
Program wywala błąd ERROR_INVALID_FUNCTION i nie mam pojęcia z jakiego powodu. Uprzedzam pytanie dlaczego nie użyję funkcji WriteFile. Używam ale chciałem sprawdzić również działanie TransmitCommChar a ona nie działa. Nie wiem czy jest jakiś błąd w parametrach otwarcia portu COM4 albo parametrów wysyłanej ramki. Proszę o sugestię gdzie szukać błędu. Port pracuje jako standardowy port szeregowy przez łącze Bluetooth. Nie wiem czy to może mieć wpływ. |
|
DejaVu |
» 2018-02-22 18:20:09 |
|
« 1 » |