一个串口发送的问题(50分)

  • 主题发起人 主题发起人 f_inter
  • 开始时间 开始时间
F

f_inter

Unregistered / Unconfirmed
GUEST, unregistred user!
有一串十六进制数据:01040000000271CB
我要通过串口将它(十六进制)发送到前端设备(注:该设备只接收十六进制,别的无效)
该怎么发?
我用的是MSCOM。SPCOM也可以。
谢谢
我是个新手,分不多,如果,能解决问题。我可以再加分
 
计算机存贮的都是2进制数据,按4位表示一个数就是16进制,如:CBh -> 1100 1011, 同样写成203也是一样。
写程序时只要不转换成BCD之类的数,直接下发,它都是16进制的。
const
msg: array [0..7] of Byte = (01,04,00,00,00,02,71,$CB);
var
i:ineger;
begin
for i := 0 to 7 do
mscomm.Output := msg;
 
我试了不行提示出错信息:Invalid property value
 
我没用过mscomm,别人说都是这么用。
我自己一直在用TComPort,你如果要,我给你发一份。
comport1.Write(Pointer(@msg[0]), 8);
 
你是作工控的吧!发送数据到前端的终端对吧,以前我做过的用mscomm32一样的,仅仅是16进制的数字变了而以
var
sendbyte : variant;
begin
sendbyte:= VarArrayCreate([0,4], varbyte);
sendbyte[0]:=$03;
sendbyte[1]:=$b1;
sendbyte[2]:=$20;
sendbyte[3]:=$01;
sendbyte[4]:=$d5;
mscomm.out:=sendbyte;
end;
注意你的mscomm的inputmode = 二进制的那ge
一定行的不行找我 ok!你是济南的吗?
我得电话0531-6578208可以找我啊!
 
sbuf[1]:=byte($66);
sbuf[2]:=byte($77);
.
.
sbuf[j]:=......;


procedure senddata(j:integer);
var i:integer;
commflg:boolean;
begin
commflg:=true;
for i:=1 to 1 do
begin
if not form1.comm1.writecommdata(@sbuf[j],1) then
begin
commflg:=false;
break;
end;
sleep(5); //发送时字节间的延时
end;
if not commflg then senddata(j);
end;
这个是使用SPCOMM的,应该没有问题了!
 
我用过spcomm,在win98下调试成功并长期使用,但前两天我将系统换成了win2000,该串口通信就不能使用了。startcomm能正常通过,但在senddata中,老是进入
if not form1.comm1.writecommdata(@sbuf[j],1) then
begin
commflg:=false;
break;
end;
中去,表示数据发送失败,这是为什么?


apw:请将你介绍的Tcomport给我发一个(chinadjt@163.com),并告知如何使用?
 
邮件已发.
我用Comport做过n多程序,接过无数种设备,没问题.
有事联络.
 
to apw:
大虾,能否给我一份Comport,谢谢!
e-mail:zhao6982118@yahoo.com.cn
 
to apw:
能否告知如何安装该组件,我怎么安装老不成功?
 
接受答案了.
 
后退
顶部