基于MFC的串口类CSerialPort的使用

1、在Dlg.h文件中添加头文件

 #include "CSerialPort.h"

2、在Dlg.h文件中定义串口类

public:
	CSerialPort m_SerialPort;			//定义串口类

3、在Dlg.h文件中定义串口类的实现函数

afx_msg LONG OnComm(WPARAM ch, LPARAM port);  //串口字符接收消息

4、在Dlg.c文件中添加消息和函数的绑定

BEGIN_MESSAGE_MAP(***Dlg, CDialogEx)
	ON_MESSAGE(WM_COMM_RXCHAR, OnComm) 	      //添加消息和函数之间的绑定
END_MESSAGE_MAP()

5、在Dlg.c文件中的OnInitDialog()函数进行串口初始化

	if (m_SerialPort.InitPort(this,1,115200))//串口1,波特率115200
	{
		m_SerialPort.OpenListenThread();	//启动串口监视线程
	}
	else
	{
		AfxMessageBox(_T("COM1没有发现,或被其它设备占用"));
	}

6、在Dlg.c文件中添加接收函数

LONG CLD_PowerDlg::OnComm(WPARAM ch, LPARAM port)  //串口接收函数的实现,对接收数据进行处理
{  
	UpdateData(1);				//读取编辑框内容
	if (port==1)				//判断端口是否是1号,不是则退出
	{
		rx_data[rx_count]=(byte)ch;
		rx_count++;

/*************************************接收数据处理****************************************/
			if((rx_data[0]==0x55) && (rx_data[1]==0xAA)&& (rx_data[2]==0xdc) && (rx_data[6]==0x44))		//判断接收数据类型
			{
				if(rx_data[7]==0x00)										//LD电源状态判断
					m_Butten_Power_False.SetIcon(IDI_ICON_RED32);			//LD电源故障,添加红色报警图片
				else
					m_Butten_Power_False.SetIcon(IDI_ICON_GREEN32);			//LD电源正常,添加绿色图片
				m_Detect_Current = ((rx_data[8] << 8) + rx_data[9])/10;		//LD回检电流值
				m_PulseWidth = (rx_data[10] << 8) + rx_data[11];			//LD电源脉宽
				m_Frequency  =  rx_data[14];								//LD电源频率
			}
			
	}

	UpdateData(0);				//更新编辑框内容
	return 0; 	
}

7、串口发送按钮函数举例:

	char *a = new char[12];
	a[0]=0x55;	a[1]=0xAA;	a[2]=0xdc;	             //数据字头标识
	a[3]=0x06;
	a[4]=0x00;	
	a[5]=0x03;	
	a[6]=0xbb;
	a[7]=0x00;			
	a[8]=0xcc;	a[9]=0x33;	a[10]=0xc3;	a[11]=0x3c;  //数据字头结尾,校验数据
	m_SerialPort.WriteData(a,12);	                 //发送
	delete a;
	a=NULL;	

8、串口CSerialPort类源程序文件在我的CSDN中下载,链接如下:
http://download.csdn.net/download/qq_33723441/9740248

##欢迎各位高手大神批评指正,也欢迎各位同道中人留言讨论!

你可能感兴趣的:(vs2010,mfc,CSerialPor,mfc,CSerialPot)