计算机主机有gpib接口吗,PC104模块与通用并行接口(GPIB)通讯的实现

摘要: 本文介绍了基于Windows CE 的PC104模块与基于MCS51单片机的GPIB接口构成自动测试仪器的实现方法,其中GPIB接口与单片机间的数据传输和PC104模块与单片机之间的串行通信是系统实现的关键。本文详细介绍了整个系统的软件与硬件设计。

关键词:GPIB接口;PC104;Windows CE;串行通信;多线程

1 引言

目前,先进的嵌入式工业计算机PC104,以其优良的品质、高可靠性及模块化。广泛应用于工业控制、航空航天、智能仪器仪表、通信数控、自动化生产设备、数据采集、便携式计算机等领域。在PC104模块上一般运行实时操作系统(RTOS),Windows CE是一紧凑、高效和可扩展的操作系统,它是面向32位移动智能设备的模块化抢先式多任务实时嵌入式操作系统。基于Windows CE的PC104模块能够方便快速构建新一代内存少体积小的智能设备。而GPIB总线又称IEEE-488总线标准,是组建自动测试系统的通用国际标准接口。作为一种用途广、功能强的8位数据通道并行接口标准,特别适用于实时控制与快速数据采集等场合。随着通用并行接口的发展与测量自动化上的广泛应用,为了使仪器能够与装配有GPIB接口的仪器构成自动测试系统,GPIB接口是必不可少的。本文首先介绍如何将GPIB接口与PC104模块进行硬件连接,然后讲述了单片机中进行数据转换的软件编程思路和Windows CE下的串行口软件编程方法。

2 硬件实现

用MCS-51单片机对来自PC104模块的串口信号和来自通用接口电路上的数据进行转发是本系统的关键。通用接口电路由GPIB接口芯片和信号驱动芯片构成,常用的GPIB接口转换芯片有几种,如MC68488,intel 8291、8292、8293及PD7210等,本文以intel 8291为例介绍数据转换的方法。

利用单片机的串口,将接收到的由PC104计算机发出的来自串行接口芯片的GPIB命令,按IEEE488的规则,通过GPIB接口芯片发送到GPIB总线,并将从总线上接收到的数据从接口芯片中取回,经由串行接口芯片发送到PC104模块上的RS-232C串口。其硬件框图如图1所示:

图1 :GPIB接口转RS232接口硬件框图

3 软件设计

3.1  MCS-51单片机的GPIB接口通信编程

这部分的软件编程主要是实现将RS-232接口收到的命令转化为IEEE488接口的命令,即按IEEE488的规则将命令送出,同时将从IEEE488接口传来的数据转发至串口。

① 设备初始化

为了接口芯片的正常工作,需要正确地初始化GPIB接口芯片。a.系统复位,发送本地芯片复位命令;b.设置设备地址;c.设置系统时钟;d.设置中断条件;e.设置数据接收发送条件;f.设置数据接收应答模式;e.发出立即执行命令。还要设置串口通信方式如下,1位起始位,8位数据位,1位停止位,无奇偶校验,波特率38400bit/s。传输数据采用ASCII模式。指令形式的格式为“SYN****@”,其中‘SYN’和 ‘@’ 分别表明该指令的起始和结束,‘****’为指令内容。

② 基本功能的实现

下面讲述了将GPIB接口信号转发到串口的方法,从串口到GPIB接口数据的传输可以用类似的方法实现。对来自GPIB总线上的信号接收采用中断方式,并在收到停止位时置位结束标志,以通知主程序进行串口数据发送。中断接收子程序的软件流程如图2所示

图2 GPIB接收中断子程序

当主程序根据结束标志检测到有新的来自GPIB总线上的数据时,通过串行口将数据发送到RS232总线上由PC104接收。在没有检测到结束标志时主程序处于等待状态。其软件流程图如图3所示:

图3:主程序流程图

3.2  Windows CE 下PC104模块的串口通信编程

Windows CE打开与关闭串口设备与打开与关闭文件的操作相同,所以串口编程使用与文件I/O操作完全相同的函数,即使用文件I/O函数CreateFile、ReadFile、WriteFile、CloseHandle访问串口。用CreateFile打开串口,一旦串口被打开和配置后就可以用WriteFile向串口发送数据,也可以用ReadFile从串口读出数据。由于Windows CE 下只支持同步文件访问,不支持重叠I/O。使用多线程管理串口通信可以充分利用资源,提高数据处理速度。创建线程监听串口并使用消息传递机制通知串口处理函数读取接收缓冲区的数据。

PC104串口通信的基本步骤如下:

news_1102863

使用SetupComm函数设置参数设备参数,读写缓冲区大小。SetCommMask函数设定监视事件EV_RXCHAR,该事件表示接受到任何字符并放进接受缓冲区。SetCommTimeouts函数设置时间超时间隔与总超时时间,将时间超时间隔设为最大,把总超时设为0,导致ReadFile立即返回并完成操作。通过设置超时时间,将需要等待的读写操作阻塞在驱动程序内部的事件对象中,节省了在串行发送和接收操作中的CPU资源。用SetCommState函数将DCB结构重新配置于串口设备。

③ 如果成功设置串口,启动监视器串口线程,线程函数为CommProc,并将当前指针This作为参数传给CommProc,启动线程的方法如下:

news_1102863

news_1102863

news_1102863

4 结论

PC104上的串口通信程序在上位机中使用Embeded Visual C++3.0编写,并下载到安装有Windows CE的目标机PC104中,按图1将系统连接好,并将GPIB接口连到装有GPIB板卡的主控计算机。运行串口通信程序,并在主控计算机中运行控制程序,PC104模块与主控计算机间通过GPIB总线进行正常通信。采用这种硬件和软件设计方式构成的测控系统能够应用于各种仪器和装置中,并且具有设计简单、操作方便、通信可靠等优点,非常适合各种自动测试系统。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值