前言:在VC环境下进行串口开发的方式有很多,如可以用微软自带的Mscomm控件、win32方式利用CreateFile函数操作串口、还可以利用moxa公司的串口库pcomm进行开发等方式。在本例中,笔者将以另一个更简单、好用的串口库来说明VC环境下的串口开发。
本例中要介绍的CnComm是一个很好的串口库,使用时只需要引用CnComm.h这个头文件即可,(CnComm头文件下载),避免了使用其他库,如pcomm时需要配置dll、lib库的复杂设置。下面简要介绍一下VC环境下,利用CnComm这个串口库进行串口开发的简要步骤。
1.第一个步骤当然是把CnComm.h这个头文件包含到当前工程中。
2.在父类CnComm上派生出一个子类,例如
class MyComTest:public CnComm
{
public:
MyComTest();
};
3.在派生类里添加串口发送、接收函数
(注意,接收消息处理函数OnReceive名称不要更改,用OnReceive就好,发送函数SendMsg函数名任意)
class MyComTest:public CnComm
{
public:
MyComTest();
void SendMsg(char *buf);
void OnReceive();
};
完成发送、接收函数的实现。
void MyComTest::SendMsg(char *buf)
{
Write(buf);
}
void MyComTest::OnReceive()
{
char buf[1024];
Read(buf,1024);
}
4.在主窗口类中,定义一个MyComTest类的对象,并设置窗口句柄
MyComTest m_com;//参数默认就行,默认打开串口时启动监视线程 异步重叠方式
在主窗口中为m_com对象设置串口句柄
m_com.SetWnd(this->m_hWnd);//没有此步骤,无法响应串口接收OnReceive函数
5.打开串口
m_com.open(nCom);//nCom为串口号,如假如nCom=1,表示打开COM1
如需要对串口参数进行配置,在串口打开情况下,进行如下操作
m_com.SetState(sSetting);//sSetting为字符串类型,如假如sSetting="115200,n,8,1",波特率115200,无校验方式,8个数据位,1个停止位
6.关闭串口
m_com.close;
当然,上面说的只是串口操作的一个简单构架,真正要在自己的工程里实现串口操作,还有许多地方要完善。这些就需要根据具体情况来定了,不过万变不离其宗,掌握了基本原理,一切都好办了。