科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件基于VC的串行通信技术应用实例

基于VC的串行通信技术应用实例

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文将介绍在Windows平台下串行通信的工作机制和用VC设计串行通信程序的编程方法 。

作者:佚名 来源:论坛 2007年10月21日

关键字: VC 串行通信

  • 评论
  • 分享微博
  • 分享邮件
在工业控制中,串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛。

  本文将介绍在Windows平台下串行通信的工作机制和用Visual C++设计串行通信程序的编程方法及通信方式。

  VC中实现串行通信的编程技术,以下我们将介绍VC中几种实现串行通信的编程技术:

  利用VC++的标准通信函数

  利用VC++的标准通信函数_inp和_outp可实现串口通信。下面是一个串口初始化的程序:

void init_com(PORT)
{char i;
outp(PORT+3,0x80);
outp(PORT,0x0C);
outp(PORT+1,0);
outp(PORT+3 ,0x3a);
outp(PORT+3 ,0x03);
i=inp(PORT+5) && 0xfe;
outp(PORT+5,i);}

  使用串行通信控件MSComm

  串行通信控件MSCOmm32.OCX提供了使用RS-232来进行数据通信的所有协议,VC为该控件提供了标准的事件处理函数、过程,并通过属性和方法提供了串行通信的设置。它使用户能够方便地访问Windows串行通信驱动程序的大多数特性,包括输入、输出缓冲区的大小及决定何时使用流控制命令挂起数据传输等。

  在ClassWizard中为新创建的通信控件定义成员对象(CMSComm m_Serial),通过该对象便可以对串口属性进行设置,MSComm控件共有27个属性。以下是通过设置控件属性对串口进行初始化的实例:

BOOL CSampleDlg:: PortOpen()
{ BOOL m_Opened;
......
m_Serial.SetCommPort(2); // 指定串口号
m_Serial.SetSettings("4800,N,8,1");
// 通信参数设置
m_Serial.SetInBufferSize(1024);
// 指定接收缓冲区大小
m_Serial.SetInBufferCount(0);
// 清空接收缓冲区
m_Serial.InputMode(1);
// 设置数据获取方式
m_Serial.SetInputLen(0);
// 设置读取方式
m_Opened=m_Serail.SetPortOpen(1);
// 打开指定的串口
return m_Opened;}

  打开所需串口后,我们需要考虑串口通信的时机。在接收或发送数据过程中,可能需要监视并响应一些事件和错误,所以事件驱动是处理串行端口交互作用的一种非常有效的方法。使用OnComm事件和CommEvent属性捕捉并检查通信事件和错误的值。发生通信事件或错误时将触发OnComm事件,CommEvent属性的值将被改变,应用程序通过检查CommEvent属性值并作出相应的反应。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章