vC++コンパイラの使用方法シリアルポートにアクセスする方法。 Bioscom()関数は、ターボCで使用することができます。Cプログラムでシリアル通信を行う方法は?
0
A
答えて
1
This page Microsoft Developer Networkには、コンパイラの選択に基づいてターゲットとする環境を想定したWindowsのシリアルポートの操作方法が紹介されています。
0
MSDOSまたは非常に古いバージョンのWindows(およびTurbo Cに固有のもの)を使用している場合のみ、BIOS機能が利用できます。 Windowsの現代版では、シリアルI/Oを実行するためにOS APIを使用する必要があります。
2
CreateFile
のように適切なcomデバイスを開く必要があります。あなたのニーズに適応してください。
// Handle of the communication connection
void *comHandle;
// Port parameters, set to your own needs
unsigned portIndex;
unsigned baudRate;
unsigned dataBits;
Parity parity;
unsigned stopBits;
bool handShake;
int readIntervalTimeout;
int readTotalTimeoutMultiplier;
int readTotalTimeoutConstant;
int writeTotalTimeoutMultiplier;
int writeTotalTimeoutConstant;
DCB dcb;
COMMTIMEOUTS ct;
// Create COM-device name string
char comDevice[20];
sprintf(comDevice, "\\\\.\\COM%d", portIndex);
// Open serial port
_comHandle = CreateFile(comDevice, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (comHandle == INVALID_HANDLE_VALUE)
{
return false;
}
ct.ReadIntervalTimeout = readIntervalTimeout;
ct.ReadTotalTimeoutMultiplier = readTotalTimeoutMultiplier;
ct.ReadTotalTimeoutConstant = readTotalTimeoutConstant;
ct.WriteTotalTimeoutMultiplier = writeTotalTimeoutMultiplier;
ct.WriteTotalTimeoutConstant = writeTotalTimeoutConstant;
if (!GetCommState(_comHandle,&dcb))
{
disconnect();
return false;
}
dcb.BaudRate = baudRate;
dcb.ByteSize = (BYTE)dataBits;
dcb.Parity = (parity == None) ? NOPARITY : ((parity == Even) ? EVENPARITY : ODDPARITY);
dcb.StopBits = (stopBits > 1) ? TWOSTOPBITS : ONESTOPBIT;
dcb.fRtsControl = handShake ? RTS_CONTROL_HANDSHAKE : RTS_CONTROL_ENABLE;
dcb.fOutxCtsFlow = handShake;
dcb.fOutxDsrFlow = handShake;
dcb.fDtrControl = handShake ? DTR_CONTROL_HANDSHAKE : DTR_CONTROL_ENABLE;
dcb.fDsrSensitivity = handShake;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
dcb.fErrorChar = FALSE;
dcb.fNull = FALSE;
dcb.fAbortOnError = TRUE;
// Set port state
if(!SetCommState(_omHandle, &dcb) ||
!SetCommTimeouts(comHandle, &ct) ||
!SetupComm(comHandle, 64, 64) ||
!PurgeComm(comHandle, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR))
{
disconnect();
return false;
}
呼び出されるさまざまな機能の適切なMSDNエントリをお読みください。また、簡潔にするために、切断方法を省略しました。
2
これらは、serial communication with C++に関するコードプロジェクトの多くの記事です。これは返された最初のarticleです。基本的には、ファイルI/O操作でポートにアクセスします。これは少し複雑で、私はこのタスクのための適切なライブラリを見つけることをお勧めします。
関連する問題
- 1. Cでのシリアル通信
- 2. LinuxでのC++シリアル通信
- 3. シリアル通信C++ SerialPort-Class
- 4. C#UWPシリアル通信が
- 5. C++ Arduinoとのシリアル通信
- 6. シリアル通信Arduino C++ Builder
- 7. シリアル通信デザインパターン
- 8. シリアル通信:python
- 9. matlabシリアル通信
- 10. Objective-cでシリアル化を行う方法は?
- 11. 目的のシリアル通信エラー-C:リソースビジー
- 12. アルドゥイーノとC++シリアル通信同期
- 13. c#とarduinoの間のシリアル通信
- 14. C++のARDUINOとのシリアル通信
- 15. シリアル経由でNCI NFCコントローラと通信する方法は?
- 16. シリアル通信で文字列を送信
- 17. LINUXでのシリアル通信(RS232)
- 18. osxでUSBシリアル通信を盗聴する方法
- 19. Matlab arduinoシリアル通信
- 20. シリアル通信のinStream.read
- 21. PortInUseException - Javaシリアル通信
- 22. Androidでクライアントサーバーの通信を行う方法は?
- 23. アンドロイドでソケット通信を行う方法は?
- 24. arduinoとのシリアル通信用のLinuxカーネルモジュールの作成方法は?
- 25. C#でJSONの逆シリアル化を行う方法
- 26. C#でのクライアントとサーバのソケット通信を行うC#
- 27. シリアル通信後に値を返す方法NodeJS
- 28. ST-Link V2を使ってUART通信を行う方法は?
- 29. IOCPによるシリアル通信
- 30. linuxのPHPシリアル通信
Windows XPでシリアルポートにアクセスするには、OS APIとは何ですか? – Shashikiran
彼の答えでunwindが投稿したリンクを参照 –