📄 serialport.h
字号:
// SerialPort.h: interface for the CSerialPort class.
// 多线程的串口通讯类 参考了 冯华亮 的相似类, 在此表示感谢
// 使用者请参考源代码里的注释
// 特别说明: 本类支持 UNICODE
#if !defined(AFX_SERIALPORT_H__8D704AAD_9176_4E4C_BFD0_7FE413853C08__INCLUDED_)
#define AFX_SERIALPORT_H__8D704AAD_9176_4E4C_BFD0_7FE413853C08__INCLUDED_
#include <windows.h>
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define WM_COMM_RXCHAR WM_USER+213 //自定义消息:串口接收到一个字符
class CSerialPort
{
typedef struct tagCOMMREADTHREAD
{
HWND hwndParent ;
HANDLE hCommPort ;
BOOL bTerminated;
};
typedef tagCOMMREADTHREAD MONITORCOMMPARAMS;
typedef tagCOMMREADTHREAD* LPMONITORCOMMPARAMS;
public:
BOOL WriteToPort(LPCTSTR lpszOutPut);
//串口初始化,默认参数为:COM1,9600Baud,无奇偶校验,8数据位,1停止位,监控读事件
BOOL InitPort(HWND hParent, DWORD dwPortNo=1,
DWORD dwBaud=9600,TCHAR cParity='N', DWORD dwDataBits = 8, DWORD dwStopBits = 1,
DWORD dwCommEvents = EV_RXCHAR);
BOOL WriteToPort(TCHAR ucTxChar); //向串口写一个字符
void StopMonitoring();
void StartMonitoring();
CSerialPort();
virtual ~CSerialPort();
private:
HWND m_hwndParent; //宿主窗口句柄
COMMTIMEOUTS m_CommTimeouts;//超时参数
DCB m_CommDCB; //串口设备控制块
OVERLAPPED m_ov_Write; //异步写串口时用到的重叠结构
HANDLE m_hComm; //串口句柄
HANDLE m_hMonitorThread; //监控线程句柄
MONITORCOMMPARAMS m_Param;
private:
static BOOL IsNT(VOID);
static void ReceiveAChar(LPMONITORCOMMPARAMS lpParameter, LPOVERLAPPED lpOv);
static DWORD WINAPI MonitorCommThreadProc(LPVOID lpParameter);
static void ProcessErrorMessage(LPTSTR ErrorText);
};
#endif // !defined(AFX_SERIALPORT_H__8D704AAD_9176_4E4C_BFD0_7FE413853C08__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -