📄 d060.bmp.txt
字号:
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
0);
// comm devices must use OPEN_EXISTING
// Async I/O
// template must be o for comm devices
因为串口在打开句柄时,设置了异步(重叠)I/O操作方式,因此,必须对串口的超时
做出说明,定义超时的结构:
COMMTIMEOUTS m_CommTimeouts
再对超时变量进行设置:
//set the timeout values
m_CommTimeouts.ReadIntervalTimeout= 1000;
m_CommTimeouts.ReadTotalTimeoutMultiplier= 1000;
m_CommTimeouts.ReadTotalTimeoutConstant= 1000;
m_CommTimeouts.WriteTotalTimeoutMultiplier= 1000;
m_CommTimeouts.WriteTotalTimeoutConstant= 1000;
2)建立串口通信事件。用异步方式操作串口必须定义OVERLAPPED结构,其中hEvent
必须自己建立.要定义两个OVERLAPPED结构,分别用于读和写,同时也必须建立两个
Event,把它们放入OVERLAPPED.hEvent,代码如下:
// create events
if (m_ov.hEvent != NULL)
ResetEvent(m_ov.hEvent);
m_ov.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if (m_hWnteEvent != NULL)
ResetEvent(m_hWnteEvent);
m_hWnteEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if (m_hShutdownEvent != NULL)
ResetEvent(m_hShutdownEvent);
m_hShutdownEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
3)初始化串口,设置串口参数,代码如下:
if (SetCommTimeouts(m_hComm, &m_CommTimeouts》
{
if (SetCommMask(m_hComm, dwCommEvents》
{
if (GetCommState(m_hComm, &m_dcb》
{
m_dcb.fRtsControl = RTS_CONTROL_ENABLE; // set RTS bit high
if (BuildCommDCB(szBaud, &m_dcb》
{
if (SetCommState(m_hComm, &m_dcb》
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -