DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: wpxlhy007
今日帖子: 1
在线用户: 7
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 zhahongyi (如风) ▲▲▲▲▲ -
普通会员
2019/3/10 12:12:53
标题:
请高手帮忙转成delphi的函数,谢谢! 浏览:293
加入我的收藏
楼主: 有个函数,请帮忙转成delphi,能成功调用并返回结果的,请mail我电话号码,30元话费酬谢!308612882@qq.com


__int16 __stdcall IC_Pro_Commandlink(HANDLE idComDev,unsigned int slen,
         unsigned char * sendbuffer,unsigned int *rlen,
         unsigned char * databuffer,unsigned  char timeout,
         unsigned char FG);
 
说明:应用协议数据单元信息交换函数。该函数已封装T=CL操作

调用:HANDLE idComDev----IC_InitComm函数返回的端口标识符
      unsigned int slen ---- 发送的信息长度
      unsigned char * sendbuffer ---- 存放要发送的信息
      unsigned int *rlen ---- 返回信息的长度
      unsigned char * databuffer ---- 存放返回的信息
      unsigned char timeout---- 延迟时间,单位为:10ms
      unsigned char FG---- 分割长度。建议此值小于64
返回: <0 错误。其绝对值为错误号
      =0 成功。

举例: 
     unsigned int slen =5;
     unsigned char sendbuffer[100]="\0" ;
     memcpy(sendbuffer,"\x00\x84\x00\x00\x08",5);
     unsigned int rlen ;
     unsigned char databuffer[100]="\0"; 
     st=IC_Pro_Commandlink(idComDev,slen,sendbuff,&rlen,databuffer,6,48);
     if(st!=0)
    {
       AfxMessageBox("发送指令失败");
       return;
    }
     if(st!=0)
    {
       AfxMessageBox("发送指令失败");
       return;
    }
----------------------------------------------
-
作者:
男 bluestorm8 (bluestorm) ▲△△△△ -
注册会员
2019/3/10 12:31:12
1楼: type PCardinal = ^Cardinal;
function IC_Pro_Commandlink(idComDev: THANDLE; slen: Cardinal;
         sendbuffer: PByte; rlen: PCardinal;
         databuffer: PByte; timeout: Byte;
         FG: Byte): SmallInt; stdcall;
----------------------------------------------
-
作者:
男 bluestorm8 (bluestorm) ▲△△△△ -
注册会员
2019/3/10 12:38:37
2楼: 按你的调用方法,应该改为
function IC_Pro_Commandlink(idComDev: THANDLE; slen: Cardinal;
         sendbuffer: PByte; var rlen: Cardinal;
         databuffer: PByte; timeout: Byte;
         FG: Byte): SmallInt; stdcall;
----------------------------------------------
-
作者:
男 bluestorm8 (bluestorm) ▲△△△△ -
注册会员
2019/3/10 12:42:30
3楼: 第一种方法,对应的调用方式为:
st := IC_Pro_Commandlink(idComDev,slen,sendbuff,@rlen,databuffer,6,48);
第二种方法,对应的调用方式为:
st := IC_Pro_Commandlink(idComDev,slen,sendbuff, rlen,databuffer,6,48);
----------------------------------------------
-
作者:
男 zhahongyi (如风) ▲▲▲▲▲ -
普通会员
2019/3/10 19:15:51
4楼: 谢谢bluestorm!下午出去了,刚刚试了下可以运行,但是databuffer没有返回数据,
     unsigned int slen =5;
     unsigned char sendbuffer[100]="\0" ;
     memcpy(sendbuffer,"\x00\x84\x00\x00\x08",5);
     unsigned int rlen ;
     unsigned char databuffer[100]="\0";
实例中这几句转换成delphi应该怎么写呢?

把电话号码发邮箱给我,给你充话费。
----------------------------------------------
-
作者:
男 bluestorm8 (bluestorm) ▲△△△△ -
注册会员
2019/3/11 9:09:23
5楼: 你的话费免了。
var
  slen, rLen: Cardinal;
  sendBuffer, databuffer: array[0..99] of Byte;
begin
  zeromemory(@sendbuffer, 100);
  zeromemory(@databuffer, 100);
  HexToBin('0084000008', sendbuffer, 5);
end;
----------------------------------------------
-
作者:
男 zhahongyi (如风) ▲▲▲▲▲ -
普通会员
2019/3/12 13:35:14
6楼: 非常感谢,因为一直没调用成功所以没回复。多次测试后发现是别的原因。给的代码能正常调用并返回数据。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行20.99609毫秒 RSS