mscomm数据发送小问题! ( 积分: 50 )

  • 主题发起人 主题发起人 hanshun398
  • 开始时间 开始时间
H

hanshun398

Unregistered / Unconfirmed
GUEST, unregistred user!
var senddata:array[1..10] of char; sendstr:string;
begin
senddata[1]:=chr($ff); //要发送的数据
senddata[2]:=chr($ff);
senddata[3]:=chr($ff);
senddata[4]:=chr($07);
senddata[5]:=chr($80);
senddata[6]:=chr($+strtoint(edit1.Text));
senddata[7]:=chr($11);
for i:=1 to 7 do
sendstr:=sendstr + senddata;
mscomm2.output:=sendstr;
end;
各位大虾请指导小弟,如何将edit内的值大于128时的值转成char类型,也就是当edit中输入224时 senddata[6]:=chr($e0);
 
var senddata:array[1..10] of char; sendstr:string;
begin
senddata[1]:=chr($ff); //要发送的数据
senddata[2]:=chr($ff);
senddata[3]:=chr($ff);
senddata[4]:=chr($07);
senddata[5]:=chr($80);
senddata[6]:=chr($+strtoint(edit1.Text));
senddata[7]:=chr($11);
for i:=1 to 7 do
sendstr:=sendstr + senddata;
mscomm2.output:=sendstr;
end;
各位大虾请指导小弟,如何将edit内的值大于128时的值转成char类型,也就是当edit中输入224时 senddata[6]:=chr($e0);
 
uses Variants;

var
buffer_send : Variant;
begin
buffer_send := VarArrayCreate([0, 4], varByte);
buffer_send[0] := $ff;
buffer_send[1] := $ff;
buffer_send[2] := $f4;
buffer_send[3] := $e2;
buffer_send[4] := $d1;
mscomm1.Output := buffer_send;
end;
 
ifiles:如何将224转成16进制数!inttodex()转完以后是字符型的,这个问题如何解决?
 
senddata[6]:=chr($+strtoint(edit1.Text));
----->
senddata[6]:=chr(strtoint(edit1.Text));
 
你指的是把 '224' 转为数值吧,
buffer_send[4] := StrToInt('224');
 
Chr就是就是将序号转换为字符的,如果edit1中输入的是序号直接用senddata[6]:=chr(strtoint(edit1.Text));就行
inttohex(strtoint(edit1.Text),2)是指把整型数转换为两个字节的十六进制显示
 
ok 谢谢 大家!!!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
718
import
I
I
回复
0
查看
806
import
I
后退
顶部