vfp调用delphi的dll(深圳亿合创二次开发)?

YUAN168 2014-10-13 04:32:40
1.设置端口信息
SetConnectInfo(IConnectType:Integer;InPort:Integer;ITcpAddress:string;InBaud:Word):Boolean; stdcall;far external 'ICXF.DLL' name '_SetConnectInfo@16';
功能:用于设置机器的通讯方式(串口还是tcp/ip通讯),只要是两种方式都可以通讯的涵数调用之前,都必须先调用此涵数来区分通讯方式
返回值:布尔型,调用成功返回真(TRUE),否则返回假(FALSE)
参数:
IConnectType:机器通方式,数据类型:整数型,取值0或1(0为串口通讯,1为tcp/ip通讯)
InPort:串口号,数据类型:整数型,取值从1开始,IConnectType为1即通讯方式是TCP/IP时,该参数不起作用,带入0就可以了
ITcpAddress: IP地址(例如192.168.001.005,注意:不能简化写成:192.168.1.5),数据类型:字符串;
InBaud:串口通讯时为机器通讯的波特率,波特率为9600,TCP/IP通讯时为端口号,端口号为9760+机器号
例如机号为1时,端口号是9761,机号为2时,端口号是9762,以此类推
调用实例:
232/485通讯,串口号为1,机号为1 SetConnectInfo(0,1,'',9600)
TCP/IP通讯,IP为192.168.001.022,机号为1, SetConnectInfo(1,0,'192.168.001,022',9760+1)
2.设置机号
function SetMacNO(MacNO, NewMac: Byte): integer; stdcall; far; external MDllName Name '_SetMacNO@8';
功能:修改机器的编号
返回值:整数型,1代表调用成功,否则代表调用失败
参数:
MacNO:指需要修改机器编号的那台设备的机器编号,字节型,取值1-255之间
NewMac: 指需要设置的新机器编号,字节型,取值1-255之间
===================================================================================以上是调用文档说明

=========================下面是vfp调用=======================
DECLARE SetConnectInfo IN "ICXF.DLL" AS _SetConnectInfo@16 Integer IConnectType,Integer InPort ,String ITcpAddress,INTEGER InBaud

MESSAGEBOX(SetConnectInfo(1,0,"200.200.200.240",9761)) &&这里返回的是 1 ,并不是逻辑型

DECLARE SetMacNO IN "ICXF.DLL" AS _SetMacNO@8 String MacNO,String NewMac

MESSAGEBOX(SetMacNO("001","002")) &&这里返回的是4,按文档说明,就是调用失败
...全文
167 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
YUAN168 2014-10-14
  • 打赏
  • 举报
回复
//读取卡信息 function ReadAllInfo(port, AreaNumber: byte;MM:string; var state, cardno:Integer; chinaxm,LogoutDate:PChar;var lsno:Integer; var balance,butiemoney,todayje,todaytime,butietime:integer; var gb,yj,lmac,istimemoney,Isclear:integer;Mima:PChar): integer; stdcall; far; external MDllName Name '_ReadAllInfo@76'; =================求这个的vfp使用方法=================
都市夜猫 2014-10-13
  • 打赏
  • 举报
回复
Declare Long ReadTime in ICXF.DLL Short MacNO, String @ RTime cTime = Replicate(Chr(0), 20) ? ReadTime(1, @ cTime), cTime
YUAN168 2014-10-13
  • 打赏
  • 举报
回复
3.获取时间 function ReadTime(MacNO: Byte; RTime: PChar): integer; stdcall; far; external MDllName Name '_ReadTime@8'; 功能:查询机器的当前时间 返回值:整数型,1代表调用成功,否则代表调用失败 参数: MacNO: 需要查询时间的机器编号,字节型,取值1-255之间 RTime: 查询到的时间,pchar指针型,需要分配20个内存空间 ====================================================像这种传值方式=============== 要如何调用,把查到的日期给到 RTime?
都市夜猫 2014-10-13
  • 打赏
  • 举报
回复
1. 返回 1,这个没问题,多数编程语言都认为 0 代表假,非 0 代表真, 所以返回 1 就代表返回了 True。如果一定要逻辑值的话,自己转换一下也可以,执行一下这个命令就知道了:? cast(0 as L), cast(1 as L) 2. 既然说明是要传入 Byte 类型的值,直接用数字型数据传入就可以了,声明改为: Declare Long SetMacNO in "ICXF.DLL" Short, Short 调用:? SetMacNO(1, 2) 一定要声明为字符型的话也不是不可以,传入的参数要转换一下,麻烦点: Declare Long SetMacNO in "ICXF.DLL" String, String 调用:? SetMacNO(bintoc(1,'rs'), bintoc(2,'rs'))

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧