MSComm控件问题?????(50分)

  • 主题发起人 主题发起人 lance0909
  • 开始时间 开始时间
L

lance0909

Unregistered / Unconfirmed
GUEST, unregistred user!
我想通过串口发16进制指令到单片机,指令如:ff 00 01 05
各位大哥大姐,帮帮我吧!!!

var
s:string;
begin
s:=$255+$0+$1+$5;
mscomm1.output:=s;
end;
如何?????请帮忙呀
 
这样试试:
var
CodeStr:array [0..3]of byte;
begin
Codestr[0]:=$ff;
CodeStr[1]:=$0;
CodeStr[2]:=$1;
CodeStr[3]:=$5;
mscomm1.output:=Codestr;
end;
 
这样要好一些
var
TransWord: string
begin
TransWord := Chr($FF)+Chr($00)+Chr($01)+Chr($05);
MSComm1.Output := TransWord
end;
 
当然你最好写这样一个函数:
function StrToVarByteArray(const S:String):Variant;
var
i:Integer;
Tem:Variant;
begin
if S = '' then
begin
Result:='';
Exit;
end;
Tem:=VarArrayCreate([0,Length(S)-1],varByte);
for i:=0 to Length(S)-1 do Tem:=Ord(S[i+1]);
Result:=Tem;
end;


main
var
TransWord: string
begin
TransWord := Chr($FF)+Chr($00)+Chr($01)+Chr($05);
MSComm1.Output := StrToVarByteArray(TransWord);
end;

 
var
TransWord: string
begin
TransWord := Chr($FF)+Chr($00)+Chr($01)+Chr($05);
MSComm1.Output := TransWord
end;
我觉得应该更正
MSComm1.Output := pchar(TransWord);
 
多人接受答案了。
 
后退
顶部