国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

在Windows環(huán)境下調(diào)用動態(tài)庫實現(xiàn)VXI嵌入式計算機(jī)間的數(shù)據(jù)傳遞

發(fā)布時間:2010-9-1 14:11    發(fā)布者:conniede
引 言

在VXI系統(tǒng)中,控制器可以選用各種流行的控制機(jī)和操作系統(tǒng)。嵌入式控制機(jī)無疑是一種很好的選擇。但在一些由VXI組成的大型、復(fù)雜系統(tǒng)中,往往一臺計算機(jī)無法完成所有的任務(wù),因此需要多臺機(jī)器之間配合完成,各自負(fù)責(zé)處理部分任務(wù),因此如何傳遞彼此間的實時性數(shù)據(jù)顯得十分重要。本文介紹在一個VXI機(jī)箱插入兩個嵌入式計算機(jī),其中一臺作為零槽控制器,另一臺作為一個模塊,兩者之間可以快速、有效地相互交換各自處理的實時性數(shù)據(jù)。選用的環(huán)境是Windows 2000操作系統(tǒng),Agilent E8401A VXI主機(jī)箱一個,NI VXIpc-872B嵌入式計算機(jī)兩臺。采用的方法是共享存儲器通信和事件回調(diào)機(jī)制。

共享存儲器通信

VXI總線的通信方式很多,其中共享存儲器通信是對VXI總線字串行通信的補(bǔ)充。這些協(xié)議將使用少量的輔助操作而傳遞大量的信息,而這些輔助操作正是字串行協(xié)議所需要的。VISA提供了兩種不同的方式用于直接對寄存器編程:高級存儲器函數(shù)或低級存儲器函數(shù)。高級存儲器函數(shù)允許通過簡單的函數(shù)調(diào)用訪問接口上的存儲器,這不需要把存儲器映射到窗口。使用高級存儲器函數(shù)可完成存儲器映射和直接存儲器訪問。由于此函數(shù)包含了存儲器空間的映射和直接寄存器訪問,這就增加了程序的執(zhí)行時間。和高級存儲器函數(shù)一樣,低級存儲器函數(shù)允許直接訪問接口上的內(nèi)存,但是,調(diào)用低級存儲器函數(shù)時,必須用低級存儲器函數(shù)對地址和被訪問的寄存器進(jìn)行映射。在使用低級存儲器函數(shù)時,為了提高程序的執(zhí)行速度,低級存儲器函數(shù)不返回錯誤代碼。

使用事件和句柄

事件是需要引起應(yīng)用程序注意的特殊事件。事件類型包括服務(wù)請求、中斷和硬件觸發(fā)。只有當(dāng)適當(dāng)?shù)氖录试S時,事件才能被傳送。當(dāng)事件發(fā)生時,有兩種方式應(yīng)引起注意:

1. 用viInstallhandler安裝事件,用viEnableEvent使能一個或多個事件。如果事件以句柄的形式使能,當(dāng)指定的事件發(fā)生時,指定的事件句柄就被調(diào)用。這種方式被叫作回調(diào)方式。

2. 使用viEnableEvent使能一個或幾個事件并且調(diào)用viWaitOn Event函數(shù)。viWaitOn Event函數(shù)將掛起執(zhí)行程序,直到指定的事件發(fā)生或到達(dá)指定的超時值。這種方式被叫做排隊方式。

這兩種方式是彼此獨(dú)立的,在同一時間可以使用一種或兩種同時使用。回調(diào)方式通常用來處理需要立即反應(yīng)的事件,排隊方式用來處理非緊急事件。為了滿足實時性的要求,本文采用回調(diào)的方式。

動態(tài)鏈接庫的設(shè)計與實現(xiàn)

為了提高動態(tài)鏈接庫的效率,選用動態(tài)鏈接庫中的函數(shù)的原則如下:

1. 不同的函數(shù)按功能分類,如初始化通信環(huán)境、傳送數(shù)據(jù)、釋放系統(tǒng)資源、實用函數(shù)(事件回調(diào)函數(shù))等。

2. 保持函數(shù)之間一定的獨(dú)立性。

3. 如果一個功能由數(shù)個函數(shù)執(zhí)行,應(yīng)該簡化命令序列。

4. 使函數(shù)總數(shù)目最少。

整個動態(tài)鏈接庫中函數(shù)按照功能可分為初始化和數(shù)傳兩類。初始化類包括初始化通信函數(shù)和釋放系統(tǒng)資源函數(shù);數(shù)傳類包括傳送數(shù)據(jù)函數(shù)和實用函數(shù)。

在初始化通信函數(shù)中,首先應(yīng)在兩個模塊的進(jìn)程中各自打開自己的一個會話。在對接口存儲器進(jìn)行映射之前先要進(jìn)行存儲器分配,然后從指定的地址偏移量處進(jìn)行端口映射,本文采用的是A24地址映射方式。當(dāng)調(diào)用數(shù)據(jù)傳遞函數(shù)傳遞完數(shù)據(jù)后還應(yīng)該通知對方接收數(shù)據(jù),本文采用的是VXI總線觸發(fā)的方式來通知數(shù)據(jù)傳遞,因此在初始化函數(shù)中還應(yīng)該使能一個事件,指定觸發(fā)方式。

數(shù)據(jù)傳遞函數(shù)負(fù)責(zé)處理數(shù)據(jù)的傳遞。這里需要注意的是使用存儲器映射函數(shù)只能傳遞8位、16位和32位無符號整數(shù),所以必須通過軟件編寫進(jìn)行數(shù)據(jù)格式的轉(zhuǎn)換。

實用函數(shù)主要是指在初始化通信函數(shù)中使能的事件所對應(yīng)的回調(diào)函數(shù)。此函數(shù)的作用是監(jiān)聽并接收數(shù)據(jù)。如果監(jiān)聽到的是指定的觸發(fā),就通過存儲器映射函數(shù)將數(shù)據(jù)讀出來,經(jīng)過一定的數(shù)據(jù)格式轉(zhuǎn)換還原出原始數(shù)據(jù),之后向主線程發(fā)送消息,通知數(shù)據(jù)已經(jīng)接收到。主線程使用線程間通信的方法將數(shù)據(jù)接收并進(jìn)行相應(yīng)的處理。從而整個數(shù)據(jù)的傳遞過程結(jié)束。

下面是動態(tài)鏈接庫主要函數(shù)實現(xiàn)的方法

void InitCommunication (DWORD thrdid) file:/初始化通信環(huán)境
{
&nb sp; .
.
.
viInstallHandler (vi,VI_EVENT_TRIG,myHdlr, (ViAddr)10); file:/聲明一個回調(diào)函數(shù)
viEnableEvent (vi,VI_EVENT_TRIG,VI_HNDLR, VI_NULL); file:/使能一個事件
viMemAlloc(vi,0x200,&offset);
file:/分配一塊內(nèi)存
viMapAddress(vi,VI_A24_ SPACE,0, 0X200,VI_FALSE,VI_ NULL,&addr); file:/映射地址
.
.
.
}
void Senddata(unsigned short data2) file:/數(shù)據(jù)傳遞函數(shù)
{
viPoke16(vi,addr,data2);
viAssertTrigger (vi,VI_TRIG_PROT_SYNC);
}
ViStatus _VI_FUNCH myHdlr(ViSession vi,ViEventType eventType,ViEvent ctx,ViAddr userHdlr) file:/事件回調(diào)函數(shù)
{
viGetAttribute(ctx,VI_ATTR_ RECV_TRIG_ID,&trigId);
file:/得到觸發(fā)id
switch(trigId)
{
case VI_TRIG_TTL0: file:/判斷是否TTL0的觸發(fā)
viPeek16(vi,addr,&a);
break;
.
.
.
}

通過在程序中調(diào)用上面的Senddata函數(shù)可以實現(xiàn)一個unsigned short型數(shù)據(jù)的傳遞。當(dāng)需要傳遞多個數(shù)據(jù)時,建議使用結(jié)構(gòu)體定義要傳遞的數(shù)據(jù)。

結(jié) 語

本文通過對VXI共享存儲器通信和處理事件機(jī)制的介紹,闡述了如何在Windows環(huán)境下通過動態(tài)鏈接庫實現(xiàn)兩塊嵌入式計算機(jī)之間的數(shù)據(jù)傳遞,其中有關(guān)VISA函數(shù)的細(xì)節(jié)在HP或NI提供的VISA幫助中有詳盡的說明,不再贅述。基于這種方法編寫出來的程序處理VXI零槽控制器和非零槽模塊之間的通信問題是比較合適的。
本文地址:http://m.qingdxww.cn/thread-25037-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • 使用SAM-IoT Wx v2開發(fā)板演示AWS IoT Core應(yīng)用程序
  • 使用Harmony3加速TCP/IP應(yīng)用的開發(fā)培訓(xùn)教程
  • 集成高級模擬外設(shè)的PIC18F-Q71家族介紹培訓(xùn)教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿(mào)澤電子(Mouser)專區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产精品中文字幕| 亚欧色视频在线观看免费| 午夜性爽视频男人的天堂在线| 中文在线最新版天堂bt| 亚洲理论a中文字幕在线| 2021久久精品免费观看| 在线成人97观看| 国产成人精品视频频| 麻豆区蜜芽区| 一本久道久久综合狠狠躁AV| 亚洲成网777777国产精品| 天天精品视频| 亚洲日韩aⅴ在线视频| 色一级片| 婷婷六月综合| 无遮挡色视频| 综合图片区| 久久久精品免费免费直播| 亚州精品永久观看视频| 亚洲国产精品专区| 日本欧美一区二区三区视频麻豆| 亚洲国产成人久久综合区| 亚洲国产精品一在线观看| 国产精品久久人妻无码网站一区L| 人妻 中文无码 中出| 青青草99久久精品国产综合| 欧美在线a级高清| 天天透天天狠| 性德国高清xxxxbbbb| a级男女性高爱潮高清试看 | 99久久国产宗和精品1上映| 男人插曲视频大全免费网站| 日本aa级片| 欧美特黄一级片| 亚洲激情视频在线播放| 亚洲欧美日韩中文高清一| xxx免费观看| 青草影院内射中出高潮-百度| 欧美性淫爽www视频播放| 欧美一区二区影院| 一区二区在线欧美日韩中文|