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

📄 com.h

📁 串口数据采集的上位机源码
💻 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 + -