科技行者

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

知识库

知识库 安全导航

至顶网软件频道基础软件利用Win32API开发串行通信程序

利用Win32API开发串行通信程序

  • 扫一扫
    分享文章到微信

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

本文分析了在Windows环境下用VC 语言编写串行通信程序的技术。

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

关键字:

  • 评论
  • 分享微博
  • 分享邮件
3、系统组成及功能

  本系统采用分布式上下位机结构,上位机以Windows和PC机作为软硬件资源,下位机由MOTOROLA单片机MC68HC908GP32控制。上下位机之间采用RS232通讯,实现数据交换。利用串行通信的方式,将现场采集的数据交由计算机进行处理,实现对现场设备的监测和控制。各组成部分功能如下:

  3.1上位机

  以工业PC机、Windows操作系统及支持串行通讯程序的监控软件作为软硬件环境;

  3.2下位机

  采用MOTOROLA公司生产的高性能CMOS单片机MC68HC908GP32。MC68HC908GP32IDK在线编程开发系统是基于MC68HC908GP32的开发应用系统,它由核心子板和目标评估母板两部分组成。将目标评估母板作为本系统下位机的硬件接口板,利用目标评估母板上的可编程串行通信接口SCI即可实现MOTOROLA单片机与PC机的串行通信。

  在使用串行通信接口SCI之前,应对其进行初始化,主要包括波特率寄存器(BAUD)、串行通信数据寄存器(SCDR)、串行通信控制寄存器(SCCR)、串行通信状态寄存器(SCSR)初始化。其中,串行通信状态寄存器SCSR为产生SCI系统中断逻辑电路提供输入信号。对单片机的编程采用汇编语言,其接收和发送子程序如下:

GETD: BRCLR 5,SCSR,GETD;//接收子程序
LDA SCDR
RTS
SEND: BRCLR 7,SCSR,SEND;//发送子程序
STA SCDR
RTS

  4、上位机串行通信程序

  在Windows环境下,利用Visual C++6.0实现串行通信主要有两种编程方法:

  (1) 使用Windows Visual C++6.0 ActiveX控件;

  (2) 调用Windows的API函数。

  第一种方法虽然简单易用,但由于必须拿到对话框中使用,在一些需要在线程中实现通信的应用场合,控件的使用显得捉襟见肘。而且这种方法经常发生数据丢失的情况,不能满足实时系统的需求。第二种方法要复杂一些:API是附带在Windows内部的一个极其重要的组成部分。Windows的32位API主要是一系列很复杂的函数、消息的集合,它可以看作是Windows系统为在其下运行的各种开发系统提供的开放式通用功能增强接口。调用API函数,既能保证数据的完整,又可以让我们清楚地掌握串口通信的机制,熟悉各种配置和自由灵活采用不同的流控进行串口通信。所以,在本系统中通过调用API函数来实现串行通信。

  4.1程序设计思路

  串口通信应用程序设计的总体思路是:首先,确定要打开的串口名、波特率、奇偶校验方式、数据位、停止位,传递给CreateFile()函数打开特定串口;其次,为了保护系统对串口的初始设置,调用GetCommTimeouts()得到串口的原始设置;然后,初始化DCB对象,调用SetCommState()设置DCB,调用SetCommTimeouts()设置串口超时控制;再次,设置串口接发送数据的缓冲区大小,串口的设置就基本完成,之后就可以用ReadCommBlock/WriteCommBlock来读/写串口了。

  一般来说,串口的读写由串口读写线程完成,这样可以避免读写阻塞时主程序死锁。本程序是对于全双工的串口读写,所以分别开启读线程和写线程。

  4.2编程技术细节

图1为本程序的编程步骤。



  4.2.1打开串行口

  在Windows下,串行口作为文件处理,使用文件操作对串行口进行处理。调用CreateFlie打开串口,如果成功,返回一个操作句柄,该句柄供随后对串行口的设置、读写等操作用。

if ((COMDEV( npTTYInfo ) = CreateFile( szPort,
GENERIC_READ | GENERIC_WRITE, //对串口可进行读写操作
0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL |
FILE_FLAG_OVERLAPPED, // 采用异步方式读写串口
NULL )) = = (HANDLE) -1 )
return ( FALSE ) ; //若打开串口失败,异常错误
else //打开串口成功,继续下面的操作
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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