大家好,最近研究串口编程有点心得,慢慢道与大家听听。
我在网上搜索到下面一篇文章,根据文章中的提示一步一步来做。
文章中说:“32位下串口通信程序可以用两种方法实现:利用ActiveX控件;使用API 通信函数。使用ActiveX控件,程序实现非常简单,结构清晰,缺点是欠灵活;使用API 通信函数的优缺点则基本上相反。”
看来还是用微软的MSComm控件比较方便。
好,接下来第一步:
“ ⑴.在当前的Workspace中插入MSComm控件。
Project菜单------>Add to Project---->Components and Controls----->Registered ActiveX Controls--->选择Components: Microsoft Communications Control, version 6.0 插入到当前的Workspace中。 结果添加了类CMSComm(及相应文件:mscomm.h和mscomm.cpp )。”
我也是这么做的。呵呵。毕竟初学。接下来:
“⑵.在MainFrm.h中加入MSComm控件。
protected:
CMSComm m_ComPort;
在Mainfrm.cpp中CMainfrm::OnCreare()里添加如下代码,目的是创建一个comm控件:
DWORD style=WS_VISIBLE|WS_CHILD;
if (!m_ComPort.Create(NULL,style,CRect(0,0,0,0),this,ID_COMMCTRL))
{
TRACE0("Failed to create OLE Communications Control\n");
return -1; // fail to create
}
”
红色标出了ID_COMMCTRL是创建出的comm控件的ID号,因为没有定义过,所以需要大家自己在Resource.h中添加。(原文中老大没说明这个地方,一编译就出错。后来才发现是这个东西在作怪,具体添加到什么地方不用我说了吧。或者你把ID_COMMCTRL直接用一个数比如10000替代也可以。)
接下来:
“
⑶.初始化串口
m_ComPort.SetCommPort(1); //选择COM?
m_ComPort. SetInBufferSize(1024); //设置输入缓冲区的大小,Bytes
m_ComPort. SetOutBufferSize(512); //设置输入缓冲区的大小,Bytes
if(!m_ComPort.GetPortOpen()) //打开串口
m_ComPort.SetPortOpen(TRUE);
m_ComPort.SetInputMode(1); //设置输入方式为二进制方式
m_ComPort.SetSettings("9600,n,8,1"); //设置波特率等参数
m_ComPort.SetRThreshold(1); //为1表示有一个字符引发一个事件
m_ComPort.SetInputLen(0);
”
好了,串口已经可以打开了。哈哈。如何使用,咱们下次再谈。
回复Comments
{commenttime}{commentauthor}
{CommentUrl}
{commentcontent}