16ビットコンパイラを使用してC++でシリアルポートRS-232接続を行いました(Turbo C++ IDEを使用していました)。ポートから値を読み取るために必要なすべての関数を含むヘッダーファイルbios.h
が含まれていました。ここで、C++ 32ビットMingwコンパイラを使用してシリアルポートから値を読み取ります。 IDEとしてDev CPPを使用しています。ここではbios.h
が見つかりませんでした。 Mingwでこの目的に使用できる特別なヘッダーファイルはありますか?私は大学のプロジェクトで例外処理を使用するようになったため、現在32ビットコンパイラを使用しています。例外処理はTurbo Cではサポートされていないと思われます。
こちらをご覧ください:
1) これはWindows(MinGWを含む)およびLinuxで使用できます。代わりに、例としてコードのみを使用できます。
2) Windowsでシリアルポートを使用する方法の詳細なチュートリアル
3) これをMinGWでそのまま使用できます
以下に、非常に単純なコードをいくつか示します(エラー処理や設定なし)。
_#include <windows.h>
/* ... */
// Open serial port
HANDLE serialHandle;
serialHandle = CreateFile("\\\\.\\COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
// Do some basic settings
DCB serialParams = { 0 };
serialParams.DCBlength = sizeof(serialParams);
GetCommState(serialHandle, &serialParams);
serialParams.BaudRate = baudrate;
serialParams.ByteSize = byteSize;
serialParams.StopBits = stopBits;
serialParams.Parity = parity;
SetCommState(serialHandle, &serialParams);
// Set timeouts
COMMTIMEOUTS timeout = { 0 };
timeout.ReadIntervalTimeout = 50;
timeout.ReadTotalTimeoutConstant = 50;
timeout.ReadTotalTimeoutMultiplier = 50;
timeout.WriteTotalTimeoutConstant = 50;
timeout.WriteTotalTimeoutMultiplier = 10;
SetCommTimeouts(serialHandle, &timeout);
_
これで、WriteFile()
/ReadFile()
を使用してバイトを読み書きできるようになりました。接続を閉じることを忘れないでください:
_CloseHandle(serialHandle);
_