vc++串口编程(1)

      电脑技术 2006-9-15 10:59

大家好,最近研究串口编程有点心得,慢慢道与大家听听。

我在网上搜索到下面一篇文章,根据文章中的提示一步一步来做。

文章中说:“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.hmscomm.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);

好了,串口已经可以打开了。哈哈。如何使用,咱们下次再谈。
   
 

 
    

标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}