高速隔離通訊卡_第1頁(yè)
高速隔離通訊卡_第2頁(yè)
高速隔離通訊卡_第3頁(yè)
高速隔離通訊卡_第4頁(yè)
高速隔離通訊卡_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 MPB252P高高速速隔隔離離通通訊訊卡卡用用戶戶手手冊(cè)冊(cè)北北京京航航天天興興科科高高新新技技術(shù)術(shù)有有限限公公司司目目 錄錄1 概概述述 .12 硬硬件件安安裝裝 .33 軟軟件件安安裝裝 .43.1 驅(qū)動(dòng)程序文件說(shuō)明.43.2 安裝設(shè)備驅(qū)動(dòng)程序.43.2.1 第一次安裝.43.2.2 多塊卡的安裝.83.3 卸載設(shè)備驅(qū)動(dòng)程序.84 物物理理接接口口: .104.1 RS-422 模式 .104.2 RS-485 模式 .104.3 高阻態(tài)模式.104.4 數(shù)字量輸入和輸出.104.5 波特率選擇.114.6 LED 指示燈 .115 MPB252P 軟軟件件設(shè)設(shè)置置程程序序 .125.1

2、板上時(shí)鐘頻率 .125.2 通信協(xié)議 .125.2.1 HDLC透明模式.135.2.2 HDLC/PPP模式.135.2.2.1 按位同步 PPP.135.2.2.2 字節(jié)同步 PPP.135.2.2.3 異步字符 PPP.145.2.3 ASYNC模式.155.3 物理接口與發(fā)送時(shí)鐘.155.4 通信速率 .155.5 發(fā)送 CRC .155.6 空閑信號(hào) .155.7 PPP 協(xié)議 MODEM 控制字符設(shè)置 .165.8 ASYNC 模式設(shè)置 .165.9 發(fā)送與接收緩沖區(qū)模式.166 API 函函數(shù)數(shù)說(shuō)說(shuō)明明 .176.1 端口打開(kāi)函數(shù) .176.2 端口關(guān)閉函數(shù) .186.3 端口發(fā)

3、送函數(shù) .196.4 查詢端口接收長(zhǎng)度函數(shù).216.5 端口接收函數(shù) .226.6 等待所有端口接收事件函數(shù).246.7 等待指定板卡接收事件函數(shù).266.8 等待指定端口接收事件函數(shù).286.9 讀取端口狀態(tài)函數(shù).306.10 非數(shù)字量函數(shù)錯(cuò)誤碼說(shuō)明.326.11 寫(xiě)數(shù)字量輸出函數(shù).336.12 讀數(shù)字量輸入數(shù)據(jù)函數(shù).346.13 等待所有板卡的數(shù)字量輸入事件函數(shù).356.14 等待指定板卡的數(shù)字量輸入事件函數(shù).376.15 等待指定端口的數(shù)字量輸入事件函數(shù).396.16 等待指定端口指定路的數(shù)字量輸入事件函數(shù).417 信信號(hào)號(hào)接接口口和和電電纜纜.437.1 68P SCSI 連接器引腳信

4、號(hào)定義.437.2 轉(zhuǎn)接電纜 .447.3 LED 指示燈連接器引腳信號(hào)定義.448 規(guī)規(guī)格格 .459 維維修修承承諾諾和和技技術(shù)術(shù)支支持持.461 概概述述MPB252P 卡是一塊能提供2 路隔離高速串行數(shù)據(jù)通訊的模板。它內(nèi)含一片高性能的串行通訊控制器,可用于各種高速數(shù)據(jù)通訊場(chǎng)合。每路都可以通過(guò)軟件編程獨(dú)立支持各種流行通訊協(xié)議。同步協(xié)議的每路最高通訊速率可達(dá) 10Mbit/秒;異步協(xié)議的每路最高通訊速率可達(dá)2Mbit/秒。MPB252P 各路可被設(shè)置為RS-485 或 RS-422 接口 。每一路在板上都有一對(duì) LED 分別指示接收和發(fā)送的工作狀態(tài)。MPB252P 卡上有 20MHz 的晶

5、振,可適應(yīng)各種標(biāo)準(zhǔn)的通訊波特率。主主要要特特性性 2 個(gè)高速串行通道最大通訊速率2Mbit/秒支持異步、 HDLC 等協(xié)議支持 RS-422、RS-485 接口或 RS-232 接口33M /32 位 PCI 總線接口PCI 總線 3V/5V 通用卡Windows2000 驅(qū)動(dòng)程序產(chǎn)產(chǎn)品品包包裝裝信信息息 MPB252P 卡的包裝中應(yīng)包括以下物品:MPB252P 卡 1 塊SCSI 68P 插頭到 2 個(gè) DB25 插頭的轉(zhuǎn)接電纜1 根MPB252P 驅(qū)動(dòng)和應(yīng)用程序盤(pán)1 片(軟盤(pán)或光盤(pán))2 硬硬件件安安裝裝1關(guān)閉計(jì)算機(jī)電源開(kāi)關(guān),拔下電源線。注注意意:進(jìn)進(jìn)行行以以下下操操作作前前,必必需需確確認(rèn)

6、認(rèn)計(jì)計(jì)算算機(jī)機(jī)的的電電源源已已處處于于關(guān)關(guān)閉閉狀狀態(tài)態(tài),否否則則可可能能損損壞壞計(jì)計(jì)算算機(jī)機(jī)主主板板和和MPB252P 卡卡。2打開(kāi)機(jī)箱蓋。3拆除欲安裝 MPB252P 卡的插槽處的空擋板。4將 MPB252P 卡小心插入 PCI 插槽,擰上鎖緊螺釘。5把信號(hào)電纜插在68P SCSI 插座上,并保證處于鎖緊狀態(tài)。6蓋上機(jī)箱蓋。7插上計(jì)算機(jī)電源線,打開(kāi)電源開(kāi)關(guān),進(jìn)行軟件安裝。 3 軟軟件件安安裝裝3.1 驅(qū)驅(qū)動(dòng)動(dòng)程程序序文文件件說(shuō)說(shuō)明明MPB252P 卡軟件運(yùn)行環(huán)境為Windows 2000 中文版,安裝盤(pán)中包括以下目錄和文件:Driver:驅(qū)動(dòng)程序目錄,包括MPB252P.INF、MPB252

7、P.SYS、MPB252PSet.CPL、MPB252PLIB.DLL 等四個(gè)文件;Doc:說(shuō)明書(shū)目錄,本文件即在此目錄下;API:用戶編程接口,包括MPB252PLIB.H、MPB252PLIB.LIB、MPB252PLIB.DLL 等三個(gè)文件,適用于Microsoft Visual C+;Demo:使用本卡進(jìn)行發(fā)送與接收的例子程序。3.2 安安裝裝 設(shè)設(shè)備備驅(qū)驅(qū)動(dòng)動(dòng)程程序序以下操作均在硬件安裝完成后進(jìn)行。 3.2.1 第第一一次次安安裝裝若為第一次安裝, Windows 2000 系統(tǒng)啟動(dòng)后,將自動(dòng)檢測(cè)到新的硬件,出現(xiàn)找到新的硬件向?qū)Ы缑妫簡(jiǎn)螕?“下一步 ” ,將出現(xiàn)如下界面:?jiǎn)螕?“下一

8、步 ” ,將出現(xiàn)如下界面:在廠商文件復(fù)制來(lái)源中鍵入驅(qū)動(dòng)程序所在的位置,如在軟盤(pán)中鍵入“A:”后,單擊 “確認(rèn) ”按鈕,出現(xiàn)如下界面:選擇 MPB252P.INF,單擊 “打開(kāi) ”按鈕,出現(xiàn)如下界面:?jiǎn)螕?“下一步 ” , ,出現(xiàn)如下界面:表明系統(tǒng)已找到了MPB252P 設(shè)備驅(qū)動(dòng)程序,單擊“完成 ” ,系統(tǒng)安裝驅(qū)動(dòng)程序過(guò)程中出現(xiàn)如下界面,安裝完畢后消失,完成安裝。驅(qū)動(dòng)程序安裝結(jié)束后,安裝的文件如下:MPB252P.INF:Windows 2000 安裝文件,位于Systems32目錄下;MPB252P.SYS:Windows 2000 設(shè)備驅(qū)動(dòng)程序,位于Systems32Drivers 目錄下;

9、MPB252PSet.CPL:Windows 2000 控制面板設(shè)置程序,位于Systems32 目錄下;MPB252PLIB.DLL:動(dòng)態(tài)連接庫(kù),位于Systems32 目錄下。3.2.2 多多塊塊卡卡的的安安裝裝如果有多塊 MPB252P 卡,或在新的槽位插入MPB252P 卡后,系統(tǒng)將搜索設(shè)備驅(qū)動(dòng)并自動(dòng)完成安裝。3.3 卸卸載載設(shè)設(shè)備備驅(qū)驅(qū)動(dòng)動(dòng)程程序序當(dāng)需要卸載 MPB252P 卡的設(shè)備驅(qū)動(dòng)程序時(shí),選擇“開(kāi)始 設(shè)置 控制面板 ” ,雙擊 “系統(tǒng) ” ,選擇 “硬件 ” ,單擊 “設(shè)備管理器 ” ,進(jìn)入設(shè)備管理器界面。雙擊 “MPB252P”根設(shè)備并展開(kāi),選擇“MPB252P 同步通訊適配

10、器” ,單擊鼠標(biāo)右鍵,在彈出菜單中選擇“卸載 (U)” ,并在隨后出現(xiàn)的確認(rèn)設(shè)備刪除界面中,選擇“確定 ”后刪除。若要徹底刪除該設(shè)備,可按以下步驟進(jìn)行:控制面板添加 /刪除硬件 卸載 /拔掉設(shè)備 卸載設(shè)備 (永久卸載某設(shè)備及其驅(qū)動(dòng)程序)選擇“顯示隱藏設(shè)備 ”選擇 “MPB252P 同步通訊適配器 ”選擇 “是,想刪除此設(shè)備 ” 。如有多塊 MPB252P 卡需要?jiǎng)h除,重復(fù)上述操作即可。4 物物理理接接口口:4.1 RS-422 模模式式在 RS-422 模式,所有信號(hào)符合平衡的V.11 規(guī)范。下表列出串行信號(hào)的詳細(xì)說(shuō)明:信號(hào)驅(qū)動(dòng)器/接收器模式終端類(lèi)型信號(hào)類(lèi)型TXDV.11無(wú)差分RXDV.11V

11、.11差分TXC(接收器)V.11V.11差分TXC(驅(qū)動(dòng)器)V.11無(wú)差分RXCV.11V.11差分在RS-422模式下,板上的輸出選擇跳線必須在打打開(kāi)開(kāi) 狀態(tài)。4.2 RS-485 模模式式在 RS-485 模式,所有信號(hào)符合平衡的V.11 規(guī)范。下表列出串行信號(hào)的詳細(xì)說(shuō)明:信號(hào)驅(qū)動(dòng)器/接收器模式終端類(lèi)型信號(hào)類(lèi)型DATAV.11V.11差分CLKV.11V.11差分在RS-485模式下,對(duì)應(yīng)通道的輸出選擇跳線必須在短短接接 狀態(tài)。4.3 高高阻阻態(tài)態(tài)模模式式下表列出在高阻態(tài)模式下串行信號(hào)的詳細(xì)說(shuō)明:信號(hào)驅(qū)動(dòng)器/接收器模式終端類(lèi)型信號(hào)類(lèi)型TXD高阻態(tài)V.11RXD高阻態(tài)V.11TXC(接收器

12、)高阻態(tài)V.11TXC(驅(qū)動(dòng)器)高阻態(tài)V.11RXC高阻態(tài)V.114.4 數(shù)數(shù)字字量量輸輸入入和和輸輸出出MPB252P 每端口為用戶提供2 路帶光電隔離數(shù)字量輸入。數(shù)字量輸入的電壓范圍為15V-26V(工作電流為10 毫安)。4.5 波波特特率率選選擇擇MPB252P 為用戶提供了豐富靈活的串行時(shí)鐘選擇和數(shù)據(jù)恢復(fù)方案。波特率受用戶特定條件的限制,這些條件包括通訊協(xié)議、時(shí)鐘源、時(shí)鐘模式和物理接口模式。另外,這里給出的最大波特率并沒(méi)有考慮外部因素的影響,如電纜的長(zhǎng)度、阻抗、品質(zhì)和對(duì)方終端等情況。使用外部時(shí)鐘時(shí):通訊協(xié)議物理接口最大波特率RS-42210.0M同步RS-48510.0MRS-422

13、821.6K異步RS-485821.6K使用 20.0000MHz或其他頻率自備晶振時(shí):通訊協(xié)議物理接口最大波特率RS-4222.0M同步RS-4852.0MRS-4222.0M異步RS-4852.0M4.6 LED 指指示示燈燈MPB252P 卡上共有 4 個(gè) LED 燈,分別指示各路的發(fā)送和接收狀態(tài)。下表為 4 個(gè) LED 指示燈與各路的對(duì)應(yīng)關(guān)系:指示狀態(tài)發(fā)送1接收1發(fā)送2接收2LEDLED4LED3LED2LED15 MPB252P 軟軟件件設(shè)設(shè)置置程程序序Windows2000 下安裝驅(qū)動(dòng)程序后,在控制面板中將出現(xiàn)“MPB252P Setup”的圖標(biāo),雙擊該圖標(biāo),進(jìn)入設(shè)置界面。設(shè)置程序

14、自動(dòng)檢測(cè)MPB252P 卡,并將檢測(cè)到的信息列在“MPB252P 卡/端口 ”中,卡號(hào)從 0 開(kāi)始,每塊卡的端口號(hào)分別為0,1。選擇不同的卡和端口,對(duì)該端口的參數(shù)進(jìn)行編輯。5.1 板板上上時(shí)時(shí)鐘鐘頻頻率率MPB252P 卡上的時(shí)鐘來(lái)自晶體振蕩器,該晶體振蕩器根據(jù)需要可以使用不同的頻率,本批板卡晶體振蕩器的頻率為20MHz。5.2 通通信信協(xié)協(xié)議議選擇 MPB252P 某一端口的主通信協(xié)議,MPB252P 卡硬體部分鏈路層支持 HDLC/SDLC(包括自動(dòng)模式、地址模式、通明模式、PPP模式等)、BISYNC、ASYNC 等協(xié)議,目前的驅(qū)動(dòng)程序支持其中的常用協(xié)議,包括 HDLC 透明模式、 HD

15、LC/PPP 模式(按位同步PPP、字節(jié)同步 PPP、異步字符 PPP) 、ASYNC 模式。5.2.1 HDLC 透透明明模模式式HDLC 透明模式實(shí)現(xiàn)HDLC 協(xié)議的標(biāo)準(zhǔn)鏈路層部分,具有以下功能: 幀間空閑標(biāo)志檢測(cè)與傳輸:空閑字符為0 x7E; “0 插入 /刪除機(jī)制 ”:發(fā)送時(shí), 5 個(gè)連續(xù)的 1 后面自動(dòng)插入“0” ,接收時(shí), 5 個(gè)連續(xù)的 1 后面的 “0”被刪除; CRC 自動(dòng)生成與檢測(cè): CRC-CCITT 格式,生成多項(xiàng)式為X16+X12+X5+1; 透明傳輸,所有幀內(nèi)字節(jié)(包括地址域、控制域)都當(dāng)作數(shù)據(jù)看待。5.2.2 HDLC/PPP 模模式式PPP 模式是 HDLC 協(xié)議

16、的子模式,包括面向比特的位同步 PPP 模式、 面向字節(jié)連接 的八位同步 PPP 模式、異步字符的PPP 模式等三種子模式。5.2.2.1 按按位位同同步步 PPP面向比特的按位同步PPP 傳輸協(xié)議與 HDLC 透明傳輸基本相同,區(qū)別僅僅在于 異常結(jié)束 (Abort)字符 不同, HDLC 使用 7 個(gè)連續(xù)的 “1”作為失效字符 ,而 按位同步 PPP 使用 15 個(gè)連續(xù)的 “1”作為失效字符。5.2.2.2 字字節(jié)節(jié)同同步步 PPP面向字符的 8 位字節(jié)同步 PPP 傳輸協(xié)議與 HDLC 透明傳輸大部分相同,區(qū)別如下:字節(jié)同步 PPP 不執(zhí)行 “0 插入 /刪除機(jī)制 ”機(jī)制;標(biāo)志數(shù)據(jù)標(biāo)志數(shù)據(jù)

17、用戶數(shù)據(jù)CRC-CCITTHDLC 幀格式字節(jié)同步 PPP 執(zhí)行 “數(shù)據(jù)透明(或字符轉(zhuǎn)移) ”機(jī)制?!皵?shù)數(shù)據(jù)據(jù)透透明明(或或字字符符轉(zhuǎn)轉(zhuǎn)移移) ”機(jī)機(jī)制制當(dāng)傳輸二進(jìn)制數(shù)據(jù)或文件時(shí),很容易碰到MODEM 控制字符(如CTRL-Q、CTRL-S 等) ,MODEM 不傳輸這些字符, MPB252P 使用“數(shù)數(shù)據(jù)據(jù)透透明明(或或字字符符轉(zhuǎn)轉(zhuǎn)移移) ”機(jī)制來(lái)解決這個(gè)問(wèn)題,具體方法如下:MPB252P 每個(gè)端口定義了一組“MODEM 控制字符 ” ,包括0 x000 x1F 共 32 個(gè)可選擇字符和4 個(gè)自定義字符。當(dāng)傳輸數(shù)據(jù)中出現(xiàn)這些字符時(shí),MPB252P 發(fā)送器在該字符前插入“control-esc

18、ape”字符 0 x7D,在 0 x7D 后該字符將第5 位反相后傳輸。(例如 0 x13H 將轉(zhuǎn)移為 0 x7D、0 x33)接收時(shí),“control-escape”字符 0 x7D 將被丟棄,其后的字符第5 位反相以恢復(fù)原始字符。 (如接收到上述0 x7D、0 x33 后, 0 x7D 被丟棄, 0 x33 第 5 位反相后得到0 x13)“control-escape”字符 0 x7D 和傳輸空閑字符0 x7E 自動(dòng)進(jìn)行數(shù)據(jù)轉(zhuǎn)移。所有可以做 “字符轉(zhuǎn)移 ”的字符包括:0 x7D、0 x7E;0 x000 x1F 被選中的字符;4 個(gè)自定義字符。例如,當(dāng)選擇0 x13 和自定義 0 x20

19、 做“字符轉(zhuǎn)移 ”時(shí),傳輸與接收序列如下:5.2.2.3 異異步步字字符符 PPP面向字符的異步字符PPP 傳輸協(xié)議與字節(jié)同步PPP 基本相同,但傳輸13H01H20H4AHPPP 幀7DH33H01H7DH00H4AH字符轉(zhuǎn)移接收13H01H20H4AH字符恢復(fù)是對(duì)每個(gè) 8 位字節(jié)轉(zhuǎn)換為異步字符(1 個(gè)起始位、 8 個(gè)數(shù)據(jù)位、 1 個(gè)停止位)后傳輸。接收時(shí),將異步字符轉(zhuǎn)換為8 位的字節(jié)。異步字符PPP 同樣執(zhí)行 “數(shù)據(jù)透明(或字符轉(zhuǎn)移) ”機(jī)制。5.2.3 ASYNC 模模式式 可選字符長(zhǎng)度58 位; 奇偶校驗(yàn)生成與檢測(cè); 1 或 2 個(gè)停止位。5.3 物物理理接接口口與與發(fā)發(fā)送送時(shí)時(shí)鐘鐘發(fā)

20、發(fā)送送時(shí)時(shí)鐘鐘 工作在 HDLC 協(xié)議時(shí), MPB104 的發(fā)送時(shí)鐘既可以用內(nèi)部時(shí)鐘,也可以使用外部時(shí)鐘(如同步MODEM 提供的時(shí)鐘)。 內(nèi)部時(shí)鐘模式分為同步內(nèi)時(shí)鐘和異步內(nèi)時(shí)鐘兩種方式,采用同步內(nèi)時(shí)鐘方式時(shí),不管發(fā)送管腳TxD 有無(wú)數(shù)據(jù),該時(shí)鐘一直在TxC 管腳輸出;采用異步內(nèi)時(shí)鐘方式時(shí),只有發(fā)送管腳TxD 有數(shù)據(jù)時(shí), TxC 管腳才有時(shí)鐘信號(hào)輸出,否則為低電平。 5.4 通通信信速速率率 設(shè)置端口的通信波特率,范圍見(jiàn)4.6。 5.5 物物理理接接口口 選擇外部接口模式,包括RS232、RS422、RS530A、V.35,或禁止該端口,信號(hào)模式詳見(jiàn)4.1-4.5工作在 HDLC 協(xié)議時(shí), M

21、PB252P 的發(fā)送時(shí)鐘既可以用內(nèi)部時(shí)鐘,也可以使用外部時(shí)鐘(如同步MODEM 提供的時(shí)鐘)。5.4 通通信信速速率率設(shè)置端口的通信波特率,范圍見(jiàn)4.6。5.5 發(fā)發(fā)送送 CRC設(shè)置發(fā)送和接收CRC 發(fā)生器的初值,可選擇0 xFFFF(絕大多數(shù)HDLC 應(yīng)用的缺省值)或0 x0000,也可以選擇 “禁止自動(dòng)生成 ” ,用于用戶軟件產(chǎn)生的CRC 測(cè)試。5.6 空空閑閑信信號(hào)號(hào)選擇發(fā)送信號(hào)的幀間隔方式,可選擇0 x7E(01111110)或連續(xù)的 ”1”即 0 xFF(11111111) 。5.7 PPP 協(xié)協(xié)議議 MODEM 控控制制字字符符設(shè)設(shè)置置控制字符的含義參見(jiàn)5.2.2.2 節(jié)。支持 0

22、 x000 x1F 共 32 個(gè)固定字節(jié)及4 個(gè)自定義字節(jié)(范圍為0 x000 xFF) 。5.8 ASYNC 模模式式設(shè)設(shè)置置選擇 ASYNC 異步通信協(xié)議時(shí),設(shè)置通信的字符長(zhǎng)度(8 位、 7 位、6 位、 5 位) 、校驗(yàn)方式(無(wú)校驗(yàn)、奇校驗(yàn)、偶校驗(yàn))和停止位長(zhǎng)度(1 位或 2 位) ,起始位為 1 位。5.9 發(fā)發(fā)送送與與接接收收緩緩沖沖區(qū)區(qū)模模式式每塊 MPB252P 卡驅(qū)動(dòng)程序中具有512K 字節(jié)內(nèi)緩沖區(qū),每端口128K 字節(jié),分別為發(fā)送64K 字節(jié)、接收 64K 字節(jié),可設(shè)置成六種不同的幀緩沖區(qū)結(jié)構(gòu): 16 幀緩沖 /每幀最大 4096 字節(jié); 32 幀緩沖 /每幀最大 2048

23、字節(jié); 64 幀緩沖 /每幀最大 1024 字節(jié);128 幀緩沖 /每幀最大 512 字節(jié);256 幀緩沖 /每幀最大 256 字節(jié);512 幀緩沖 /每幀最大 128 字節(jié)。6 API 函函數(shù)數(shù)說(shuō)說(shuō)明明6.1 端端口口打打開(kāi)開(kāi)函函數(shù)數(shù)C 語(yǔ)語(yǔ)言言語(yǔ)語(yǔ)法法: int mp_open(int nCard)功功能能 :打開(kāi) MPB252P 適配卡函數(shù)。輸輸入入 :nCard:0 序卡號(hào), 0 表示第一塊卡, 1 表示第二塊卡,最多支持8 塊卡, nCard 的有效范圍為07。返返回回 :=0:已打開(kāi)的端口號(hào);1:表示不支持的卡號(hào),卡號(hào)范圍為07;2:表示文件打開(kāi)失敗,使用GetLastError

24、得到具體錯(cuò)誤碼。說(shuō)說(shuō)明明 :如果打開(kāi)成功,則返回卡號(hào);打開(kāi)失敗返回值為負(fù)數(shù)。對(duì) MPB252P 適配卡操作前,必須使用mp_open 函數(shù)打開(kāi)該卡;當(dāng)不再操作時(shí),使用mp_ close 函數(shù)關(guān)閉已打開(kāi)的MPB252P 適配卡。代代碼碼示示例例 :下面的代碼打開(kāi)第一塊卡。if(err=mp_open(0)=0) else printf(“mp_open error!code=%d”,err);6.2 端端口口關(guān)關(guān)閉閉函函數(shù)數(shù)C 語(yǔ)語(yǔ)言言語(yǔ)語(yǔ)法法: int mp_close(int nCard)功功能能 :關(guān)閉 MPB252P 適配卡函數(shù)。輸輸入入 :nCard:0 序卡號(hào), 0 表示第一塊卡,

25、1 表示第二塊卡,最多支持8 塊卡, nCard 的有效范圍為07。返返回回 : 0:關(guān)閉成功;1:表示不支持的卡號(hào),卡號(hào)范圍為07。說(shuō)說(shuō)明明 :如果關(guān)閉成功則返回0,關(guān)閉失敗返回值為負(fù)數(shù)。當(dāng)不再對(duì)已打開(kāi)的MPB252P 適配卡操作時(shí),使用mp_ close函數(shù)關(guān)閉已打開(kāi)的MPB252P 適配卡。代代碼碼示示例例 :下面的代碼打開(kāi)第一塊卡,操作結(jié)束后關(guān)閉它。mp_open(0);mp_close(0);6.3 端端口口發(fā)發(fā)送送函函數(shù)數(shù)C 語(yǔ)語(yǔ)言言語(yǔ)語(yǔ)法法:int mp_write(int nCard,int nPort,BYTE* pBuffer,int nLength)功功能能 :向 MPB

26、252P 適配卡指定端口發(fā)送數(shù)據(jù)函數(shù)。輸輸入入 :nCard:0 序卡號(hào), 0 表示第一塊卡, 1 表示第二塊卡,最多支持8 塊卡, nCard 的有效范圍為07;nPort:0 序端口號(hào), 0 表示第一個(gè)端口, 1 表示第二個(gè)端口;pBuffer:要發(fā)送的數(shù)據(jù)緩沖區(qū)指針,最大緩沖區(qū)根據(jù)設(shè)定的緩沖區(qū)模式(參見(jiàn) 5.10 發(fā)送與接收緩沖區(qū)模式)長(zhǎng)度分別為4096、2048、1024、512、256、128 字節(jié);nLength:發(fā)送緩沖區(qū)長(zhǎng)度,最大緩沖區(qū)長(zhǎng)度根據(jù)設(shè)定的緩沖區(qū)模式,分別為 4096、2048、1024、512、256、128 字節(jié)。 返返回回 :0:已發(fā)送的數(shù)據(jù)長(zhǎng)度; 0:當(dāng)前發(fā)送

27、端口忙,數(shù)據(jù)已保存到發(fā)送緩沖區(qū),等待端口不忙時(shí)自動(dòng)發(fā)送;1:表示不支持的卡號(hào),卡號(hào)范圍為07;2:表示不支持的端口號(hào),端口號(hào)的范圍為01;3:表示指定的MPB252P 卡尚未打開(kāi),需要首先使用mp_open 函數(shù)打開(kāi)該卡;4:表示指定的端口已設(shè)置為禁止;5:表示發(fā)送長(zhǎng)度超過(guò)限制,最大緩沖區(qū)長(zhǎng)度根據(jù)設(shè)定的緩沖區(qū)模式,分別為 4096、2048、1024、512、256、128 字節(jié)。說(shuō)說(shuō)明明 :如果發(fā)送成功則返回發(fā)送長(zhǎng)度,否則返回值為負(fù)數(shù)。另一種情況返回零值:指定的發(fā)送端口正在發(fā)送數(shù)據(jù),新的數(shù)據(jù)被存放到發(fā)送緩沖區(qū)排隊(duì),緩沖區(qū)內(nèi)的數(shù)據(jù)按順序自動(dòng)發(fā)送。代代碼碼示示例例 :下面的代碼打開(kāi)第一塊卡,向第

28、一個(gè)端口發(fā)送100 字節(jié)的數(shù)據(jù),操作結(jié)束后關(guān)閉該卡。BYTE pBuf1024;mp_open(0);mp_write(0,0,pBuf,100);mp_close(0);6.4 查查詢?cè)兌硕丝诳诮咏邮帐臻L(zhǎng)長(zhǎng)度度函函數(shù)數(shù)C 語(yǔ)語(yǔ)言言語(yǔ)語(yǔ)法法: int mp_length(int nCard,int nPort)功功能能 :查詢指定 MPB252P 卡的指定端口接收緩沖區(qū)長(zhǎng)度函數(shù)。輸輸入入 :nCard:0 序卡號(hào), 0 表示第一塊卡, 1 表示第二塊卡,最多支持8 塊卡, nCard 的有效范圍為07;nPort:0 序端口號(hào), 0 表示第一個(gè)端口, 1 表示第二個(gè)端口。返返回回 : 0:已接

29、收數(shù)據(jù)長(zhǎng)度,等待讀取; 0:當(dāng)前緩沖區(qū)無(wú)數(shù)據(jù);1:表示不支持的卡號(hào),卡號(hào)范圍為07;2:表示不支持的端口號(hào),端口號(hào)的范圍為01;3:表示指定的MPB252P 卡尚未打開(kāi),需要首先使用mp_open 函數(shù)打開(kāi)該卡;4:表示指定的端口已設(shè)置為禁止。說(shuō)說(shuō)明明 :如果成功則返回端口接收緩沖區(qū)目前已接收數(shù)據(jù)幀的長(zhǎng)度(0 表示無(wú)接收數(shù)據(jù) ),否則返回值為負(fù)數(shù)。當(dāng)應(yīng)用程序讀取較慢時(shí),接收數(shù)據(jù)根據(jù)設(shè)置的緩沖區(qū)模式,接收數(shù)據(jù)將存放到接收緩沖區(qū)區(qū)內(nèi)排隊(duì),等待應(yīng)用程序讀取。代代碼碼示示例例 :下面的代碼打開(kāi)第一塊卡,并查詢第一個(gè)端口的接收緩沖區(qū)數(shù)據(jù)幀長(zhǎng)度,操作結(jié)束后關(guān)閉該卡。mp_open(0);len=mp_le

30、ngth(0,0);mp_close(0);6.5 端端口口接接收收函函數(shù)數(shù)C 語(yǔ)語(yǔ)言言語(yǔ)語(yǔ)法法:int mp_read(int nCard,int nPort,BYTE* pBuffer,int nBufLen)功功能能 :接收指定 MPB252P 卡的指定端口數(shù)據(jù)函數(shù)。輸輸入入 :nCard:0 序卡號(hào), 0 表示第一塊卡, 1 表示第二塊卡,最多支持8 塊卡, nCard 的有效范圍為07;nPort:0 序端口號(hào), 0 表示第一個(gè)端口, 1 表示第二個(gè)端口;pBuffer:接收數(shù)據(jù)指針。nBufLen:接收緩沖區(qū)長(zhǎng)度。返返回回 :0:接收數(shù)據(jù)幀的長(zhǎng)度; 0:無(wú)接收數(shù)據(jù);1:表示不支持的

31、卡號(hào),卡號(hào)范圍為07;2:表示不支持的端口號(hào),端口號(hào)的范圍為01;3:表示指定的MPB252P 卡尚未打開(kāi),需要首先使用mp_open 函數(shù)打開(kāi)該卡。4:表示指定的端口已設(shè)置為禁止。說(shuō)說(shuō)明明 :如果接收成功返回接收數(shù)據(jù)幀的長(zhǎng)度(0 表示無(wú)接收數(shù)據(jù) ),否則返回值為負(fù)數(shù)。注注意意:MPB252P 卡接收到的數(shù)據(jù)最后一個(gè)字節(jié)為附加的狀態(tài)字節(jié),其D7位為幀有效位( D7=1,表示該幀有效; D7=0,表示該幀無(wú)效) ,D5位為 CRC 校驗(yàn)正確標(biāo)志位( D5=1,表示 CRC 校驗(yàn)正確; D5=0,表示 CRC 校驗(yàn)錯(cuò)誤)。有效的、 CRC 校驗(yàn)正確的幀,其狀態(tài)字節(jié)為0 xA0。狀態(tài)字節(jié)的內(nèi)容數(shù)據(jù)位

32、數(shù)據(jù)位D7D6D5D4D3D2D1D0含義含義幀有效位保留CRC 校驗(yàn)標(biāo)志位保留代代碼碼示示例例 :下面的代碼打開(kāi)第一塊卡,并查詢第一個(gè)端口的接收緩沖區(qū)數(shù)據(jù)幀長(zhǎng)度,如果有數(shù)據(jù),將數(shù)據(jù)接收到用戶分配的緩沖區(qū)中,操作結(jié)束后關(guān)閉該卡。int nLen,nRecvLen;BYTE pBuf1024;mp_open(0);nLen=mp_length(0,0);if(len0) nRecvLen = mp_read(0,0,pBuf,1024);mp_close(0);6.6 等等待待所所有有端端口口接接收收事事件件函函數(shù)數(shù)C 語(yǔ)語(yǔ)言言語(yǔ)語(yǔ)法法: int mp_waitrecv(unsigned int

33、 unMilliseconds)功功能能 :等待安裝的所有端口的接收事件函數(shù)。輸輸入入 :unMilliseconds:等待的超時(shí)時(shí)間 (ms),INFINITE 表示一直等待,直到任意端口有接收事件產(chǎn)生。返返回回 :=0:總端口號(hào);6:無(wú)接收數(shù)據(jù)。說(shuō)說(shuō)明明 :mp_waitrecv 函數(shù)等待所有端口的數(shù)據(jù)接收,如果有一個(gè)端口有接收數(shù)據(jù),則返回該端口號(hào)與卡號(hào)計(jì)算出的總端口號(hào),總端口號(hào)與卡號(hào)和端口號(hào)的對(duì)應(yīng)關(guān)系如下:總端口號(hào)卡號(hào)X 2+端口號(hào)例如卡 0 端口 1 的總端口號(hào)為0X2+1=1,卡 1 端口 0 的總端口號(hào)為1X2+0=2,等等。當(dāng)多個(gè)端口有接收數(shù)據(jù)幀時(shí),返回其中的最小端口序號(hào),再使用

34、 mp_length 函數(shù)確認(rèn)是哪些端口有接收數(shù)據(jù)。所有端口均無(wú)接收數(shù)據(jù)時(shí),返回 6。代代碼碼示示例例 :為提高應(yīng)用程序的效率,MPB252P 卡提供事件方式的接收支持,當(dāng) MPB252P 的某端口接收到完整的數(shù)據(jù)幀時(shí),產(chǎn)生同步事件通知應(yīng)用程序,應(yīng)用通過(guò)調(diào)用mp_waitrecv 函數(shù)來(lái)等待接收。下面的代碼打開(kāi)第一塊卡,并在50ms 內(nèi)等待端口接收數(shù)據(jù),如果有數(shù)據(jù),則查詢端口接收長(zhǎng)度并接收數(shù)據(jù),操作結(jié)束后關(guān)閉該卡。int i,nPort;BYTE pBuf1024;mp_open(0);if(nPort=mp_waitrecv(50)-1) for(i=nPort%4;i0) mp_read(

35、0,i,pBuf);mp_close(0);6.7 等等待待指指定定板板卡卡接接收收事事件件函函數(shù)數(shù)C 語(yǔ)語(yǔ)言言語(yǔ)語(yǔ)法法: int mp_waitrecv(int nCard,unsigned int unMilliseconds)功功能能 :等待指定板卡2 個(gè)端口的接收事件函數(shù)。輸輸入入 :nCard:0 序卡號(hào), 0 表示第一塊卡, 1 表示第二塊卡,最多支持8 塊卡, nCard 的有效范圍為07;unMilliseconds:等待的超時(shí)時(shí)間 (ms),INFINITE 表示一直等待,直到指定板卡有接收事件產(chǎn)生。返返回回 :=0:接收端口號(hào);1:表示不支持的卡號(hào),卡號(hào)范圍為07;3: 表

36、示指定的 MPB252P 卡尚未打開(kāi),需要首先使用mp_open 函數(shù)打開(kāi)該卡。6:表示所有端口均無(wú)接收數(shù)據(jù)。說(shuō)說(shuō)明明 :mp_waitrecv 函數(shù)等待指定板卡端口的數(shù)據(jù)接收,如果有一個(gè)端口有接收數(shù)據(jù),則返回該端口號(hào)。當(dāng)多個(gè)端口有接收數(shù)據(jù)幀時(shí),返回其中的最小端口序號(hào),可使用mp_length 函數(shù)確認(rèn)大于該端口號(hào)的其它端口是否有接收數(shù)據(jù),或再次使用mp_waitrecv 函數(shù)。代代碼碼示示例例 :為提高應(yīng)用程序的效率,MPB252P 卡提供事件方式的接收支持,當(dāng) MPB252P 的某端口接收到完整的數(shù)據(jù)幀時(shí),產(chǎn)生同步事件通知應(yīng)用程序,應(yīng)用通過(guò)調(diào)用mp_waitrecv 函數(shù)來(lái)等待接收。下面的

37、代碼打開(kāi)第一塊卡,并在50ms 內(nèi)等待端口接收數(shù)據(jù),如果有數(shù)據(jù),則查詢端口接收長(zhǎng)度并接收數(shù)據(jù),操作結(jié)束后關(guān)閉該卡。int i,nPort;BYTE pBuf1024;mp_open(0);if(nPort=mp_waitrecv(0,50)-1) for(i=nPort;i0) mp_read(0,i,pBuf);mp_close(0);6.8 等等待待指指定定端端口口接接收收事事件件函函數(shù)數(shù)C C 語(yǔ)語(yǔ)言言語(yǔ)語(yǔ)法法:int mp_waitrecv(int nCard,int nPort,unsigned int unMilliseconds)功功能能 :等待指定端口的接收事件函數(shù)。輸輸入入

38、:nCard:0 序卡號(hào), 0 表示第一塊卡, 1 表示第二塊卡,最多支持8 塊卡, nCard 的有效范圍為07;nPort:0 序端口號(hào), 0 表示第一個(gè)端口, 1 表示第二個(gè)端口;unMilliseconds:等待的超時(shí)時(shí)間 (ms),INFINITE 表示一直等待,直到指定端口有接收事件產(chǎn)生。返返回回 : 1:指定接收端口有接收數(shù)據(jù); 0:指定端口無(wú)接收數(shù)據(jù);1:表示不支持的卡號(hào),卡號(hào)范圍為07;2:表示不支持的端口號(hào),端口號(hào)的范圍為01;3: 表示指定的 MPB252P 卡尚未打開(kāi),需要首先使用mp_open 函數(shù)打開(kāi)該卡。6:表示所有端口均無(wú)接收數(shù)據(jù)。說(shuō)說(shuō)明明 :mp_waitre

39、cv 函數(shù)等待指定端口的數(shù)據(jù)接收,如果該端口有接收數(shù)據(jù),則返回 1,否則,返回0。代代碼碼示示例例 :為提高應(yīng)用程序的效率,MPB252P 卡提供事件方式的接收支持,當(dāng) MPB252P 的某端口接收到完整的數(shù)據(jù)幀時(shí),產(chǎn)生同步事件通知應(yīng)用程序,應(yīng)用通過(guò)調(diào)用mp_waitrecv 函數(shù)來(lái)等待接收。下面的代碼打開(kāi)第一塊卡,并在50ms 內(nèi)等待第一個(gè)端口的接收數(shù)據(jù),如果有數(shù)據(jù),則查詢端口接收長(zhǎng)度并接收數(shù)據(jù),操作結(jié)束后關(guān)閉該卡。int i,nPort;BYTE pBuf1024;mp_open(0);if(nPort=mp_waitrecv(0,0,50)=1)if(mp_length(0,0)0) m

40、p_read(0,0,pBuf);mp_close(0);6.9 讀讀取取端端口口狀狀態(tài)態(tài)函函數(shù)數(shù)C 語(yǔ)語(yǔ)言言語(yǔ)語(yǔ)法法: int mp_getstatus(int nCard,PCARDSTATUS pCS)功功能能 :讀取端口狀態(tài)函數(shù)。端口工作狀態(tài)用如下的結(jié)構(gòu)描述:typedef struct tagCARD_STATUS unsigned long int ulSendBusyTotalCount4; unsigned long int ulSendFrameTotalCount4; unsigned long int ulRecvFullTotalCount4; unsigned lon

41、g int ulRecvFrameTotalCount4; unsigned long int ulRecvOverflowCount4;CARDSTATUS,*PCARDSTATUS;其中: ulSendBusyTotalCount:設(shè)備發(fā)送忙計(jì)數(shù);ulSendFrameTotalCount:端口發(fā)送幀計(jì)數(shù);ulRecvFullTotalCount:端口接收忙 (應(yīng)用程序未及時(shí)從緩沖區(qū)讀走數(shù)據(jù) )計(jì)數(shù);ulRecvFrameTotalCount:端口接收幀計(jì)數(shù);ulRecvOverflowCount:端口接收溢出錯(cuò)誤,如數(shù)據(jù)超長(zhǎng)等。輸輸入入 :nCard:0 序卡號(hào), 0 表示第一塊卡, 1

42、 表示第二塊卡,最多支持8 塊卡, nCard 的有效范圍為07;pCS:端口狀態(tài)結(jié)構(gòu)指針,需要由用戶分配存儲(chǔ)空間。返返回回 : 0:表示狀態(tài)讀取成功;1:表示不支持的卡號(hào),卡號(hào)范圍為07;3: 表示指定的 MPB252P 卡尚未打開(kāi),需要首先使用mp_open 函數(shù)打開(kāi)該卡。說(shuō)說(shuō)明明 :如果讀取成功,則返回0,并將端口工作狀態(tài)填充到pCS 中;讀取失敗返回值為 -1。操作結(jié)束后,在關(guān)閉MPB252P 適配卡前,可以使用mp_getstatus 函數(shù)讀取該卡的端口工作狀態(tài)。代代碼碼示示例例 :下面的代碼打開(kāi)第一塊卡,操作后讀取端口狀態(tài)。CARDSTATUS cs;mp_open(0);mp_g

43、etstatus(0,&cs);6.10 非非數(shù)數(shù)字字量量函函數(shù)數(shù)錯(cuò)錯(cuò)誤誤碼碼說(shuō)說(shuō)明明MPB252P API 函數(shù)返回錯(cuò)誤碼及含義如下:1:表示不支持的卡號(hào),卡號(hào)范圍為07;2:表示不支持的端口號(hào),端口號(hào)的范圍為02;3:表示指定的MPB252P 卡尚未打開(kāi),需要首先使用mp_open 函數(shù)打開(kāi)該卡。4:表示指定的端口已設(shè)置為禁止;5:表示發(fā)送長(zhǎng)度超過(guò)限制,最大緩沖區(qū)長(zhǎng)度根據(jù)設(shè)定的緩沖區(qū)模式,分別為 4096、2048、1024、512、256、128 字節(jié);6:表示所有端口均無(wú)接收數(shù)據(jù)。6.11 寫(xiě)寫(xiě)數(shù)數(shù)字字量量輸輸出出函函數(shù)數(shù)C C 語(yǔ)語(yǔ)言言語(yǔ)語(yǔ)法法: int mp_dout(in

44、t nCardNo,int nPort,BYTE byOutput)功功能能 :寫(xiě) MPB252P 卡端口數(shù)字量輸出函數(shù)輸輸入入 :nCard:0 序卡號(hào), 0 表示第一塊卡, 1 表示第二塊卡,最多支持8 塊卡, nCard 的有效范圍為07;nPort:0 序端口號(hào), 0 表示第一個(gè)端口, 1 表示第二個(gè)端口;byOutput:byOutput 0 輸出數(shù)字量 1 byOutput=0:端口讀入的數(shù)字量-1:卡號(hào)非法-2:端口號(hào)非法-3:卡未打開(kāi)-4:路號(hào)非法說(shuō)說(shuō)明明 :讀取數(shù)字量成功返回值大于等于0,返回值即為讀取的數(shù)字量;讀取數(shù)字量失敗返回值小于0 值,含義見(jiàn)返回說(shuō)明。代代碼碼示示例例

45、 :下面的代碼打開(kāi)第一塊卡,并且讀取端口1 的通道 1 的輸入量,操作結(jié)束后關(guān)閉該卡。mp_open(0);BYTE byData;byData = 0;byData = mp_din(0, 0, 0);mp_close(0);6.13 等等待待所所有有板板卡卡的的數(shù)數(shù)字字量量輸輸入入事事件件函函數(shù)數(shù)C C 語(yǔ)語(yǔ)言言語(yǔ)語(yǔ)法法: int mp_waitdin(unsigned int unMilliseconds)功功能能 :等待所有板卡的數(shù)字量輸入事件函數(shù)輸輸入入 :unMilliseconds:等待的超時(shí)時(shí)間 (ms),INFINITE 表示一直等待,直到任意端口有數(shù)字量輸入事件產(chǎn)生。返返回

46、回 :=0:總端口號(hào);6:無(wú)數(shù)字量數(shù)據(jù)事件。說(shuō)說(shuō)明明 :mp_waitdin 函數(shù)等待所有端口的數(shù)據(jù)接收,如果有一個(gè)端口有接收數(shù)據(jù),則返回該端口號(hào)與卡號(hào)計(jì)算出的總端口號(hào),總端口號(hào)與卡號(hào)和端口號(hào)的對(duì)應(yīng)關(guān)系如下:總端口號(hào)卡號(hào)X 2+端口號(hào)例如卡 0 端口 1 的總端口號(hào)為0X2+1=1,卡 1 端口 0 的總端口號(hào)為1X2+0=2,等等。當(dāng)多個(gè)端口有輸入量數(shù)據(jù)時(shí),返回其中的最小端口序號(hào),所有端口均無(wú)接收數(shù)據(jù)時(shí),返回6。代代碼碼示示例例 :為提高應(yīng)用程序的效率,MPB252P 卡提供事件方式的接收支持,當(dāng) MPB252P 的某端口接收數(shù)字量輸入事件時(shí),產(chǎn)生同步事件通知應(yīng)用程序,應(yīng)用通過(guò)調(diào)用mp_wa

47、itdin 函數(shù)來(lái)等待接收。下面的代碼打開(kāi)第一塊卡,并在50ms 內(nèi)等待端口輸入量,如果有數(shù)據(jù),則讀取數(shù)字量數(shù)據(jù),操作結(jié)束后關(guān)閉該卡。int nIndex, nCard, nPort;int i,k;BYTE byData;mp_open(0);nIndex = mp_waitdin(50);if(nIndex 0)nCard = nIndex/2;nPort = nIndex%2;for (i=0;i0)byData = k;mp_close(0);6.14 等等待待指指定定板板卡卡的的數(shù)數(shù)字字量量輸輸入入事事件件函函數(shù)數(shù)C 語(yǔ)語(yǔ)言言語(yǔ)語(yǔ)法法: int mp_waitdin (int nCa

48、rd,unsigned int unMilliseconds)功功能能 :等待指定板卡的數(shù)字量輸入事件函數(shù)。輸輸入入 :nCard:0 序卡號(hào), 0 表示第一塊卡, 1 表示第二塊卡,最多支持8 塊卡, nCard 的有效范圍為07;unMilliseconds:等待的超時(shí)時(shí)間 (ms),INFINITE 表示一直等待,直到指定板卡有接收事件產(chǎn)生。返返回回 :=0:接收端口號(hào);1:表示不支持的卡號(hào),卡號(hào)范圍為07;3: 表示指定的 MPB252P 卡尚未打開(kāi),需要首先使用mp_open 函數(shù)打開(kāi)該卡。6:表示所有端口均無(wú)數(shù)字量輸入。說(shuō)說(shuō)明明 :mp_waitdin 函數(shù)等待指定板卡端口的數(shù)據(jù)接

49、收,如果有一個(gè)端口有接收數(shù)據(jù),則返回該端口號(hào)。當(dāng)多個(gè)端口有接收數(shù)據(jù)幀時(shí),返回其中的最小端口序號(hào)。代代碼碼示示例例 :為提高應(yīng)用程序的效率,MPB252P 卡提供事件方式的接收支持,當(dāng) MPB252P 的某端口接收數(shù)字量輸入事件時(shí),產(chǎn)生同步事件通知應(yīng)用程序,應(yīng)用通過(guò)調(diào)用mp_waitdin 函數(shù)來(lái)等待接收。下面的代碼打開(kāi)第一塊卡,并在50ms 內(nèi)等待端口輸入量,如果有數(shù)據(jù),則讀取數(shù)字量數(shù)據(jù),操作結(jié)束后關(guān)閉該卡。int nPort;int i, j,k;BYTE byData;mp_open(0);if (nPort = mp_waitdin(0, 50) = 0)for(i=0;i0)byDat

50、a = k; mp_close(0);6.15 等等待待指指定定端端口口的的數(shù)數(shù)字字量量輸輸入入事事件件函函數(shù)數(shù)C 語(yǔ)語(yǔ)言言語(yǔ)語(yǔ)法法: int mp_waitdin(int nCardNo,int nPort,unsigned int unMilliseconds);功功能能 :等待指定板卡的數(shù)字量輸入事件函數(shù)。輸輸入入 :nCard:0 序卡號(hào), 0 表示第一塊卡, 1 表示第二塊卡,最多支持8 塊卡, nCard 的有效范圍為07;unMilliseconds:等待的超時(shí)時(shí)間 (ms),INFINITE 表示一直等待,直到指定板卡有接收事件產(chǎn)生。返返回回 :=0:接收通道號(hào);1:表示不支持

51、的卡號(hào),卡號(hào)范圍為07;3: 表示指定的 MPB252P 卡尚未打開(kāi),需要首先使用mp_open 函數(shù)打開(kāi)該卡。6:表示所有端口均無(wú)數(shù)字量輸入。說(shuō)說(shuō)明明 :mp_waitdin 函數(shù)等待指定板卡端口的數(shù)據(jù)接收,如果有一個(gè)端口有接收數(shù)據(jù),則返回該接收通道號(hào)。當(dāng)多個(gè)端口有接收數(shù)據(jù)幀時(shí),返回其中的最小端口序號(hào)。代代碼碼示示例例 :為提高應(yīng)用程序的效率,MPB252P 卡提供事件方式的接收支持,當(dāng) MPB252P 的某端口接收數(shù)字量輸入事件時(shí),產(chǎn)生同步事件通知應(yīng)用程序,應(yīng)用通過(guò)調(diào)用mp_waitdin 函數(shù)來(lái)等待接收。下面的代碼打開(kāi)第一塊卡,并在50ms 內(nèi)等待端口輸入量,如果有數(shù)據(jù),則讀取數(shù)字量數(shù)據(jù)

52、,操作結(jié)束后關(guān)閉該卡。BYTE byData;mp_open(0);if (nPort = mp_waitdin(0, 0,50) = 0)for(i=0;i0)byData = k; mp_close(0);6.16 等等待待指指定定端端口口指指定定路路的的數(shù)數(shù)字字量量輸輸入入事事件件函函數(shù)數(shù)C C 語(yǔ)語(yǔ)言言語(yǔ)語(yǔ)法法:int mp_waitdin(int nCardNo,int nPort,int nChn,unsigned int unMilliseconds);功功能能 :等待指定端口指定路的數(shù)字量輸入事件函數(shù)。輸輸入入 :nCard:0 序卡號(hào), 0 表示第一塊卡, 1 表示第二塊卡,

53、最多支持8 塊卡, nCard 的有效范圍為07;nPort:0 序端口號(hào), 0 表示第一個(gè)端口, 1 表示第二個(gè)端口;nChn:0 序通道號(hào), 0 表示第一路通道, 1 表示第二個(gè), nChn有效范圍 01;unMilliseconds:等待的超時(shí)時(shí)間 (ms),INFINITE 表示一直等待,直到指定端口有接收事件產(chǎn)生。返返回回 : =0:接收通道號(hào);1:表示不支持的卡號(hào),卡號(hào)范圍為07;3: 表示指定的 MPB252P 卡尚未打開(kāi),需要首先使用mp_open 函數(shù)打開(kāi)該卡。4:路號(hào)非法。6:表示所有端口均無(wú)數(shù)字量輸入。說(shuō)說(shuō)明明 : mp_waitdin 函數(shù)等待指定板卡端口的數(shù)據(jù)接收,如果有一個(gè)端口有接收數(shù)據(jù),則返回該接收通道號(hào)。當(dāng)多個(gè)端口有接收數(shù)據(jù)幀時(shí),返回其中的最小端

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論