您现在所在的是:

现场总线

回帖:4个,阅读:2158 [上一页] [1] [下一页]
934
jiayoua
文章数:3
年度积分:50
历史总积分:934
注册时间:2004/11/5
发站内信
发表于:2008/10/22 13:34:00
#0楼
控件安装完后在delphi里调用此控件,打开源代码可直接修改,支持delphi5、6、7
初始化属性
constructor tmodbusm.create( aowner: tcomponent );
begin
 inherited create( aowner );
 // initialize to default values
 fcomporthandle             := 0;       // not connected
 fcomport                   := pncom2;  // com 2
 fcomportbaudrate           := br9600;  // 9600 bauds
 fcomportdatabits           := db8bits; // 8 data bits
 fcomportstopbits           := sb1bits; // 1 stop bit
 fcomportparity             := ptnone;  // no parity
 fcomporthwhandshaking      := hhnone;  // no hardware handshaking
 fcomportswhandshaking      := shnone;  // no software handshaking
 fcomportinbufsize          := 1028;    // input buffer of 1024 bytes
 fcomportoutbufsize         := 1028;    // output buffer of 1024 bytes
 fcomportpollingdelay       := 80;    // poll com port every 80ms
 foutputtimeout             := 5000;    // output timeout - 5000ms
 fenabledtronopen           := false;   // dtr high on connect
 // temporary buffer for received data
 ......
 ......
end;
//
modbus发送

procedure tmodbusm.query;
var
 cadenacrc: word;
 cadena: tdatabyte;
 pcadena: pbyte;
 lcadena,i: integer;
 bytetemp: byte;
begin
 if not connected then begin
   ferror:=11;
   if assigned(fonerror) then fonerror(self, serrorcodes[11] );
   exit;
 end;
 if fbusy then begin
   ferror:=10;
   if assigned(fonerror) then fonerror(self, serrorcodes[11]);
   exit;
 end;
 fbusy:=true;
 ferror:=0;
 setlength(readbuffer, 0);
 //功能码1数据打包,依次累推可增加自己所需的其它功能码
 case ffunction of
 1: begin
      setlength(cadena,8);
      cadena[0]:=fslaveid;
      cadena[1]:=ffunction;
      cadena[2]:=hi(foffset);
      cadena[3]:=lo(foffset);
      cadena[4]:=hi(fquantity);
      cadena[5]:=lo(fquantity);
      cadenacrc:=crc(cadena);
      cadena[high(cadena)-1]:=lo(cadenacrc);
      cadena[high(cadena)]:=hi(cadenacrc);
      pcadena:=@cadena[0];
      lcadena:=high(cadena)+1;
      if senddata(pcadena,lcadena)=lcadena
        then ftimer.enabled:=true
        else begin
          ferror:=9;
          if assigned(fonerror) then fonerror(self, serrorc----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=65049&Name=jiayoua
1459
shenhong
文章数:257
年度积分:50
历史总积分:1459
注册时间:2004/3/27
发站内信
发表于:2008/10/22 13:59:00
#1楼
不错!
17528
ahljj
文章数:3386
年度积分:240
历史总积分:17528
注册时间:2002/3/23
发站内信
发表于:2013/10/23 11:32:01
#2楼
不错!
736
2041598879
文章数:0
年度积分:50
历史总积分:736
注册时间:2013/9/9
发站内信
发表于:2013/12/30 15:47:01
#3楼
此楼内容不符合板块规定,不予显示! 查看原帖内容>>
639
254476777
文章数:20
年度积分:50
历史总积分:639
注册时间:2016/6/12
发站内信
发表于:2017/6/8 11:02:30
#4楼
非常感谢楼主的分享,顶

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

78.0005