mscomm的简单问题(32分)

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

BlueWin

Unregistered / Unconfirmed
GUEST, unregistred user!
我想让Delphi用mscomm发送数组和二进制数:
具体代码怎么写?
(我是第一次学用串口通讯)
谢谢!!

 
procedure TestMsComm
var
SendArr,BackArr:array of byte;
len:integer;
begin
Setlength(SendArr,10);//发送十个字节
Setlength(BackArr,10);//返回十个字节
SendArr[0]=0;
SendArr[1]=$ec;
.....
SendArr[9]=$ec;
With MsComm do
begin
OutPut=SendArr;
Len:=InBufferCount;
if Len>0 then
begin
Sleep(500);
BackArr:=Input;
if (BackArr[0]=0) and (BackArr[1]=$ec) and .... then
Showmessage("成功")
else
Showmessage("失败")
end
else
Showmessage("失败")
eng
end;
 
to mengzhen
谢谢你的回答,不过修改代码的语法错误后,执行时出错:
OutPut:=SendArr;
^^^^^^^^^^^^^^^^^^^^^^
错误代码为:Operator not applicable to this operand type
 
在delphi中安装Mscomm
componet->Insert Activex->mscomm
之后在运行上面的
 
我已经安装了mscomm控件了。
上面提示的错误是:不能使用这种类型的数据,也既是不能把数组付给output。
谢谢
 
………………………………
var
f1:file of byte;
tmp:byte;
sendbyte:array of byte
begin
setlength(sendbyte,16);
read(f1,tmp);
sendbyte:=tmp;
sj_fsr(sendcomm,sendbyte);
until eof(f1)=true;
closefile(f1);
end;

Function sj_fsr(dd:TMSComm;str_fs:array of byte):Boolean;//发送模块
var
i:Integer;
MyVariant: Variant;
begin
Try
MyVariant :=VarArrayCreate ([0,High(str_fs)-1], varByte);
for i:=0 to High(str_fs)-1 do
MyVariant:=str_fs;
dd.Output:=MyVariant;
repeat
i:=i+1;
until dd.outBufferCount=0;
Result:=True;
Except
Result:=False;
End;
end;
 
可以将一个数组赋给一个变体的,
我上面的代码中 With MsComm do
把MsComm换成你加入你单元中的Mscomm控件的名字,如MsComm1;
别说告诉我还不行!!!!
 
to mengzhen:
谢谢你的回答。不过很遗憾,你的代码行不通。
to sarny:
我试一下。
 
一直没有时间试,先谢谢各位了。
 
后退
顶部