国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于C語言的數(shù)據(jù)通信接口軟件設(shè)計(jì)

2012-04-29 00:44:03杜福鵬,阮濱
電腦知識(shí)與技術(shù) 2012年2期
關(guān)鍵詞:程控

杜福鵬,阮濱

摘要:該文從C程序設(shè)計(jì)語言的特點(diǎn)出發(fā),論述了自動(dòng)測(cè)量系統(tǒng)中數(shù)據(jù)通信接口的軟件開發(fā)方法,實(shí)現(xiàn)了GPIB接口的初始化,數(shù)據(jù)接收,數(shù)據(jù)處理,數(shù)據(jù)發(fā)送的功能。

關(guān)鍵詞:GPIB;DLL調(diào)用;程控

中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)02-0335-03

Software C-based Design for Data Communication Interface

DU Fu-peng, RUAN Bin

(92493 Army 89 Unit, Huludao 125000, China)

Abstract: This article from the C programming language characteristics, discusses the automatic measurement system, data communication interface of the software development methodology, to achieve a GPIB interface initialization, data reception, data processing, data transmis? sion functions.

Key words: GPIB; DLL calls; program-controled

根據(jù)GPIB總線的特點(diǎn)和GPIB接口在儀器儀表中的廣泛應(yīng)用,系統(tǒng)采用D7210C和75160BN,75161BN實(shí)現(xiàn)了GPIB接口電路,接口電路實(shí)現(xiàn)了雙向、異步、準(zhǔn)確可靠的數(shù)據(jù)通信任務(wù)。軟件部分設(shè)計(jì)主要用到的是GPIB的WIN32API函數(shù)驅(qū)動(dòng)庫。通過DLL調(diào)用技術(shù)可以完成API函數(shù)庫封裝的對(duì)GPIB設(shè)備初始化、讀取數(shù)據(jù)、寫入數(shù)據(jù)或命令以及清除等各種控制操作。

1數(shù)據(jù)通信接口實(shí)現(xiàn)

根據(jù)GPIB接口特點(diǎn),采用D7210C和75160BN,75161BN芯片按照如下電路可以實(shí)現(xiàn)計(jì)算機(jī)與儀器與測(cè)量系統(tǒng)間的數(shù)據(jù)通信。

圖1數(shù)據(jù)通信接口電路

2對(duì)GPIB接口的初始化方法

void gpib_init()//gpib初始化

{

XBYTE[0x0500]=0x02;//芯片復(fù)位

XBYTE[0x0500]=0x2c;//置位外部計(jì)數(shù)發(fā)生器

XBYTE[0x0500]=0x8c;//設(shè)置為8bits數(shù)據(jù)傳送

XBYTE[0x0500]=0xa8;//低電平中斷

XBYTE[0x0500]=0xc0;//進(jìn)入準(zhǔn)備

XBYTE[0x0100]=0x03;//設(shè)輸入輸出產(chǎn)生中斷

XBYTE[0x0400]=0x31;//設(shè)受命方式為1

XBYTE[0x0600]=0x20;//設(shè)程控地址

XBYTE[0x0600]=0xc0;//設(shè)程控地址為15

XBYTE[0x0700]=0x0a;//設(shè)結(jié)束字符為“0x0a”(回車)

XBYTE[0x0500]=0;//立即執(zhí)行,產(chǎn)生本地消息

}

3數(shù)據(jù)接收函數(shù)

void rec488()//數(shù)據(jù)接收

{

char idata tem48,tem88;

char idata i,j;

tem48=XBYTE[0x0100];

if((tem48&0x08)==0x08)//產(chǎn)生器件清除中斷

{

;//不執(zhí)行任何指令

}

else if((tem48&0x04)==0x04)//出錯(cuò)中斷

{

XBYTE[0x0100]=0x08;//器件清除

return;

}

else if((tem48&0x01)==0x01)//收到數(shù)據(jù),將數(shù)據(jù)存到pdtem[]數(shù)組

{

i=0;

for(j=0;j<18;j++)

pdtem[j]=0;

tem88=XBYTE[0x0000];

while(tem88!=0x0a)//遇到結(jié)束符0x0a則接收完畢

{

pdtem[i]=tem88;

i++;

tem48=XBYTE[0x0100];

while((tem48&0x01)!=0x01)

tem48=XBYTE[0x0100];

tem88=XBYTE[0x0000];

}

strjudge();//接收完畢進(jìn)入數(shù)據(jù)處理程序

4數(shù)據(jù)處理函數(shù)

void strjudge()//數(shù)據(jù)處理

{

if(strncmp(pdtem,"data",4)==0)//判斷接收到的指令(如果前四個(gè)字符為"data0")

{

……

……

……//執(zhí)行相應(yīng)操作

send_data(pdtem);//將要返回的字符放到pdtem[]數(shù)組,發(fā)送到計(jì)算機(jī)接收

5數(shù)據(jù)發(fā)送函數(shù)

void send_data(char temp[64])//數(shù)據(jù)發(fā)送

{

uchar i;

i=0;

do

{

tem88=XBYTE[0x0100];

while((tem88&0x02)!=0x02)

tem88=XBYTE[0x0100];

XBYTE[0x0000]=pdtem[i];

i++;

}

while(pdtem[i-1]!=0x0a);//遇到結(jié)束符0x0a則發(fā)送完畢

while(((tem88=XBYTE[0x0100])&0x02)==0x02); //防止輸出中斷未清除,這句可以不加}

6結(jié)論

通過編程軟件實(shí)現(xiàn)了接口的初始化,數(shù)據(jù)的接收,數(shù)據(jù)的處理和數(shù)據(jù)的發(fā)送基本功能,在軟件平臺(tái)下調(diào)用板卡廠商提供的DLL對(duì)操作系統(tǒng)API(Application Programming Interface)函數(shù)的調(diào)用。API函數(shù)包含在附加名為DLL的動(dòng)態(tài)連接庫文件中,API函數(shù)可以做到很多的功能。因此,可以通過調(diào)用DLL的方法來調(diào)用各種API函數(shù),來實(shí)現(xiàn)各種任務(wù)。

參考文獻(xiàn):

[1]李宗陽.時(shí)間頻率計(jì)量[M].北京:原子能出版社,2002:88-101.

[2]季海峰.基于虛擬儀器測(cè)試系統(tǒng)的PCI-GPIB控制器的設(shè)計(jì)和研究[M].南京:南京理工大學(xué),2007:23-30.[2] Lippman S B.C++Primer中文版[M].李師賢,譯.4版.北京:人民郵電出版社,2006.

[3]馮宏華.C++應(yīng)用程序性能優(yōu)化[M].北京:電子工業(yè)出版社,2007.

[4]錢能.C++程序設(shè)計(jì)教程[M].北京:清華大學(xué)出版社,1999.

猜你喜歡
程控
基于單片機(jī)的程控增益放大器設(shè)計(jì)
電子制作(2019年19期)2019-11-23 08:41:36
基于Multisim10和AD603的程控增益放大器仿真研究
電子制作(2018年19期)2018-11-14 02:37:02
程控交換網(wǎng)絡(luò)技術(shù)及智能云交換技術(shù)綜述和展望
LabVIEW程控電子負(fù)載的實(shí)現(xiàn)與虛擬面板設(shè)計(jì)
功率程控發(fā)射機(jī)的設(shè)計(jì)
程控交換機(jī)的維護(hù)及管理探析
電子制作(2016年11期)2016-11-07 08:43:27
程控增益射頻寬帶放大器
電子制作(2016年1期)2016-11-07 08:42:54
基于STC89C52的程控移相器的設(shè)計(jì)
電子制作(2016年23期)2016-05-17 03:53:28
一種可程控精密直流電流測(cè)量系統(tǒng)的設(shè)計(jì)
基于STM32的程控直流電子負(fù)載設(shè)計(jì)
海林市| 岳西县| 高台县| 延寿县| 承德市| 余庆县| 广东省| 泰宁县| 泾源县| 西吉县| 霞浦县| 卢龙县| 德州市| 民丰县| 三都| 玉山县| 弋阳县| 六安市| 章丘市| 宁海县| 宜兰市| 陕西省| 郁南县| 浦城县| 铁岭县| 阿瓦提县| 城固县| 都匀市| 岑巩县| 定陶县| 清原| 连城县| 温泉县| 连江县| 太白县| 定陶县| 三原县| 乐亭县| 扎兰屯市| 怀远县| 云霄县|