高速隔离通讯卡_第1页
高速隔离通讯卡_第2页
高速隔离通讯卡_第3页
高速隔离通讯卡_第4页
高速隔离通讯卡_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 MPB252P高高速速隔隔离离通通讯讯卡卡用用户户手手册册北北京京航航天天兴兴科科高高新新技技术术有有限限公公司司目目 录录1 概概述述 .12 硬硬件件安安装装 .33 软软件件安安装装 .43.1 驱动程序文件说明.43.2 安装设备驱动程序.43.2.1 第一次安装.43.2.2 多块卡的安装.83.3 卸载设备驱动程序.84 物物理理接接口口: .104.1 RS-422 模式 .104.2 RS-485 模式 .104.3 高阻态模式.104.4 数字量输入和输出.104.5 波特率选择.114.6 LED 指示灯 .115 MPB252P 软软件件设设置置程程序序 .125.1

2、板上时钟频率 .125.2 通信协议 .125.2.1 HDLC透明模式.135.2.2 HDLC/PPP模式.135.2.2.1 按位同步 PPP.135.2.2.2 字节同步 PPP.135.2.2.3 异步字符 PPP.145.2.3 ASYNC模式.155.3 物理接口与发送时钟.155.4 通信速率 .155.5 发送 CRC .155.6 空闲信号 .155.7 PPP 协议 MODEM 控制字符设置 .165.8 ASYNC 模式设置 .165.9 发送与接收缓冲区模式.166 API 函函数数说说明明 .176.1 端口打开函数 .176.2 端口关闭函数 .186.3 端口发

3、送函数 .196.4 查询端口接收长度函数.216.5 端口接收函数 .226.6 等待所有端口接收事件函数.246.7 等待指定板卡接收事件函数.266.8 等待指定端口接收事件函数.286.9 读取端口状态函数.306.10 非数字量函数错误码说明.326.11 写数字量输出函数.336.12 读数字量输入数据函数.346.13 等待所有板卡的数字量输入事件函数.356.14 等待指定板卡的数字量输入事件函数.376.15 等待指定端口的数字量输入事件函数.396.16 等待指定端口指定路的数字量输入事件函数.417 信信号号接接口口和和电电缆缆.437.1 68P SCSI 连接器引脚信

4、号定义.437.2 转接电缆 .447.3 LED 指示灯连接器引脚信号定义.448 规规格格 .459 维维修修承承诺诺和和技技术术支支持持.461 概概述述MPB252P 卡是一块能提供2 路隔离高速串行数据通讯的模板。它内含一片高性能的串行通讯控制器,可用于各种高速数据通讯场合。每路都可以通过软件编程独立支持各种流行通讯协议。同步协议的每路最高通讯速率可达 10Mbit/秒;异步协议的每路最高通讯速率可达2Mbit/秒。MPB252P 各路可被设置为RS-485 或 RS-422 接口 。每一路在板上都有一对 LED 分别指示接收和发送的工作状态。MPB252P 卡上有 20MHz 的晶

5、振,可适应各种标准的通讯波特率。主主要要特特性性 2 个高速串行通道最大通讯速率2Mbit/秒支持异步、 HDLC 等协议支持 RS-422、RS-485 接口或 RS-232 接口33M /32 位 PCI 总线接口PCI 总线 3V/5V 通用卡Windows2000 驱动程序产产品品包包装装信信息息 MPB252P 卡的包装中应包括以下物品:MPB252P 卡 1 块SCSI 68P 插头到 2 个 DB25 插头的转接电缆1 根MPB252P 驱动和应用程序盘1 片(软盘或光盘)2 硬硬件件安安装装1关闭计算机电源开关,拔下电源线。注注意意:进进行行以以下下操操作作前前,必必需需确确认

6、认计计算算机机的的电电源源已已处处于于关关闭闭状状态态,否否则则可可能能损损坏坏计计算算机机主主板板和和MPB252P 卡卡。2打开机箱盖。3拆除欲安装 MPB252P 卡的插槽处的空挡板。4将 MPB252P 卡小心插入 PCI 插槽,拧上锁紧螺钉。5把信号电缆插在68P SCSI 插座上,并保证处于锁紧状态。6盖上机箱盖。7插上计算机电源线,打开电源开关,进行软件安装。 3 软软件件安安装装3.1 驱驱动动程程序序文文件件说说明明MPB252P 卡软件运行环境为Windows 2000 中文版,安装盘中包括以下目录和文件:Driver:驱动程序目录,包括MPB252P.INF、MPB252

7、P.SYS、MPB252PSet.CPL、MPB252PLIB.DLL 等四个文件;Doc:说明书目录,本文件即在此目录下;API:用户编程接口,包括MPB252PLIB.H、MPB252PLIB.LIB、MPB252PLIB.DLL 等三个文件,适用于Microsoft Visual C+;Demo:使用本卡进行发送与接收的例子程序。3.2 安安装装 设设备备驱驱动动程程序序以下操作均在硬件安装完成后进行。 3.2.1 第第一一次次安安装装若为第一次安装, Windows 2000 系统启动后,将自动检测到新的硬件,出现找到新的硬件向导界面:单击 “下一步 ” ,将出现如下界面:单击 “下一

8、步 ” ,将出现如下界面:在厂商文件复制来源中键入驱动程序所在的位置,如在软盘中键入“A:”后,单击 “确认 ”按钮,出现如下界面:选择 MPB252P.INF,单击 “打开 ”按钮,出现如下界面:单击 “下一步 ” , ,出现如下界面:表明系统已找到了MPB252P 设备驱动程序,单击“完成 ” ,系统安装驱动程序过程中出现如下界面,安装完毕后消失,完成安装。驱动程序安装结束后,安装的文件如下:MPB252P.INF:Windows 2000 安装文件,位于Systems32目录下;MPB252P.SYS:Windows 2000 设备驱动程序,位于Systems32Drivers 目录下;

9、MPB252PSet.CPL:Windows 2000 控制面板设置程序,位于Systems32 目录下;MPB252PLIB.DLL:动态连接库,位于Systems32 目录下。3.2.2 多多块块卡卡的的安安装装如果有多块 MPB252P 卡,或在新的槽位插入MPB252P 卡后,系统将搜索设备驱动并自动完成安装。3.3 卸卸载载设设备备驱驱动动程程序序当需要卸载 MPB252P 卡的设备驱动程序时,选择“开始 设置 控制面板 ” ,双击 “系统 ” ,选择 “硬件 ” ,单击 “设备管理器 ” ,进入设备管理器界面。双击 “MPB252P”根设备并展开,选择“MPB252P 同步通讯适配

10、器” ,单击鼠标右键,在弹出菜单中选择“卸载 (U)” ,并在随后出现的确认设备删除界面中,选择“确定 ”后删除。若要彻底删除该设备,可按以下步骤进行:控制面板添加 /删除硬件 卸载 /拔掉设备 卸载设备 (永久卸载某设备及其驱动程序)选择“显示隐藏设备 ”选择 “MPB252P 同步通讯适配器 ”选择 “是,想删除此设备 ” 。如有多块 MPB252P 卡需要删除,重复上述操作即可。4 物物理理接接口口:4.1 RS-422 模模式式在 RS-422 模式,所有信号符合平衡的V.11 规范。下表列出串行信号的详细说明:信号驱动器/接收器模式终端类型信号类型TXDV.11无差分RXDV.11V

11、.11差分TXC(接收器)V.11V.11差分TXC(驱动器)V.11无差分RXCV.11V.11差分在RS-422模式下,板上的输出选择跳线必须在打打开开 状态。4.2 RS-485 模模式式在 RS-485 模式,所有信号符合平衡的V.11 规范。下表列出串行信号的详细说明:信号驱动器/接收器模式终端类型信号类型DATAV.11V.11差分CLKV.11V.11差分在RS-485模式下,对应通道的输出选择跳线必须在短短接接 状态。4.3 高高阻阻态态模模式式下表列出在高阻态模式下串行信号的详细说明:信号驱动器/接收器模式终端类型信号类型TXD高阻态V.11RXD高阻态V.11TXC(接收器

12、)高阻态V.11TXC(驱动器)高阻态V.11RXC高阻态V.114.4 数数字字量量输输入入和和输输出出MPB252P 每端口为用户提供2 路带光电隔离数字量输入。数字量输入的电压范围为15V-26V(工作电流为10 毫安)。4.5 波波特特率率选选择择MPB252P 为用户提供了丰富灵活的串行时钟选择和数据恢复方案。波特率受用户特定条件的限制,这些条件包括通讯协议、时钟源、时钟模式和物理接口模式。另外,这里给出的最大波特率并没有考虑外部因素的影响,如电缆的长度、阻抗、品质和对方终端等情况。使用外部时钟时:通讯协议物理接口最大波特率RS-42210.0M同步RS-48510.0MRS-422

13、821.6K异步RS-485821.6K使用 20.0000MHz或其他频率自备晶振时:通讯协议物理接口最大波特率RS-4222.0M同步RS-4852.0MRS-4222.0M异步RS-4852.0M4.6 LED 指指示示灯灯MPB252P 卡上共有 4 个 LED 灯,分别指示各路的发送和接收状态。下表为 4 个 LED 指示灯与各路的对应关系:指示状态发送1接收1发送2接收2LEDLED4LED3LED2LED15 MPB252P 软软件件设设置置程程序序Windows2000 下安装驱动程序后,在控制面板中将出现“MPB252P Setup”的图标,双击该图标,进入设置界面。设置程序

14、自动检测MPB252P 卡,并将检测到的信息列在“MPB252P 卡/端口 ”中,卡号从 0 开始,每块卡的端口号分别为0,1。选择不同的卡和端口,对该端口的参数进行编辑。5.1 板板上上时时钟钟频频率率MPB252P 卡上的时钟来自晶体振荡器,该晶体振荡器根据需要可以使用不同的频率,本批板卡晶体振荡器的频率为20MHz。5.2 通通信信协协议议选择 MPB252P 某一端口的主通信协议,MPB252P 卡硬体部分链路层支持 HDLC/SDLC(包括自动模式、地址模式、通明模式、PPP模式等)、BISYNC、ASYNC 等协议,目前的驱动程序支持其中的常用协议,包括 HDLC 透明模式、 HD

15、LC/PPP 模式(按位同步PPP、字节同步 PPP、异步字符 PPP) 、ASYNC 模式。5.2.1 HDLC 透透明明模模式式HDLC 透明模式实现HDLC 协议的标准链路层部分,具有以下功能: 帧间空闲标志检测与传输:空闲字符为0 x7E; “0 插入 /删除机制 ”:发送时, 5 个连续的 1 后面自动插入“0” ,接收时, 5 个连续的 1 后面的 “0”被删除; CRC 自动生成与检测: CRC-CCITT 格式,生成多项式为X16+X12+X5+1; 透明传输,所有帧内字节(包括地址域、控制域)都当作数据看待。5.2.2 HDLC/PPP 模模式式PPP 模式是 HDLC 协议

16、的子模式,包括面向比特的位同步 PPP 模式、 面向字节连接 的八位同步 PPP 模式、异步字符的PPP 模式等三种子模式。5.2.2.1 按按位位同同步步 PPP面向比特的按位同步PPP 传输协议与 HDLC 透明传输基本相同,区别仅仅在于 异常结束 (Abort)字符 不同, HDLC 使用 7 个连续的 “1”作为失效字符 ,而 按位同步 PPP 使用 15 个连续的 “1”作为失效字符。5.2.2.2 字字节节同同步步 PPP面向字符的 8 位字节同步 PPP 传输协议与 HDLC 透明传输大部分相同,区别如下:字节同步 PPP 不执行 “0 插入 /删除机制 ”机制;标志数据标志数据

17、用户数据CRC-CCITTHDLC 帧格式字节同步 PPP 执行 “数据透明(或字符转移) ”机制。“数数据据透透明明(或或字字符符转转移移) ”机机制制当传输二进制数据或文件时,很容易碰到MODEM 控制字符(如CTRL-Q、CTRL-S 等) ,MODEM 不传输这些字符, MPB252P 使用“数数据据透透明明(或或字字符符转转移移) ”机制来解决这个问题,具体方法如下:MPB252P 每个端口定义了一组“MODEM 控制字符 ” ,包括0 x000 x1F 共 32 个可选择字符和4 个自定义字符。当传输数据中出现这些字符时,MPB252P 发送器在该字符前插入“control-esc

18、ape”字符 0 x7D,在 0 x7D 后该字符将第5 位反相后传输。(例如 0 x13H 将转移为 0 x7D、0 x33)接收时,“control-escape”字符 0 x7D 将被丢弃,其后的字符第5 位反相以恢复原始字符。 (如接收到上述0 x7D、0 x33 后, 0 x7D 被丢弃, 0 x33 第 5 位反相后得到0 x13)“control-escape”字符 0 x7D 和传输空闲字符0 x7E 自动进行数据转移。所有可以做 “字符转移 ”的字符包括:0 x7D、0 x7E;0 x000 x1F 被选中的字符;4 个自定义字符。例如,当选择0 x13 和自定义 0 x20

19、 做“字符转移 ”时,传输与接收序列如下:5.2.2.3 异异步步字字符符 PPP面向字符的异步字符PPP 传输协议与字节同步PPP 基本相同,但传输13H01H20H4AHPPP 帧7DH33H01H7DH00H4AH字符转移接收13H01H20H4AH字符恢复是对每个 8 位字节转换为异步字符(1 个起始位、 8 个数据位、 1 个停止位)后传输。接收时,将异步字符转换为8 位的字节。异步字符PPP 同样执行 “数据透明(或字符转移) ”机制。5.2.3 ASYNC 模模式式 可选字符长度58 位; 奇偶校验生成与检测; 1 或 2 个停止位。5.3 物物理理接接口口与与发发送送时时钟钟发

20、发送送时时钟钟 工作在 HDLC 协议时, MPB104 的发送时钟既可以用内部时钟,也可以使用外部时钟(如同步MODEM 提供的时钟)。 内部时钟模式分为同步内时钟和异步内时钟两种方式,采用同步内时钟方式时,不管发送管脚TxD 有无数据,该时钟一直在TxC 管脚输出;采用异步内时钟方式时,只有发送管脚TxD 有数据时, TxC 管脚才有时钟信号输出,否则为低电平。 5.4 通通信信速速率率 设置端口的通信波特率,范围见4.6。 5.5 物物理理接接口口 选择外部接口模式,包括RS232、RS422、RS530A、V.35,或禁止该端口,信号模式详见4.1-4.5工作在 HDLC 协议时, M

21、PB252P 的发送时钟既可以用内部时钟,也可以使用外部时钟(如同步MODEM 提供的时钟)。5.4 通通信信速速率率设置端口的通信波特率,范围见4.6。5.5 发发送送 CRC设置发送和接收CRC 发生器的初值,可选择0 xFFFF(绝大多数HDLC 应用的缺省值)或0 x0000,也可以选择 “禁止自动生成 ” ,用于用户软件产生的CRC 测试。5.6 空空闲闲信信号号选择发送信号的帧间隔方式,可选择0 x7E(01111110)或连续的 ”1”即 0 xFF(11111111) 。5.7 PPP 协协议议 MODEM 控控制制字字符符设设置置控制字符的含义参见5.2.2.2 节。支持 0

22、 x000 x1F 共 32 个固定字节及4 个自定义字节(范围为0 x000 xFF) 。5.8 ASYNC 模模式式设设置置选择 ASYNC 异步通信协议时,设置通信的字符长度(8 位、 7 位、6 位、 5 位) 、校验方式(无校验、奇校验、偶校验)和停止位长度(1 位或 2 位) ,起始位为 1 位。5.9 发发送送与与接接收收缓缓冲冲区区模模式式每块 MPB252P 卡驱动程序中具有512K 字节内缓冲区,每端口128K 字节,分别为发送64K 字节、接收 64K 字节,可设置成六种不同的帧缓冲区结构: 16 帧缓冲 /每帧最大 4096 字节; 32 帧缓冲 /每帧最大 2048

23、字节; 64 帧缓冲 /每帧最大 1024 字节;128 帧缓冲 /每帧最大 512 字节;256 帧缓冲 /每帧最大 256 字节;512 帧缓冲 /每帧最大 128 字节。6 API 函函数数说说明明6.1 端端口口打打开开函函数数C 语语言言语语法法: int mp_open(int nCard)功功能能 :打开 MPB252P 适配卡函数。输输入入 :nCard:0 序卡号, 0 表示第一块卡, 1 表示第二块卡,最多支持8 块卡, nCard 的有效范围为07。返返回回 :=0:已打开的端口号;1:表示不支持的卡号,卡号范围为07;2:表示文件打开失败,使用GetLastError

24、得到具体错误码。说说明明 :如果打开成功,则返回卡号;打开失败返回值为负数。对 MPB252P 适配卡操作前,必须使用mp_open 函数打开该卡;当不再操作时,使用mp_ close 函数关闭已打开的MPB252P 适配卡。代代码码示示例例 :下面的代码打开第一块卡。if(err=mp_open(0)=0) else printf(“mp_open error!code=%d”,err);6.2 端端口口关关闭闭函函数数C 语语言言语语法法: int mp_close(int nCard)功功能能 :关闭 MPB252P 适配卡函数。输输入入 :nCard:0 序卡号, 0 表示第一块卡,

25、1 表示第二块卡,最多支持8 块卡, nCard 的有效范围为07。返返回回 : 0:关闭成功;1:表示不支持的卡号,卡号范围为07。说说明明 :如果关闭成功则返回0,关闭失败返回值为负数。当不再对已打开的MPB252P 适配卡操作时,使用mp_ close函数关闭已打开的MPB252P 适配卡。代代码码示示例例 :下面的代码打开第一块卡,操作结束后关闭它。mp_open(0);mp_close(0);6.3 端端口口发发送送函函数数C 语语言言语语法法:int mp_write(int nCard,int nPort,BYTE* pBuffer,int nLength)功功能能 :向 MPB

26、252P 适配卡指定端口发送数据函数。输输入入 :nCard:0 序卡号, 0 表示第一块卡, 1 表示第二块卡,最多支持8 块卡, nCard 的有效范围为07;nPort:0 序端口号, 0 表示第一个端口, 1 表示第二个端口;pBuffer:要发送的数据缓冲区指针,最大缓冲区根据设定的缓冲区模式(参见 5.10 发送与接收缓冲区模式)长度分别为4096、2048、1024、512、256、128 字节;nLength:发送缓冲区长度,最大缓冲区长度根据设定的缓冲区模式,分别为 4096、2048、1024、512、256、128 字节。 返返回回 :0:已发送的数据长度; 0:当前发送

27、端口忙,数据已保存到发送缓冲区,等待端口不忙时自动发送;1:表示不支持的卡号,卡号范围为07;2:表示不支持的端口号,端口号的范围为01;3:表示指定的MPB252P 卡尚未打开,需要首先使用mp_open 函数打开该卡;4:表示指定的端口已设置为禁止;5:表示发送长度超过限制,最大缓冲区长度根据设定的缓冲区模式,分别为 4096、2048、1024、512、256、128 字节。说说明明 :如果发送成功则返回发送长度,否则返回值为负数。另一种情况返回零值:指定的发送端口正在发送数据,新的数据被存放到发送缓冲区排队,缓冲区内的数据按顺序自动发送。代代码码示示例例 :下面的代码打开第一块卡,向第

28、一个端口发送100 字节的数据,操作结束后关闭该卡。BYTE pBuf1024;mp_open(0);mp_write(0,0,pBuf,100);mp_close(0);6.4 查查询询端端口口接接收收长长度度函函数数C 语语言言语语法法: int mp_length(int nCard,int nPort)功功能能 :查询指定 MPB252P 卡的指定端口接收缓冲区长度函数。输输入入 :nCard:0 序卡号, 0 表示第一块卡, 1 表示第二块卡,最多支持8 块卡, nCard 的有效范围为07;nPort:0 序端口号, 0 表示第一个端口, 1 表示第二个端口。返返回回 : 0:已接

29、收数据长度,等待读取; 0:当前缓冲区无数据;1:表示不支持的卡号,卡号范围为07;2:表示不支持的端口号,端口号的范围为01;3:表示指定的MPB252P 卡尚未打开,需要首先使用mp_open 函数打开该卡;4:表示指定的端口已设置为禁止。说说明明 :如果成功则返回端口接收缓冲区目前已接收数据帧的长度(0 表示无接收数据 ),否则返回值为负数。当应用程序读取较慢时,接收数据根据设置的缓冲区模式,接收数据将存放到接收缓冲区区内排队,等待应用程序读取。代代码码示示例例 :下面的代码打开第一块卡,并查询第一个端口的接收缓冲区数据帧长度,操作结束后关闭该卡。mp_open(0);len=mp_le

30、ngth(0,0);mp_close(0);6.5 端端口口接接收收函函数数C 语语言言语语法法:int mp_read(int nCard,int nPort,BYTE* pBuffer,int nBufLen)功功能能 :接收指定 MPB252P 卡的指定端口数据函数。输输入入 :nCard:0 序卡号, 0 表示第一块卡, 1 表示第二块卡,最多支持8 块卡, nCard 的有效范围为07;nPort:0 序端口号, 0 表示第一个端口, 1 表示第二个端口;pBuffer:接收数据指针。nBufLen:接收缓冲区长度。返返回回 :0:接收数据帧的长度; 0:无接收数据;1:表示不支持的

31、卡号,卡号范围为07;2:表示不支持的端口号,端口号的范围为01;3:表示指定的MPB252P 卡尚未打开,需要首先使用mp_open 函数打开该卡。4:表示指定的端口已设置为禁止。说说明明 :如果接收成功返回接收数据帧的长度(0 表示无接收数据 ),否则返回值为负数。注注意意:MPB252P 卡接收到的数据最后一个字节为附加的状态字节,其D7位为帧有效位( D7=1,表示该帧有效; D7=0,表示该帧无效) ,D5位为 CRC 校验正确标志位( D5=1,表示 CRC 校验正确; D5=0,表示 CRC 校验错误)。有效的、 CRC 校验正确的帧,其状态字节为0 xA0。状态字节的内容数据位

32、数据位D7D6D5D4D3D2D1D0含义含义帧有效位保留CRC 校验标志位保留代代码码示示例例 :下面的代码打开第一块卡,并查询第一个端口的接收缓冲区数据帧长度,如果有数据,将数据接收到用户分配的缓冲区中,操作结束后关闭该卡。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 等等待待所所有有端端口口接接收收事事件件函函数数C 语语言言语语法法: int mp_waitrecv(unsigned int

33、 unMilliseconds)功功能能 :等待安装的所有端口的接收事件函数。输输入入 :unMilliseconds:等待的超时时间 (ms),INFINITE 表示一直等待,直到任意端口有接收事件产生。返返回回 :=0:总端口号;6:无接收数据。说说明明 :mp_waitrecv 函数等待所有端口的数据接收,如果有一个端口有接收数据,则返回该端口号与卡号计算出的总端口号,总端口号与卡号和端口号的对应关系如下:总端口号卡号X 2+端口号例如卡 0 端口 1 的总端口号为0X2+1=1,卡 1 端口 0 的总端口号为1X2+0=2,等等。当多个端口有接收数据帧时,返回其中的最小端口序号,再使用

34、 mp_length 函数确认是哪些端口有接收数据。所有端口均无接收数据时,返回 6。代代码码示示例例 :为提高应用程序的效率,MPB252P 卡提供事件方式的接收支持,当 MPB252P 的某端口接收到完整的数据帧时,产生同步事件通知应用程序,应用通过调用mp_waitrecv 函数来等待接收。下面的代码打开第一块卡,并在50ms 内等待端口接收数据,如果有数据,则查询端口接收长度并接收数据,操作结束后关闭该卡。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 等等待待指指定定板板卡卡接接收收事事件件函函数数C 语语言言语语法法: int mp_waitrecv(int nCard,unsigned int unMilliseconds)功功能能 :等待指定板卡2 个端口的接收事件函数。输输入入 :nCard:0 序卡号, 0 表示第一块卡, 1 表示第二块卡,最多支持8 块卡, nCard 的有效范围为07;unMilliseconds:等待的超时时间 (ms),INFINITE 表示一直等待,直到指定板卡有接收事件产生。返返回回 :=0:接收端口号;1:表示不支持的卡号,卡号范围为07;3: 表

36、示指定的 MPB252P 卡尚未打开,需要首先使用mp_open 函数打开该卡。6:表示所有端口均无接收数据。说说明明 :mp_waitrecv 函数等待指定板卡端口的数据接收,如果有一个端口有接收数据,则返回该端口号。当多个端口有接收数据帧时,返回其中的最小端口序号,可使用mp_length 函数确认大于该端口号的其它端口是否有接收数据,或再次使用mp_waitrecv 函数。代代码码示示例例 :为提高应用程序的效率,MPB252P 卡提供事件方式的接收支持,当 MPB252P 的某端口接收到完整的数据帧时,产生同步事件通知应用程序,应用通过调用mp_waitrecv 函数来等待接收。下面的

37、代码打开第一块卡,并在50ms 内等待端口接收数据,如果有数据,则查询端口接收长度并接收数据,操作结束后关闭该卡。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 等等待待指指定定端端口口接接收收事事件件函函数数C C 语语言言语语法法:int mp_waitrecv(int nCard,int nPort,unsigned int unMilliseconds)功功能能 :等待指定端口的接收事件函数。输输入入

38、:nCard:0 序卡号, 0 表示第一块卡, 1 表示第二块卡,最多支持8 块卡, nCard 的有效范围为07;nPort:0 序端口号, 0 表示第一个端口, 1 表示第二个端口;unMilliseconds:等待的超时时间 (ms),INFINITE 表示一直等待,直到指定端口有接收事件产生。返返回回 : 1:指定接收端口有接收数据; 0:指定端口无接收数据;1:表示不支持的卡号,卡号范围为07;2:表示不支持的端口号,端口号的范围为01;3: 表示指定的 MPB252P 卡尚未打开,需要首先使用mp_open 函数打开该卡。6:表示所有端口均无接收数据。说说明明 :mp_waitre

39、cv 函数等待指定端口的数据接收,如果该端口有接收数据,则返回 1,否则,返回0。代代码码示示例例 :为提高应用程序的效率,MPB252P 卡提供事件方式的接收支持,当 MPB252P 的某端口接收到完整的数据帧时,产生同步事件通知应用程序,应用通过调用mp_waitrecv 函数来等待接收。下面的代码打开第一块卡,并在50ms 内等待第一个端口的接收数据,如果有数据,则查询端口接收长度并接收数据,操作结束后关闭该卡。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 读读取取端端口口状状态态函函数数C 语语言言语语法法: int mp_getstatus(int nCard,PCARDSTATUS pCS)功功能能 :读取端口状态函数。端口工作状态用如下的结构描述: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:设备发送忙计数;ulSendFrameTotalCount:端口发送帧计数;ulRecvFullTotalCount:端口接收忙 (应用程序未及时从缓冲区读走数据 )计数;ulRecvFrameTotalCount:端口接收帧计数;ulRecvOverflowCount:端口接收溢出错误,如数据超长等。输输入入 :nCard:0 序卡号, 0 表示第一块卡, 1

42、 表示第二块卡,最多支持8 块卡, nCard 的有效范围为07;pCS:端口状态结构指针,需要由用户分配存储空间。返返回回 : 0:表示状态读取成功;1:表示不支持的卡号,卡号范围为07;3: 表示指定的 MPB252P 卡尚未打开,需要首先使用mp_open 函数打开该卡。说说明明 :如果读取成功,则返回0,并将端口工作状态填充到pCS 中;读取失败返回值为 -1。操作结束后,在关闭MPB252P 适配卡前,可以使用mp_getstatus 函数读取该卡的端口工作状态。代代码码示示例例 :下面的代码打开第一块卡,操作后读取端口状态。CARDSTATUS cs;mp_open(0);mp_g

43、etstatus(0,&cs);6.10 非非数数字字量量函函数数错错误误码码说说明明MPB252P API 函数返回错误码及含义如下:1:表示不支持的卡号,卡号范围为07;2:表示不支持的端口号,端口号的范围为02;3:表示指定的MPB252P 卡尚未打开,需要首先使用mp_open 函数打开该卡。4:表示指定的端口已设置为禁止;5:表示发送长度超过限制,最大缓冲区长度根据设定的缓冲区模式,分别为 4096、2048、1024、512、256、128 字节;6:表示所有端口均无接收数据。6.11 写写数数字字量量输输出出函函数数C C 语语言言语语法法: int mp_dout(in

44、t nCardNo,int nPort,BYTE byOutput)功功能能 :写 MPB252P 卡端口数字量输出函数输输入入 :nCard:0 序卡号, 0 表示第一块卡, 1 表示第二块卡,最多支持8 块卡, nCard 的有效范围为07;nPort:0 序端口号, 0 表示第一个端口, 1 表示第二个端口;byOutput:byOutput 0 输出数字量 1 byOutput=0:端口读入的数字量-1:卡号非法-2:端口号非法-3:卡未打开-4:路号非法说说明明 :读取数字量成功返回值大于等于0,返回值即为读取的数字量;读取数字量失败返回值小于0 值,含义见返回说明。代代码码示示例例

45、 :下面的代码打开第一块卡,并且读取端口1 的通道 1 的输入量,操作结束后关闭该卡。mp_open(0);BYTE byData;byData = 0;byData = mp_din(0, 0, 0);mp_close(0);6.13 等等待待所所有有板板卡卡的的数数字字量量输输入入事事件件函函数数C C 语语言言语语法法: int mp_waitdin(unsigned int unMilliseconds)功功能能 :等待所有板卡的数字量输入事件函数输输入入 :unMilliseconds:等待的超时时间 (ms),INFINITE 表示一直等待,直到任意端口有数字量输入事件产生。返返回

46、回 :=0:总端口号;6:无数字量数据事件。说说明明 :mp_waitdin 函数等待所有端口的数据接收,如果有一个端口有接收数据,则返回该端口号与卡号计算出的总端口号,总端口号与卡号和端口号的对应关系如下:总端口号卡号X 2+端口号例如卡 0 端口 1 的总端口号为0X2+1=1,卡 1 端口 0 的总端口号为1X2+0=2,等等。当多个端口有输入量数据时,返回其中的最小端口序号,所有端口均无接收数据时,返回6。代代码码示示例例 :为提高应用程序的效率,MPB252P 卡提供事件方式的接收支持,当 MPB252P 的某端口接收数字量输入事件时,产生同步事件通知应用程序,应用通过调用mp_wa

47、itdin 函数来等待接收。下面的代码打开第一块卡,并在50ms 内等待端口输入量,如果有数据,则读取数字量数据,操作结束后关闭该卡。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 等等待待指指定定板板卡卡的的数数字字量量输输入入事事件件函函数数C 语语言言语语法法: int mp_waitdin (int nCa

48、rd,unsigned int unMilliseconds)功功能能 :等待指定板卡的数字量输入事件函数。输输入入 :nCard:0 序卡号, 0 表示第一块卡, 1 表示第二块卡,最多支持8 块卡, nCard 的有效范围为07;unMilliseconds:等待的超时时间 (ms),INFINITE 表示一直等待,直到指定板卡有接收事件产生。返返回回 :=0:接收端口号;1:表示不支持的卡号,卡号范围为07;3: 表示指定的 MPB252P 卡尚未打开,需要首先使用mp_open 函数打开该卡。6:表示所有端口均无数字量输入。说说明明 :mp_waitdin 函数等待指定板卡端口的数据接

49、收,如果有一个端口有接收数据,则返回该端口号。当多个端口有接收数据帧时,返回其中的最小端口序号。代代码码示示例例 :为提高应用程序的效率,MPB252P 卡提供事件方式的接收支持,当 MPB252P 的某端口接收数字量输入事件时,产生同步事件通知应用程序,应用通过调用mp_waitdin 函数来等待接收。下面的代码打开第一块卡,并在50ms 内等待端口输入量,如果有数据,则读取数字量数据,操作结束后关闭该卡。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 等等待待指指定定端端口口的的数数字字量量输输入入事事件件函函数数C 语语言言语语法法: int mp_waitdin(int nCardNo,int nPort,unsigned int unMilliseconds);功功能能 :等待指定板卡的数字量输入事件函数。输输入入 :nCard:0 序卡号, 0 表示第一块卡, 1 表示第二块卡,最多支持8 块卡, nCard 的有效范围为07;unMilliseconds:等待的超时时间 (ms),INFINITE 表示一直等待,直到指定板卡有接收事件产生。返返回回 :=0:接收通道号;1:表示不支持

51、的卡号,卡号范围为07;3: 表示指定的 MPB252P 卡尚未打开,需要首先使用mp_open 函数打开该卡。6:表示所有端口均无数字量输入。说说明明 :mp_waitdin 函数等待指定板卡端口的数据接收,如果有一个端口有接收数据,则返回该接收通道号。当多个端口有接收数据帧时,返回其中的最小端口序号。代代码码示示例例 :为提高应用程序的效率,MPB252P 卡提供事件方式的接收支持,当 MPB252P 的某端口接收数字量输入事件时,产生同步事件通知应用程序,应用通过调用mp_waitdin 函数来等待接收。下面的代码打开第一块卡,并在50ms 内等待端口输入量,如果有数据,则读取数字量数据

52、,操作结束后关闭该卡。BYTE byData;mp_open(0);if (nPort = mp_waitdin(0, 0,50) = 0)for(i=0;i0)byData = k; mp_close(0);6.16 等等待待指指定定端端口口指指定定路路的的数数字字量量输输入入事事件件函函数数C C 语语言言语语法法:int mp_waitdin(int nCardNo,int nPort,int nChn,unsigned int unMilliseconds);功功能能 :等待指定端口指定路的数字量输入事件函数。输输入入 :nCard:0 序卡号, 0 表示第一块卡, 1 表示第二块卡,

53、最多支持8 块卡, nCard 的有效范围为07;nPort:0 序端口号, 0 表示第一个端口, 1 表示第二个端口;nChn:0 序通道号, 0 表示第一路通道, 1 表示第二个, nChn有效范围 01;unMilliseconds:等待的超时时间 (ms),INFINITE 表示一直等待,直到指定端口有接收事件产生。返返回回 : =0:接收通道号;1:表示不支持的卡号,卡号范围为07;3: 表示指定的 MPB252P 卡尚未打开,需要首先使用mp_open 函数打开该卡。4:路号非法。6:表示所有端口均无数字量输入。说说明明 : mp_waitdin 函数等待指定板卡端口的数据接收,如果有一个端口有接收数据,则返回该接收通道号。当多个端口有接收数据帧时,返回其中的最小端

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论