串口通讯问题,急急急…… 18个BYTE类型的数据,怎么以二进制方式传输 (100分)

  • 主题发起人 主题发起人 missqiao
  • 开始时间 开始时间
M

missqiao

Unregistered / Unconfirmed
GUEST, unregistred user!
我在做一个门禁软件,遇到了个问题:

我用COMPORT控件向单片机发送18个类型为byte的数据,
要发送的数据为 FA FA FF 1 17 0000000000 FB FB 1
FA FA FF 三个固定头码;1 锁地址;17 锁命令;0000000000要传输的数据;FB FB 固定尾码;1 和校验
向串口我发过去了数据,锁一点响应都没有,(成功的话应该响一声的,我确认我发送的数据 是对的)
我的同事告诉我要以二进制传输方式来传输,
那么COMPORT的默认传输方式是什么?我该如何解决?

(用VB编的门禁软件,控件MSCOMM能顺利打开锁)

我的源程序如下:
procedure Topenlockform.Button1Click(Sender: TObject);
var
bv:Array[0..18] of Byte;
i,j:byte;
checksum:byte;
s:string;
begin

bv[0]:=250;//FA byte($FA);
bv[1]:=250;//FA
bv[2]:=255;//FF
bv[3]:=1;//01
bv[4]:=23;//17
// bv[5]:=255;//FF
for i:=5 to 14 do
begin
bv:=0;
end;
bv[15]:=251; //FB
bv[16]:=251;
checksum:=0;
For i:=0 To 16 do
begin
checksum:=checksum + bv;
end;
bv[17]:=checksum;//因为checksum是byte,进位都丢了,无需取右两位 '校验位

comportform.ComPort1.Write(bv,18);

s:='';
for j:=0 to 17 do
s:=s+format('%x',[bv[j]]);
showmessage(s); //显示我传输的数据以16进制显示
end;
哪位DFW能帮帮我啊,我都要急死了……分不够可以再加

难道没有人可以帮我吗?18个BYTE类型的数据,怎么以二进制方式传输??????

 
要设置如下:
端口号
波特率
然后打开端口;
将这句话 comportform.ComPort1.Write(bv,18); 换成 comportform.ComPort1.Write(@bv,18)

 
这样试试:
for j:=0 to 17 do
comportform.ComPort1.Write(@bv[j],1);


 
I2003:
我按你说的方式写上去了,但是不行,以加上@就出问题了:
[Error] openlock.pas(61): Variable required

 
用指针试试
 
lgxyy:
我不会用指针,用COMPORT怎么用指针?

各位:
有谁知道怎么用二进制传输方式来传输,用COMPORT??难道没有人知道吗?
 
提前一下
 
实在不行的话,使用别的控件,如spcomm还是可以的。
 
我有自己写的控件。tigerii@sina.com
 
自己解决吧。多看看书。
 
感谢大家的帮忙。
 
接受答案了。
 
后退
顶部