📄 com.h
字号:
//串口控制类,基本用WINAPI实现,可以不用做修改的用在BCB程序中
//读数据采用事件驱动方式,用一个线程处理相应事件,收到的字符用消息发往父窗口
//由于我编的软件中写串口的数据不多,所以采用直接写的方式
//以下代码在BCB5/Win98下编译通过,在Win95/Win98/Win2000下运行良好
//---------------------------------------------------------------------------
//头文件Com.h
//---------------------------------------------------------------------------
//定义串口控制类
#ifndef ComH
#define ComH
//---------------------------------------------------------------------------
#define WM_COMM_RXCHAR WM_USER+1 //自定义消息:串口接收到一个字符
//typedef unsigned char BYTE;
//typedef unsigned int WORD;
//---------------------------------------------------------------------------
class TSerialPort
{
public:
TSerialPort(); //构造函数
~TSerialPort(); //析构函数
//串口初始化,缺省参数为:COM1,19200Baud,无奇偶校验,8数据为,1停止位,监控读写事件
bool InitPort(TForm* pPortOwner,unsigned uPortNo=1,unsigned uBaud=9600,
char cParity='o',unsigned uDataBits=8,unsigned uStopBits=1,
DWORD dwCommEvents=EV_RXCHAR);
bool StartMonitoring(); //启动串口监控线程
int RestartMonitoring(); //恢复串口监控线程
int StopMonitoring(); //挂起口监控线程
void __fastcall WriteToPort(unsigned char ucTxData); //向串口写一个字符
BYTE SendFrame(BYTE cmd,WORD DataLen,BYTE StandBy,BYTE *data);//发送一帧数据
private:
void __fastcall Clear(); //清除占用的资源
void __fastcall ProcessErrorMessage(char* ErrorText); //处理出错信息
static DWORD WINAPI CommThread(LPVOID lpvParam); //串口线程的实现函数
static void __fastcall ReceiveChar(TSerialPort* Port); //接收一个字符
bool WriteChar(unsigned char ucChar); //向串口写一个字符
HANDLE m_hComm; //串口句柄
HANDLE m_hThread; //串口操作线程
HANDLE m_hShutdownEvent; //关闭串口事件句柄
//事件数组,每个元素代表一个事件,每个串口线程监控两个事件,
//即读和关闭串口事件,读事件即重叠结果中的hEvent事件
HANDLE m_hEventArray[2];
OVERLAPPED m_OverLapped; //重叠结果
COMMTIMEOUTS m_CommTimeouts; //超时参数
DCB m_DCB; //串口设备控制块
DWORD m_dwCommEvents; //串口要监控的事件
TForm* m_pOwner; //父窗口句柄
unsigned m_uPortNo; //串口号
bool m_bThreadAlive; //串口线程存在标志
};
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -