⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialport.h

📁 串口通信高级编程
💻 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 + -