2011-08-12 16 views
2

C++でCOMポート経由でデバイスと通信するにはどうすればよいですか?これを処理するWindowsライブラリがありますか?COMポート経由のC++通信

ありがとうございます。

EDIT:ImはWindowsを使用しています。

答えて

6

CreateFile()ReadFile()など一般的なファイルI/O API呼び出しを使用してこれを実行できます。 GetCommState()およびSetCommState()のような追加のコールを使用すると、シリアルポートを開いた後のさまざまな設定を変更できます。

HANDLE hSerial; 
hSerial = CreateFile(
    "COM1", 
    GENERIC_READ | GENERIC_WRITE, 
    0, 
    0, 
    OPEN_EXISTING, 
    FILE_ATTRIBUTE_NORMAL, 
    0); 
if(hSerial==INVALID_HANDLE_VALUE) 
{ 
    if(GetLastError()==ERROR_FILE_NOT_FOUND) 
    { 
     //serial port does not exist. Inform user. 
    } 
    //some other error occurred. Inform user. 
} 


DCB dcbSerialParams = {0}; 
dcbSerial.DCBlength=sizeof(dcbSerialParams); 
if (!GetCommState(hSerial, &dcbSerialParams)) 
{ 
    //error getting state 
} 
dcbSerialParams.BaudRate=CBR_19200; 
dcbSerialParams.ByteSize=8; 
dcbSerialParams.StopBits=ONESTOPBIT; 
dcbSerialParams.Parity=NOPARITY; 
if(!SetCommState(hSerial, &dcbSerialParams)) 
{ 
    //error setting serial port state 
} 
関連する問題