TYRM3000动态库接口函数说明文档

TYRM3000动态库接口函数说明文档1.主要接口函数
PortOpen (PBYTE pszPort, PBYTE pszBuildCommDCB);
PortClose(void);
SendData (char ch1,char ch2, PBYTE pszReadData, int nReadLen);
CPUPowerOnOrDown (char ch1,char ch2, char mid ,PBYTE pszReadData, int nReadLen);
CPUSendAPDU (char ch1,char ch2, char mid, PBYTE pszSendData ,int nSendLen ,PBYTE pszReadData, int nReadLen);
2.函数说明
2.1 PortOpen(PBYTE pszPort, PBYTE
pszBuildCommDCB)
类型: bool;
返回值:
True--成功,
False--失败;
函数描述:根据参数打开指定串口;
参数定义:
pszPort –串口号,如”COM1”;
pszBuildCommDCB –串口设置参数, 如”COM1:9600,n,8,1”;
2.2 P ortClose(void)
类型: bool,
返回值:
True--成功,
False--失败;
函数描述:关闭串口,必须在调用函数PortOpen之后才能调用;
参数定义:无;
2.3 S endData (char ch1,char ch2, PBYTE
pszReadData, int nReadLen)
类型: int;
返回值:
1--收发正确
2--发送错误
3--接收错误
4--接收数据错误;
函数描述:发送功能指令;
参数定义:
ch1 -- 命令标识1,如41(参照附指令代码)
ch2 -- 命令标识2, 如52(参照附指令代码)
注:如下发查询指令,功能码为”c””A”,则ch1=99(“c”的ASCII码)
Ch2=65(“A”的ASCII码)
pszReadData --接收数据缓冲区
nReadLen -- 接收数据缓冲区大小.
2.4 DLL_EXP int PASCAL CPUPowerOnOrDown (char ch1,char ch2, char mid ,PBYTE pszReadData, int nReadLen);
类型: int;
返回值:
1--收发正确
2--发送错误
3--接收错误
4--接收数据错误;
函数描述:CPU卡上电和下电发送指令;
参数定义:
ch1 -- 命令标识1,如41(参照附指令代码)
ch2 -- 命令标识2, 如52(参照附指令代码)
注:如下发查询指令,功能码为”c””A”,则ch1=99(“c”的ASCII码)
Ch2=65(“A”的ASCII码)
mid --卡机编号,一般默认为0,即mid='0'
pszReadData --接收数据缓冲区
nReadLen -- 接收数据缓冲区大小
示例了:
根据TYRM-3000协议说明书中可知,CPU卡上电指令为"hB",卡机编号为0,则上电指令下:
缓冲区pszReadData[1024]
接收返回数据nReadLen=300
CPUPowerOnOrDown ('h','B', '0' ,pszReadData[0], 300);
2.5 DLL_EXP int PASCAL CPUSendAPDU (char ch1,char ch2, char mid, PBYTE pszSendData ,int nSendLen ,PBYTE pszReadData, int nReadLen);
类型: int;
返回值:
1--收发正确
2--发送错误
3--接收错误
4--接收数据错误;
函数描述:发送APDU指令函数;
参数定义:
ch1 -- 命令标识1,如41(参照附指令代码)
ch2 -- 命令标识2, 如52(参照附指令代码)
注:如下发查询指令,功能码为”c””A”,则ch1=99(“c”的ASCII码)
Ch2=65(“A”的ASCII码)
mid --卡机编号,一般默认为0,即mid='0'
pszSendData --发送的APDU指令缓冲区
nSendLen --发送缓冲区中数据长度
pszReadData --接收数据缓冲区
nReadLen -- 接收数据缓冲区大小
示例:
根据TYRM-3000协议说明书中可知,CPU卡发送APDU指令为"hC",卡机编号为0, pszSendData={A0 A4 00 00 02 2F E2}
没发送长度nSendLen=7
缓冲区pszReadData[1024]
接收返回数据nReadLen=300
CPUSendAPDU ('h','C', '0' ,pszSendData[0],7,pszReadData[0], 300); 附指令代码:。

合集下载

动态链接库教程

动态链接库教程

动态链接库教程动态链接库(Dynamic Link Library,简称DLL)是一种可由多个程序共享的库文件,它包含了一组函数和数据,可以在程序运行时加载和调用。

DLL 文件可用于将一些通用的功能封装成函数,供多个程序调用,从而提高代码的复用性和开发效率。

本文将详细介绍动态链接库的概念、使用方法以及制作过程。

一、动态链接库的概念动态链接库是一种包含了函数和数据的库文件,它可以在程序运行时被加载和调用。

与静态链接库相比,动态链接库的优势在于节省内存空间和提高代码的复用性。

当多个程序需要使用同一个功能时,它们可以共享同一个DLL文件,避免了重复编写相同的代码。

二、动态链接库的使用方法在使用动态链接库之前,我们首先需要了解动态链接库的编译、加载和调用过程。

1.编译动态链接库在创建 DLL 文件时,我们需要按照一定的规范编写代码,并将其编译成 DLL 文件。

编译时,需要指定导出函数的修饰符(如 _stdcall、_cdecl等),以及导出函数的声明。

这些步骤可以在开发环境(如Visual Studio)中完成。

2.加载动态链接库在程序运行时,需要加载 DLL 文件。

我们可以通过调用LoadLibrary 函数来加载 DLL,该函数返回一个句柄,表示 DLL 的实例。

加载 DLL 文件后,我们可以通过该句柄获取 DLL 中导出函数的地址。

3.调用动态链接库在获取到DLL中导出函数的地址后,我们可以通过函数指针来调用DLL中的函数。

通过函数指针,程序可以跳转到DLL中执行指定的函数,从而完成相应的功能。

三、制作动态链接库下面以C++语言为例,简单介绍如何制作一个动态链接库。

1.创建DLL工程在 Visual Studio 中创建一个 DLL 项目,选择 DLL(动态链接库)作为项目类型。

在项目中添加需要导出的函数,并在头文件中进行声明。

2.编写导出函数在 DLL 项目中编写需要导出的函数,并在函数前添加修饰符(如_stdcall、_cdecl等)。

动态链接库的使用方法

动态链接库的使用方法

动态链接库的使用方法动态链接库(Dynamic Link Library,DLL)是Windows系统中一种常见的文件类型,用于存储可被程序在运行时动态加载的函数和数据。

它可以提供代码和资源的共享,使得程序的安装包更小,节省了系统资源。

使用动态链接库有以下几个优点:1.模块化:将程序代码和资源划分为独立的模块,便于开发和维护。

2.共享性:多个程序可以共享同一个动态链接库,减少重复的代码和数据的存储。

3.动态加载:可以在程序运行时动态地加载和卸载动态链接库,提高了程序的灵活性和可扩展性。

1.创建动态链接库:使用C/C++编程语言可以创建动态链接库。

首先,在开发环境中创建新的DLL项目,并选择动态链接库的类型。

在项目中添加需要的代码和资源,并编写相应的函数和数据接口。

将这些接口封装在一个头文件中,并在源文件中实现具体的功能。

最后,编译项目生成动态链接库文件(.dll 文件)。

2.导出函数和数据:在动态链接库中,明确指定哪些函数和数据需要被其他程序调用。

在函数和数据的声明前加上__declspec(dllexport)关键字即可。

例如:```C++__declspec(dllexport) int Add(int a, int b);```3.调用动态链接库:在其他程序中调用动态链接库中的函数和数据,需要先导入相应的函数和数据。

使用C/C++编程语言可以创建一个头文件,其中包含要导入的函数和数据的声明。

例如:```C++__declspec(dllimport) int Add(int a, int b);__declspec(dllimport) extern double PI;```然后,在使用这些函数和数据的源文件中包含这个头文件即可。

4.加载和卸载动态链接库:在程序运行时,需要动态地加载动态链接库,并在使用完之后卸载。

可以使用LoadLibrary函数来加载动态链接库,使用FreeLibrary函数来卸载动态链接库。

动态库函数说明

动态库函数说明

测试案例运行环境要求操作系统必须是Windows XP, Windows 2003 Server或以上. (不支持Windows 2000及以下系统)系统要求安装.NET Framework1.1环境, 如果没有, 可以从wcomm_sdk\dotNetFramework1.1\dotnetfx.exe进行安装测试案例演示如下功能:读取控制器运行信息(时间, 刷卡记录数, 权限数, 最近一条刷卡记录, 门磁状态, 按钮状态, 故障信息)读取控制器IP, 设置IP(仅用于.NET 控制器)校准控制器时间远程开1号门提取记录删除已提取的记录发送权限操作(1.先清空权限, 2. 再添加权限)发送控制时段实时监控10 Samples程序(wcomm_sdk\V1.0\Samples) (3)10.1 VB6.0 (3)10.1.1 目录: wcomm_sdk\V1.0\Samples\VB6.0\485 Controller-VB6.0 (3)11 刷卡记录描述 (4)12 WComm_Serial控件[WComm_Serial.dll串口通信] (7)12.1 CWComm_Serial类 (7)12.1.1 serial_comm函数 (7)12.1.2 *ErrCode 属性 (7)13 WComm_UDP控件(WComm_UDP.dll) (8)13.1 WComm_Operate类 (8)13.1.1 udp_comm 函数 (8)13.1.2 ErrCode 属性 (8)13.1.3 ErrMessage 属性 (9)13.1.4 CreateBstrCommand 函数 (9)13.1.5 CreateBstrCommandOfAdjustClockByPCTime函数 (9)13.1.6 GetSwipeDateFromRunInfo函数 (9)13.1.7 与日期时间相关指令 (10)13.1.8 MSDateYmdToWCDateYmd 函数 (10)13.1.9 MSDateHmsToWCDateHms 函数 (10)13.1.10 WCDateToMSDate函数 (10)13.1.11 读取运行状态信息的数据帧分析指令 (11)13.1.12 GetSNFromRunInfo函数 (11)13.1.13 GetClockTimeFromRunInfo函数 (11)13.1.14 GetCardRecordCountFromRunInfo函数 (11)13.1.15 GetPrivilegeNumFromRunInfo函数 (12)13.1.16 GetDoorStatusFromRunInfo函数 (12)13.1.17 GetButtonStatusFromRunInfo函数 (12)13.1.18 GetErrorNoFromRunInfo函数 (12)13.1.19 其它 (13)13.1.20 NumToStrHex函数 (13)13.1.21 StrHexToNum函数 (13)13.1.22 CardToStrHex函数 (13)13.1.23 minUDPWaitTimeout属性 (14)10Samples程序(wcomm_sdk\V1.0\Samples)运行环境要求操作系统必须是Windows XP, Windows 2003 Server. (不支持Windows 2000及以下系统)系统要求安装.NET Framework1.1环境, 如果没有, 可以从wcomm_sdk\dotNetFramework1.1\dotnetfx.exe进行安装测试案例演示如下功能:读取控制器运行信息(时间, 刷卡记录数, 权限数, 最近一条刷卡记录, 门磁状态, 按钮状态, 故障信息)读取控制器IP, 设置IP(仅用于.NET 控制器)校准控制器时间远程开1号门提取记录删除已提取的记录发送权限操作(1.先清空权限, 2. 再添加权限)发送控制时段实时监控10.1 VB6.0运行环境要求操作系统必须是Windows XP, Windows 2003 Server. (不支持Windows 2000及以下系统)系统要求安装.NET Framework1.1环境基本步骤.安装V isual Studio 6.0 (开发平台).安装dotnetfx.exe:, 运行wcomm_sdk\dotNetFramework1.1\dotnetfx.exe.注册控件, 运行wcomm_sdk\V1.0\Bin\WComm_REG2003.bat.打开VB6.0, "工程"->"引用..." ,在”可用的引用”中选择2个(在每个项目中都要加入此两引用):WComm_Serial 1.0 Type LibraryWComm_UDP 1.0 Type Library10.1.1目录: wcomm_sdk\V1.0\Samples\VB6.0\485 Controller-VB6.0485控制器操作示例:对控制器S/N 26604, 通信口为COM1, 进行操作.测试用的3个卡: [注意: 卡号按从小到大排列进行赋值]cardno(0) = 342681cardno(1) = 7217564cardno(2) = 25409969可依据实际情况进行修改.11刷卡记录描述(卡号小于100表示特殊操作记录)12WComm_Serial控件[WComm_Serial.dll串口通信]12.1 CWComm_Serial类12.1.1serial_comm函数与485控制器进行串口通信.HRESULT serial_comm (BSTR bstrCommand, BSTR bstrPort, BSTR* pbstrInfo);参数bstrCommand 发送给控制器指令帧bstrPort 通信端口, 分别以COM1, COM2 字符串表示pbstrInfo 控制器返回的数据帧(如果为空, 则查ErrCode找原因)返回值异常/错误见ErrCode说明12.1.2*ErrCode 属性返回出错代码. 只读Public ReadOnly Property ErrCode() As Long13WComm_UDP控件(WComm_UDP.dll)系统要求操作系统必须是Windows XP, Windows 2003 Server. (不支持Windows 2000及以下系统)此控件必须运行在.NET Framework1.1环境下13.1 WComm_Operate类13.1.1udp_comm 函数与.NET控制器进行交互通信.Public Function udp_comm(ByV al commandString As String, ByV al ipAddr As String, ByV al ipPort As Integer) As String参数commandString 发送给控制器指令帧ipAddr 控制器的IP地址, 如果为空, 则采用广播包方式ipPort 控制器的通信端口, 默认是60000返回值控制器返回的数据帧(如果为空, 则表示没有返回数据)异常/错误见ErrCode说明备注PC发出一条指令, 如果指定的.NET控制器接收后, 会返回相应数据.13.1.2ErrCode 属性返回出错代码. 只读Public ReadOnly Property ErrCode() As Long返回值13.1.3ErrMessage 属性返回与错误号为-53相关的出错信息. 只读.Public ReadOnly Property ErrMessage() As String '系统异常时返回的信息返回值ErrCode=-53时出错的参考信息(可能为空)13.1.4CreateBstrCommand 函数生成发送给控制器的指令帧.Function CreateBstrCommand(ByV al controllerSN As Long, ByV al strFuncData As String) As String参数controllerSN 控制器序列号S/N, 也就是控制器上标签号S/N后数字strFuncData 操作功能及参数值[协议文档中的指令帧中序号从3到30的字节, 在此用字符串表示]返回值生成的指令帧(如果为空, 则查ErrCode找原因)异常/错误见ErrCode说明13.1.5CreateBstrCommandOfAdjustClockByPCTime函数生成校准控制器时间的指令帧.Function CreateBstrCommandOfAdjustClockByPCTime(ByV al controllerSN As Long) As String参数l controllerSN 控制器序列号S/N, 也就是控制器上标签号S/N后数字strFuncData 操作功能及参数值[协议文档中的指令帧中序号从3到30的字节, 在此用字符串表示]返回值生成的指令帧(以当前计算机时间为准)(如果为空, 则查ErrCode找原因)异常/错误见ErrCode说明13.1.6GetSwipeDateFromRunInfo函数从读取运行信息或读取记录的指令中获取—卡号, 状态, 及时间.Function GetSwipeDateFromRunInfo(ByV al strRunInfo As String, ByRef cardId As Long, ByRef status As Long) As String参数strRunInfo (指令1081,108D返回的, 含有刷卡记录的)数据帧cardId 8位的卡号status 刷卡状态返回值刷卡年月日时分秒[yyyy-MM-dd hh:mm:ss](如果为空, 表明没有刷卡记录或查ErrCode是否有异常)异常/错误见ErrCode说明13.1.7与日期时间相关指令13.1.8MSDateYmdT oWCDateYmd 函数将yyyy-MM-dd日期格式转换成控制器使用的两个字节的ymd短日期格式(详见协议) Function MSDateYmdToWCDateYmd(ByV al strMSDateYmd As String) As String参数strMSDateYmd 长日期格式yyyy-MM-dd 年月日返回值短日期格式的YMDL YMDH [年月日的低位, 高位](如果为空, 则查ErrCode找原因)异常/错误见ErrCode说明13.1.9MSDateHmsT oWCDateHms 函数将HH:mm:ss 时间格式转换成控制器使用的双字节的hms格式(详见协议)Function MSDateHmsToWCDateHms(ByV al strMSDateHms As String) As String参数strMSDateHms 长时间格式hh:mm:ss 时分秒返回值短时间格式的HMSL HMSH [时分秒的低位, 高位](如果为空, 则查ErrCode找原因)异常/错误见ErrCode说明13.1.10WCDateT oMSDate函数将控制器的短时间日期格式转换成微软时间格式(详见协议)Function WCDateToMSDate(ByV al strWCDate As String) As String参数strWCDate YMDL YMDH HMSL HMSH [年月日的低位, 高位; 时分秒的低位, 高位] 返回值输出日期时间(采用格式yyyy-MM-dd HH:mm:ss [年-月-日时:分:秒])(如果为空, 则查ErrCode找原因)异常/错误见ErrCode说明13.1.11读取运行状态信息的数据帧分析指令13.1.12GetSNFromRunInfo函数从运行信息中获取--控制器序列号.Function GetSNFromRunInfo(ByV al strRunInfo As String) As Long参数strRunInfo 接收到的数据帧返回值产品序列号异常/错误见ErrCode说明13.1.13GetClockTimeFromRunInfo函数从运行信息中获取--控制器时钟.Function GetClockTimeFromRunInfo(ByV al strRunInfo As String) As String参数strRunInfo 接收到的数据帧返回值输出格式为yyyy-MM-dd HH:mm:ss 的控制器时钟(如果为空, 则查ErrCode找原因)异常/错误见ErrCode说明13.1.14GetCardRecordCountFromRunInfo函数从运行信息中获取--刷卡记录数.Function GetCardRecordCountFromRunInfo(ByV al strRunInfo As String) As Long 参数strRunInfo 接收到的数据帧返回值刷卡记录数异常/错误见ErrCode说明13.1.15GetPrivilegeNumFromRunInfo函数从运行信息中获取--权限数.Function GetPrivilegeNumFromRunInfo(ByV al strRunInfo As String) As Long参数strRunInfo 接收到的数据帧返回值权限数异常/错误见ErrCode说明13.1.16GetDoorStatusFromRunInfo函数从运行信息中获取--指定门的门磁状态.Function GetDoorStatusFromRunInfo(ByV al strRunInfo As String, ByV al lngDoorNo As Long) As Long 参数strRunInfo 接收到的数据帧lngDoorNo 指定的门,从1(表示1号门)开始,最大是4返回值指定门的门磁状态[=1表示门开, =0 表示门关]异常/错误见ErrCode说明13.1.17GetButtonStatusFromRunInfo函数从运行信息中获取--指定门的按钮状态.Function GetButtonStatusFromRunInfo(ByV al strRunInfo As String, ByV al lngDoorNo As Long) As Long 参数strRunInfo 接收到的数据帧lngDoorNo 指定的门,从1(表示1号门)开始,最大是4返回值指定门的按钮状态[=1表示按钮松开, =0 表示按钮按下]异常/错误见ErrCode说明13.1.18GetErrorNoFromRunInfo函数从运行信息中获取--故障号.Function GetErrorNoFromRunInfo(ByV al strRunInfo As String) As Long参数strRunInfo 接收到的数据帧返回值故障号(>0表明有故障)[详细见协议]异常/错误见ErrCode说明13.1.19其它13.1.20NumT oStrHex函数将十进制数按十六进制转换成低位在前,高位在后的字符串.Function NumToStrHex(ByV al num As Long, ByV al Len As Long) As String 参数num 要转换的数字Len 要转换的字节长度返回值转换为十六进制后的字符串异常/错误见ErrCode说明13.1.21StrHexT oNum函数将十六进制(低位在前,高位在后)的字符串转换成十进制数.Function StrHexToNum(ByV al strHex As String) As Long参数strHex 十六进制(低位在前,高位在后)的字符串返回值转换后的数字异常/错误见ErrCode说明13.1.22CardT oStrHex函数将8位卡号按十六进制转换成低位在前,高位在后的字符串.Function CardToStrHex(ByV al cardId As Long) As String参数cardId 要转换的卡号返回值转换为十六进制后的字符串(6个字符, 低位字节在前, 高位字节在后) 异常/错误见ErrCode说明13.1.23minUDPWaitTimeout属性与.NET控制器通信时的最小等待时间(单位是ms毫秒). 读/写Public Property minUDPWaitTimeout() As Long备注如果minUDPWaitTimeout值小于1秒, 系统以1秒为最小等待时间. 主要用于网络延时较大环境.正常使用时不用修改.。

如何使用动态链接库中的函数

如何使用动态链接库中的函数

如何使用动态链接库中的函数动态链接库中的函数导出成功后,其它EXE程序要使用导出函数,就会涉及到如何调用动态链接库。

调用DLL也分为两种方法:隐式调用和显示调用:1、隐式调用隐式链接的特点是由编译器完成对DLL的加载和程序结束时对DLL的卸载工作,如果程序结束时如果还有其他应用程序使用该DLL,那么系统会使DLL的使用计数减1,当DLL的使用计数降为0时,会将DLL从内存中删除。

★优缺点:隐式链接DLL的方法简单实用,但缺少灵活性。

■使用方法:使用隐式链接DLL开发时,首先,需要将DLL的引入库文件(*.lib--编译生成DLL时,会一起生成的)与应用程序进行静态链接,因为引入库文件包含DLL的各种输出资源,如导出函数,导出类等信息,这些信息指向DLL 的函数指针等等,EXE执行时,DLL被“自动”加载,EXE退出时DLL被“自动”卸载。

对上节所讲的Add()函数进行隐式调用:#pragma comment(lib,"D:\\DllTest\\Debug\\DllTest.lib")_declspec(dllimport) int Add(int a,int b);2、显示调用:显示链接方式是完全由编程者用API 加载和卸载DLL,编程者可以决定何时加载DLL,加载哪个DLL,何时卸载DLL,卸载哪个DLL等。

★优缺点:显示链接方式充分体现了DLL的灵活性,是比较常用的调用DLL 方式。

但是与静态链接相比稍微复杂了些。

■使用方法:LoadLibrary(...):该 API 用于加载指定的DLL;GetProcAddress(...):该 API 用于获取DLL中导出函数的指针,即导出函数的入口点;FreeLibrary(...):该 API 用于卸载指定的DLL。

〓注:如果程序中多次调用LoadLibrary(...)加载同一DLL时,在卸载的时候也要调用相应次数的FreeLibrary(...)进行卸载。

水表动态库函数接口说明

水表动态库函数接口说明
-31:表 1(大口径水表)购买量大于 65535 -32:表 2(大口径水表)购买量大于 65535 -33:表 3(大口径水表)购买量大于 65535
-12:表 1 的购买次数小于 0 -13:表 2 的购买次数小于 0 -14:表 3 的购买次数小于 0 -15:表 4 的购买次数小于 0 -16:表 5 的购买次数小于 0
纯净水水表:0.01-655.35
-42:单位号大于 27000 -51:校验码 1 错误
四、清零卡 清次卡 清故障卡 extern "C" _declspec(dllexport) int _stdcall qinglingdata
( unsigned int idwh, unsigned char ixianzhics , unsigned char ics, unsigned char ikbs, unsigned char * ibuffer
( unsigned int idwh , double iyuzhil, unsigned char ileijiayn, unsigned char ixianzhics,unsigned char ics, unsigned char ibx , unsigned char * ibuffer
-1:表 1 的购买量小于 0 -2:表 2 的购买量小于 0 -3:表 3 的购买量小于 0 -4:表 4 的购买量小于 0 -5:表 5 的购买量小于 0
-6:表 1(普通水表)的购买量大于 6553.5 -7:表 2(普通水表)的购买量大于 6553.5 -8:表 3(普通水表)的购买量大于 6553.5 -9:表 3(纯净水水表)的购买量大于 655.35 -10:表 4 购买量大于 6553.5 -11:表 5 购买量大于 6553.5

智能电能表远程功能函数动态库接口说明

智能电能表远程功能函数动态库接口说明

目录1.连接设备函数 (1)2. 关闭连接设备函数 (1)3.身份认证函数 (1)4.远程控制加密函数 (2)5.参数信息文件中的一类参数MAC计算函数 (3)6.当前套电价参数MAC计算函数 (3)7.备用套电价参数MAC计算函数 (4)8.二类参数加密函数 (4)9.远程充值函数 (5)10.钱包初始化 (6)11.密钥更新函数 (6)12.电量清零函数 (7)13.事件/需量清零函数 (8)14.红外认证请求函数 (8)15.红外认证函数 (9)16.数据回抄 (10)17.密文+MAC计算函数 (11)18.MAC计算函数 (12)19.软件比对数据加密函数 (12)20.钱包退费加密函数 (14)21.错误代码表 (15)1.连接设备函数功能描述连接设备。

函数Int OpenDevice()参数说明无。

函数返回:0 成功其他失败,见错误代码表2.关闭连接设备函数功能描述关闭设备。

函数Int CloseDevice()参数说明无。

函数返回:0 成功其他失败,见错误代码表3.身份认证函数功能描述:获取随机数以及密文,用于远程身份认证。

函数:int IdentityAuthentication(int Flag,char *PutDiv,char *OutRand,char*OutEndata)参数说明:Flag 整型,表示密钥状态,0: 公钥密钥状态;1: 正式密钥状态;PutDiv 表示输入的分散因子,字符型,长度8字节,“0000”+表号;OutRand 输出的随机数,字符型,长度8字节;OutEndata 输出的密文,字符型,长度8字节。

函数返回:0 成功其他失败,见错误代码表4.远程控制加密函数功能描述:远程拉闸、合闸、报警等控制数据加密。

函数:int UserControl(int Flag,char *PutRand,char *PutDiv,char *PutEsamNo,char *PutData, char *OutEndata)参数说明:Flag 整型,表示密钥状态,0: 测试密钥状态;1: 正式密钥状态;PutRand 表示输入的随机数,字符型,长度4字节,电表身份认证成功后返回;PutDiv 表示输入的分散因子,字符型,长度8字节,“0000”+表号;PutEsamNo 表示输入的ESAM序列号,复位信息的后8字节,字符型;PutData 表示跳闸、合闸、报警等控制命令明文,字符型;OutEndata 输出的密文,字符型。

使用动态链接库和API(分析“函数”文档)共8张PPT


20.4 在应用程序中使用API函数
• 前面,介绍了API的一些基础知识。下面将用几个 实例说明,在Visual Basic中使用API函数的具体 方法。
20.4.1 判断窗体是否已经显示
• (具体内容请参照本书)
20.4.2 获取鼠标在屏幕上的位置
• (具体内容请参照本书)
可通过OLE技术调用另一个应用程序。 可以调用Windows操作系统内置的Windows API函数。 为了在用户应用程序中使用DLL,应在代码中调用相应函数之前加以声明。 1 判断窗体是否已经显示 Windows API是功能强大且实用的函数集合,但它也非常脆弱。 利用其他程序设计语言(例如C++语言)编写代码,再从 Visual Basic中调用此类程序。 传递参数的类型错误便可能引起程序阻塞、停止,甚至使整个系统崩溃,这常常造成很大危害,特别是没有存盘的时候。 完成上述步骤后,用户程序便可实际的调用函数。 2 获取鼠标在屏幕上的位置 2 获取鼠标在屏幕上的位置 4 在应用程序中使用API函数 使用Visual Basic编写应用程序时,偶尔会遇到仅使用Visual Basic的控件没办法解决,或者解决起来很费劲的问题。 下面将用几个实例说明,在Visual Basic中使用API函数的具体方法。 传递参数的类型错误便可能引起程序阻塞、停止,甚至使整个系统崩溃,这常常造成很大危害,特别是没有存盘的时候。 在用Visual Basic进行应用程序的编制时,虽然Visual Basic能够完成几乎所有的Windows应用程序,不管是图形处理,多媒体应用还是 网络编程都可以胜任,而且开发起来非常的快捷方便。 (具体内容请参照本书)
下面将用几个实例说明,在Visual Basic中使用API函数的具体方法。 为了在用户应用程序中使用DLL,应在代码中调用相应函数之前加以声明。 前面,介绍了API的一些基础知识。 此时,解决问题最好的方法就是使用Windows操作系统自带的 Windows API函数。 在用Visual Basic进行应用程序的编制时,虽然Visual Basic能够完成几乎所有的Windows应用程序,不管是图形处理,多媒体应用还是 网络编程都可以胜任,而且开发起来非常的快捷方便。 程序需要告诉Visual Basic如何调用DLL,即需要声明过程及其定义的参数。 在了解了关于DLL的声明基础后,现在再介绍一个快捷方法。 在了解了关于DLL的声明基础后,现在再介绍一个快捷方法。 可通过OLE技术调用另一个应用程序。 完成上述步骤后,用户程序便可实际的调用函数。 可通过OLE技术调用另一个应用程序。

浙江海盐涵普控源动态库接口说明文档

浙江海盐涵普控源动态库接口说明文档海盐涵普控源动态库接口说明文档由于动态库是由Delphi编写的,因此它提供了Delphi函数的接口。

该函数使用的参数类型为整数和单精度类型。

与其他编程语言的兼容性应该没有问题。

因此,动态库接口的每个功能的以下描述由Delphi定义。

1、信号源升源函数1)三相升源功能、早期C型和D型平台升源功能:outputdata_gsub(plngajust:longint;plngsourcetype:longint;平纹:长;品脱时间:长;长波;波:长;varpdelay_u时间:delaytime):longint;stdcall;出口函数相应参数说明:Plngajust-----是否自动调整输出,1-调整,0-不调整。

Plngsourcetype-----信号源类型1、2为c形输出的信号源,?3为d输出的信号源,?4为dsp信号源(此处无效)参数说明:由于C型在2000年以前是一个老平台,现在很少,所以现在此函数主要用来控制d型台体,而dsp型则用函数dspoutput函数来实现(下文会有详细说明)。

Pintphase------相线1表示3p3w(三相三线有功)2表示3p3w(60var)(三相三线制60度无功功率)?3表示3p3w(90var)(三相三线制90度无功功率)?4表示3p3w(正弦无功功率)(三相三线正弦无功功率)?5表示3P4W(三相四线有源)6表示3p4w(90var)(三相四线90度无功)?7表示3p4w(正弦var)(三相四线正弦无功)Pintstatus------测试状态0---正向有功?1---反向有功?2---正向无功?3---反向无功Pintsequence-----相序1---正相序?2---逆相序PSNG电压、PSNG电流和PSNG频率指的是电压、电流和频率。

传输格式为单精度单类型其输入的数值为电表的额定电压、电流即频率数值。

pintiabc------电流相别0---表示ABC相三相电流输出?1---表示A相电流分相输出?2---表示B相电流分相输出?3---表示C相电流的分相输出pintib------电流负载该功能的输出格式为额定电流的百分比。

动态库串口函数说明(精简)

主题:通讯接口函数说明内容摘要:精简函数版本:2007-08-08 18:33日期:2008.01.25动态库名:DASCOMM.DLL通用命令(适用于消费系统和考勤门禁系统):1:HANDLE OpenComm(int CommPort)功能:打开串口参数:int CommPort:串口标志取值如下:0 —Com1, 1 —C om2 …返回:大于0为串口设备号,小于0 表示打开串口错误。

2:int CloseComm(HANDLE icdev)功能:关闭串口参数:HANDLE icdev:OpenComm() 返回的设备号返回:成功则返回0,小于0见错误代码3:int Hand_Shake(HANDLE icdev,int Node_Addr,LPCSTR Password)功能:握手参数:HANDLE icdev:OpenComm() 返回的设备号int Node_Addr:为节点号LPCSTR Password:握手密码,此密码由初始化系统卡时返回。

返回:成功则返回0,小于0见错误代码表备注:此函数常用于消费系统。

4:int Hand_Shake_N(HANDLE icdev,int Node_Addr)功能:握手参数:HANDLE icdev:OpenComm() 返回的设备号int Node_Addr:为节点号返回:成功则返回0,小于0见错误代码表备注:此函数常用于考勤系统、门禁系统。

5:int Set_NodeTime(HANDLE icdev,LPSTR DateTimes)功能:设置时间参数:HANDLE icdev:OpenComm() 返回的设备号LPSTR DateTimes:日期时间,格式为“YYYYMMDDHHMNSS”,如:1999年1月28日10点30分50秒为“19990128103050”返回:成功则返回0,小于0见错误代码表6:int Get_NodeTime(HANDLE icdev,LPSTR DateTime)功能:取时间参数:HANDLE icdev:OpenComm() 返回的设备号LPSTR DateTime:返回节点日期时间(时间格式同设置时间函数)返回:成功则返回0考勤系统使用的命令:1:int Get_Curr_Record(HANDLE icdev,LPINT Node_Addr,LPSTR Record_Data) 功能:读取节点当前记录,节点记录指针不变。

动态库的使用方法

动态库的使用方法
动态库(Dynamic Link Library,DLL)是一种包含可在多个程序中共享的代码和数据的文件格式。

动态库的使用方法如下:
1. 链接库文件:将动态库文件与源代码进行链接,以便使用其中的函数和数据。

在编译时,可以将库文件的路径添加到链接器的搜索路径中,并将库文件的名称添加到链接器的命令行参数中。

2. 导入函数:在程序中声明需要使用的库函数。

可以通过包含相应的头文件来获取函数的声明。

在编译时,链接器将使用库文件中的函数实现替换这些声明,以便在程序中调用它们。

3. 运行时加载库:在程序运行时,通过调用操作系统提供的加载库函数来加载动态库。

可以使用操作系统提供的加载函数,如LoadLibrary(Windows)或dlopen(Linux)。

加载库时,可以指定库文件的路径,并获取一个句柄或指针,以便后续使用。

4. 使用库函数:一旦库文件加载完成,在程序中就可以使用库函数了。

可以通过句柄或指针来调用库函数,并传递所需的参数。

库函数的执行结果将返回给程序进行处理。

5. 卸载库:在程序不再需要使用动态库时,可以调用操作系统提供的卸载库函数,如FreeLibrary(Windows)或dlclose (Linux),以释放库文件所占用的资源。

需要注意的是,动态库的使用方法可能会因操作系统和开发环境的不同而有所差异。

因此,在使用动态库时,最好根据具体的环境和要求进行相应的调整和配置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档