求助!spcomm控件...(300分)

  • 主题发起人 主题发起人 bowl
  • 开始时间 开始时间
B

bowl

Unregistered / Unconfirmed
GUEST, unregistred user!
使用spcomm控件进行串口通信,将编码输送至条码打印机的COM口打印条码
我已了解spcomm的基本属性,希望各位大侠能详细介绍通信过程(传输编码),急!!!
愿奉上300分!
 
[?] 有人赐教么?急!
以前关于SPCOMM的帖子我都看了,没头绪...
 
用Cport吧,比spcomm好使,我可以给你一个例子。baihai@cmmail.com
 
谢天谢地,终于有人回应了
bowl2000@21cn.com
例子有用的话一定给您加分!
 
大家帮帮忙~发表一下高见啊!
 
http://www2.yesky.com/34603008/146893.shtml
 
//变量说明

var

fcomm: TFCOMM;

viewstring:string;

i:integer;

rbuf,sbuf:array[16] of byte;

//打开串口

procedure TFCOMM.FormShow(Sender: TObject);

begin

comm1.StartComm;

end;

//关闭串口

procedure TFCOMM.FormClose(Sender: TObject; var Action: TCloseAction);

begin

comm1.StopComm;

end;

//自定义发送数据过程

procedure senddata;

var

i:integer;

commflg:boolean;

begin

viewstring:=‘’ ;

commflg:=true;

for i:=1 to 6 do

begin

if not fcomm.comm1.writecommdata(@sbuf,1) then

begin

commflg:=false;

break;

end;

//发送时字节间的延时

sleep(2);

viewstring:=viewstring+ inttohex(sbuf,2)+‘’ ; end;

viewstring:=‘发送’+ viewstring;

fcomm.memo1.lines.add(viewstring);

fcomm.memo1.lines.add(‘’ );

if not commflg then messagedlg(‘发送失败 !’ ,mterror,[mbyes],0);

end;

//发送按钮的点击事件

procedure TFCOMM.Btn_sendClick(Sender: TObject);

begin

sbuf[1]:=byte($ f0); //帧头

sbuf[2]:=byte($ 01); //命令号

sbuf[3]:=byte($ ff);

sbuf[4]:=byte($ ff);

sbuf[5]:=byte($ 01);

sbuf[6]:=byte($ f0); //帧尾

senddata;//调用发送函数

end;

//接收过程

procedure TFCOMM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);

var

i:integer;

begin

viewstring:=‘’ ;

move(buffer^,pchar(@rbuf^),bufferlength);

for i:=1 to bufferlength do

viewstring:=viewstring+ inttohex(rbuf,2)+‘’ ;

viewstring:=‘接收’+ viewstring;

memo1.lines.add(viewstring);

memo1.lines.add(‘’ );

end;
 
sahee 这个例子我试了
有错误 rbuf,sbuf:array[16] of byte;
move(buffer^,pchar(@rbuf^),bufferlength);
改为 rbuf,sbuf:array[1..16] of byte;
move(buffer^,pchar(@rbuf)^,bufferlength);
编译通过 但运行时不会出现“接收到……”的字样
 
例子及控件已给你发去了,试着没问题的话,给分吧!
 
简而言之,将一段字符串(有几行)发到COM口就OK了
 
to 白海森:
给我一份好吗?
 
我对范例中这一句 sbuf[1]:=byte($ f0); 不理解
 
把F0(十六进制)发送出去
 
qdshen,如果我要把字符串发出去呢?
 
多谢各位的指点,其实用spcomm的comm1.WriteCommData( ) 就搞定了,可能各位想复杂了
白兄给了我cport控件及很大的支持,应该多得些分 :)
 
多人接受答案了。
 
后退
顶部