利用API模式对COM口串行通信的例子有吗
利用API方式对COM口串行通信的例子有吗?
哪位大侠可以写一个最简单的利用API方式,而不是MFC控件的方式,给COM1口发送一个数据的例子
------解决方案--------------------
用 CreateFile 函数打开Com1串口;
用 GetCommState 函数获取串口属性,并对属性参数进行设置;
用 SetCommState 函数对修改好的属性进行设置;
用 PurgeComm 函数做一些清理输入或输出缓冲区的工作;
用 ReadFile 函数从串口中读取数据;
用 WriteFile 函数将数据写到串口中;
用 CloseHandle 函数关闭串口资源。
------解决方案--------------------
这篇(http://lishaoan77.blog.163.com/blog/static/6508739420104286521270/)文章甚至连下位机和时序波形都涉及到了,非常全面。
------解决方案--------------------
HANDLE hComm = NULL;
hComm = CreateFile(_T("COM1"), GENERIC_READ
------解决方案--------------------
GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, 0, NULL);
if (hComm == INVALID_HANDLE_VALUE) {
MessageBox(_T("打开串口COM1失败!"));
return;
}
DCB dcb;
GetCommState(hComm, &dcb);
dcb.BaudRate = CBR_9600;
dcb.StopBits = 1;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
SetCommState(hComm, &dcb);
BYTE buffer[10] = "abcdefghi";
BYTE bufferRead[200] = {0};
DWORD dwWrite;
DWORD dwRead;
// PurgeComm(hComm, PURGE_TXCLEAR
------解决方案--------------------
PURGE_RXCLEAR); // 不是必须的步骤
// 写串口
WriteFile(hComm, buffer, 10, &dwWrite, NULL);
// 读串口
COMSTAT comState;
DWORD errorCode;
// 获取串口设备的当前状态
ClearCommError(hComm, &errorCode, &comState);
// cbInQue:The number of bytes received by the serial provider but not yet read by a ReadFile operation.
if (comState.cbInQue != 0)
ReadFile(hComm, bufferRead, comState.cbInQue, &dwRead, NULL);
CloseHandle(hComm);
哪位大侠可以写一个最简单的利用API方式,而不是MFC控件的方式,给COM1口发送一个数据的例子
------解决方案--------------------
用 CreateFile 函数打开Com1串口;
用 GetCommState 函数获取串口属性,并对属性参数进行设置;
用 SetCommState 函数对修改好的属性进行设置;
用 PurgeComm 函数做一些清理输入或输出缓冲区的工作;
用 ReadFile 函数从串口中读取数据;
用 WriteFile 函数将数据写到串口中;
用 CloseHandle 函数关闭串口资源。
------解决方案--------------------
这篇(http://lishaoan77.blog.163.com/blog/static/6508739420104286521270/)文章甚至连下位机和时序波形都涉及到了,非常全面。
------解决方案--------------------
HANDLE hComm = NULL;
hComm = CreateFile(_T("COM1"), GENERIC_READ
------解决方案--------------------
GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, 0, NULL);
if (hComm == INVALID_HANDLE_VALUE) {
MessageBox(_T("打开串口COM1失败!"));
return;
}
DCB dcb;
GetCommState(hComm, &dcb);
dcb.BaudRate = CBR_9600;
dcb.StopBits = 1;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
SetCommState(hComm, &dcb);
BYTE buffer[10] = "abcdefghi";
BYTE bufferRead[200] = {0};
DWORD dwWrite;
DWORD dwRead;
// PurgeComm(hComm, PURGE_TXCLEAR
------解决方案--------------------
PURGE_RXCLEAR); // 不是必须的步骤
// 写串口
WriteFile(hComm, buffer, 10, &dwWrite, NULL);
// 读串口
COMSTAT comState;
DWORD errorCode;
// 获取串口设备的当前状态
ClearCommError(hComm, &errorCode, &comState);
// cbInQue:The number of bytes received by the serial provider but not yet read by a ReadFile operation.
if (comState.cbInQue != 0)
ReadFile(hComm, bufferRead, comState.cbInQue, &dwRead, NULL);
CloseHandle(hComm);