基于C语言的数据通信接口软件设计
基于语言的数据通信接口软件设计
根据GPIB总线的特点和GPIB接口在仪器仪表中的广泛应用,系统采用D7210和75160BN,75161BN实现了GPIB接口电论文联盟路,接口电路实现了双向、异步、准确可靠的数据通信任务。软件部分设计主要用到的是GPIB的IN32API函数驱动库。通过DLL调用技术可以完成API函数库封装的对GPIB设备初始化、读取数据、写入数据或命令以及清除等各种控制操作。
1数据通信接口实现
根据GPIB接口特点,采用D7210和75160BN,75161BN芯片按照如下电路可以实现计算机与仪器与测量系统间的数据通信。
图1数据通信接口电路
2对GPIB接口的初始化方法
vid gpib_init()//gpib初始化
{
XBYTE[0x0500]=0x02;//芯片复位
XBYTE[0x0500]=0x2;//置位外部计数发生器
XBYTE[0x0500]=0x8;//设置为8bits数据传送
XBYTE[0x0500]=0xa8;//低电平中断
XBYTE[0x0500]=0x0;//进入准备
XBYTE[0x0100]=0x03;//设输入输出产生中断
XBYTE[0x0400]=0x31;//设受命方式为1
XBYTE[0x0600]=0x20;//设程控地址
XBYTE[0x0600]=0x0;//设程控地址为15
XBYTE[0x0700]=0x0a;//设结束字符为&ldqu;0x0a&rdqu;(回车)
XBYTE[0x0500]=0;//立即执行,产生本地消息
}
3数据接收函数
vid re488()//数据接收
{
har idata te48,te88;
har idata i,j;
te48=XBYTE[0x0100];
if((te48≈0x08)==0x08)//产生器件清除中断
{
;//不执行任何指令
}
else if((te48≈0x04)==0x04)//出错中断
{
XBYTE[0x0100]=0x08;//器件清除
return;
}
else if((te48≈0x01)==0x01)//收到数据,将数据存到pdte[]数组
{
i=0;
fr(j=0;j<18;j++)
pdte[j]=0;
te88=XBYTE[0x0000];
hile(te88!=0x0a)//遇到结束符0x0a则接收完毕
{
pdte[i]=te88;
i++;
te48=XBYTE[0x0100];
hile((te48≈0x01)!=0x01)
te48=XBYTE[0x0100];
te88=XBYTE[0x0000];
}
strjudge();//接收完毕进入数据处理程序
4数据处理函数
vid strjudge()//数据处理
{if(strnp(pdte,"data",4)==0)//判断接收到的指令(如果前四个字符为"data0")
{
……
……
……//执行相应操作论文联盟
send_data(pdte);//将要返回的字符放到pdte[]数组,发送到计算机接收
5数据发送函数
vid send_data(har tep[64])//数据发送
{
uhar i;
i=0;
d
{
te88=XBYTE[0x0100];
hile((te88≈0x02)!=0x02)
te88=XBYTE[0x0100];
XBYTE[0x0000]=pdte[i];
i++;
}
hile(pdte[i-1]!=0x0a);//遇到结束符0x0a则发送完毕
hile(((te88=XBYTE[0x0100])≈0x02)==0x02); //防止输出中断未清除,这句可以不加}
6结论
通过编程软件实现了接口的初始化,数据的接收,数据的处理和数据的发送基本功能,在软件平台下调用板卡厂商提供的DLL对操作系统API(Appliatin Prgraing Interfae)函数的调用。API函数包含在附加名为DLL的动态连接库文件中,API函数可以做到很多的功能。因此,可以通过调用DLL的方法来调用各种API函数,来实现各种任务。