dll二次开发:下载消费机的消费记录失败!
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)
9.手动下载流水
function ReadLSList(MacNO: Byte; Flag:Char ;var listcount:Integer; ls: PChar): integer; stdcall; far; external MDllName Name '_ReadLSList@16';
返回值:整数型,1代表调用成功,否则代表调用失败
//打开端口
function OpenCOMM():Boolean; stdcall;far external MDllName name '_OpenCOMM@0';
//关闭端口
function CloseCOMM():Boolean; stdcall;far external MDllName name '_CloseCOMM@0';
===========================以上是帮助的dll================
SetConnectInfo(1,0,'200.200.200.240',9762);
RTurn:=ReadAllTotalCountAndMoney(002,ConsumeCount,ConsumeMoney);
GetMem(RecodeBuf,1300);
OpenCOMM();
ReadLSList(2,'F',listcount,RecodeBuf);
------------以上是delphi----执行,没有问题
DECLARE INTEGER _SetConnectInfo@16 IN "ICXF.DLL" AS SetConnectInfo Integer ,Integer ,String ,INTEGER
IF SetConnectInfo(1,0,"200.200.200.240",9760+2)<>1
MESSAGEBOX("连接消费机失败!",0+64,"系统提示")
RETURN
ENDIF
DECLARE INTEGER _OpenCOMM@0 IN "ICXF.DLL" AS OpenCOMM
DECLARE INTEGER _CloseCOMM@0 IN "ICXF.DLL" AS CloseCOMM
DECLARE INTEGER _ReadLSList@16 IN "ICXF.DLL" AS ReadLSList INTEGER MacNO,STRING cflag,INTEGER @ nCount ,STRING @ RecodeBuf
lstatus=OpenCOMM()
IF lstatus<>1
MESSAGEBOX("打开串口失败!",0+64,"系统提示")
CloseCOMM()
RETURN
ENDIF
cflag="F"
RecodeBuf=REPLICATE(CHR(0),1300)
nCount=0
nReturn=ReadLSList(002,cflag,@ nCount,@ RecodeBuf)
MESSAGEBOX(RecodeBuf)
IF nReturn<>1
MESSAGEBOX("读取消费记录失败!",0+64,"系统提示")
CloseCOMM()
CLEAR DLLS
ELSE
CloseCOMM()
CLEAR DLLS
RETURN
ENDIF
===============以上是vfp代码=========
RecodeBuf 这个就是取不到值,都是空的
RecodeBuf=strconv(REPLICATE(CHR(0),1300),15) &&转换也是取不到