一个人如何用c++通过com端口与设备通信?有没有处理这个问题的windows库?先谢了。编辑:我用的是Windows。
fhity93d1#
您可以使用CreateFile()和ReadFile()等通用文件I/O API调用来完成此操作。GetCommState()和SetCommState()等附加调用可用于在串行端口打开后更改其各种设置。
CreateFile()
ReadFile()
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 }
mnowg1ta2#
如果你用谷歌搜索的话,网上有很多示例代码。这里有一个例子:http://web.archive.org/web/20220426073821/http://members.ee.net/brey/Serial.pdf
2条答案
按热度按时间fhity93d1#
您可以使用
CreateFile()
和ReadFile()
等通用文件I/O API调用来完成此操作。GetCommState()
和SetCommState()
等附加调用可用于在串行端口打开后更改其各种设置。mnowg1ta2#
如果你用谷歌搜索的话,网上有很多示例代码。这里有一个例子:http://web.archive.org/web/20220426073821/http://members.ee.net/brey/Serial.pdf