iam*_*aza 26 c++ serial-port mingw
我使用16位编译器在C++中完成了串口RS-232连接(我使用的是Turbo C++ IDE).它包含头文件bios.h
,其中包含从端口读取值所需的所有函数.现在我想使用C++ 32位Mingw编译器从串口读取值.我使用Dev CPP作为我的IDE.在这里我找不到bios.h
.在Mingw中是否有任何特殊的头文件可用于此目的?我现在使用的是32位编译器,因为在我的大学项目中,我必须使用Exception处理,我猜在Turbo C中不支持.请帮帮我.
oll*_*llo 40
请看这里:
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);
Run Code Online (Sandbox Code Playgroud)
现在您可以使用WriteFile()
/ ReadFile()
来写/读取字节.别忘了关闭你的连接:
CloseHandle(serialHandle);
Run Code Online (Sandbox Code Playgroud)