基于c语言的数据通信接口软件设计
根据gpib总线的特点和gpib接口在仪器仪表中的广泛应用,系统采用d7210c和75160bn,75161bn实现了gpib接口电论文联盟http://路,接口电路实现了双向、异步、准确可靠的数据通信任务。软件部分设计主要用到的是gpib的win32api函数驱动库。通过dll调用技术可以完成api函数库封装的对gpib设备初始化、读取数据、写入数据或命令以及清除等各种控制操作。
1数据通信接口实现
根据gpib接口特点,采用d7210c和75160bn,75161bn芯片按照如下电路可以实现计算机与仪器与测量系统间的数据通信。
图1数据通信接口电路
2对gpib接口的初始化方法
void gpib_init()//gpib初始化
{
xbyte[0x0500]=0x02;//芯片复位
xbyte[0x0500]=0x2c;//置位外部计数发生器
xbyte[0x0500]=0x8c;//设置为8bits数据传送
xbyte[0x0500]=0xa8;//低电平中断
xbyte[0x0500]=0xc0;//进入准备
xbyte[0x0100]=0x03;//设输入输出产生中断
xbyte[0x0400]=0x31;//设受命方式为1
xbyte[0x0600]=0x20;//设程控地址
xbyte[0x0600]=0xc0;//设程控地址为15
xbyte[0x0700]=0x0a;//设结束字符为“0x0a”(回车)
xbyte[0x0500]=0;//立即执行,产生本地消息
}
3数据接收函数
void rec488()//数据接收
{
char idata tem48,tem88;
char idata i,j;
tem48=xbyte[0x0100];
if((tem48&0x08)==0x08)//产生器件清除中断
{
;//不执行任何指令
}
else if((tem48&0x04)==0x04)//出错中断
{
xbyte[0x0100]=0x08;//器件清除
return;
}
else if((tem48&0x01)==0x01)//收到数据,将数据存到pdtem[]数组
{
i=0;
for(j=0;j<18;j++)
pdtem[j]=0;
tem88=xbyte[0x0000];
while(tem88!=0x0a)//遇到结束符0x0a则接收完毕
{
pdtem[i]=tem88;
i++;
tem48=xbyte[0x0100];
while((tem48&0x01)!=0x01)
tem48=xbyte[0x0100];
tem88=xbyte[0x0000];
}
strjudge();//接收完毕进入数据处理程序
4数据处理函数
void strjudge()//数据处理
{