TMscomm接收时大于127的内容怎样接收,请大虾指教!(100分)

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

lhl20000

Unregistered / Unconfirmed
GUEST, unregistred user!
在DELPHI 6.0中:
procedure TForm1.MSComm2Comm(Sender: TObject);
var
RV,V:Variant;
begin
//发送的内容为$55 $91 $A1 $81 $55 $91 $A1 $81八个字节;
RV:=MSComm2.Input;
??????
我怎样将接收到的值(RV),再变成$55 $91 $A1 $81 $55 $91 $A1 $81,进行处理;
现在RV='U ',已经将 $91等大于127的看为空格了。
end;
 
转化成字符串 存储到tliststring 中 获直接用memo中并将memo可以隐藏
或者直接开辟一个动态数组吗
 
我的意思是:
发出$91十六进制

应接收到145十进制
并且得到字符串:'145';
 
问题出在发送上,首先InputMode设置成comInputModebinary,另外,发送子程序加代码:
var
tv::variant;

...

tv:=VarArrayCreate([1,1], varbyte);
tv[1]:=$55;
form1.mscomm2.output:=tv;

tv[1]:=$91;
form1.mscomm2.output:=tv;
...


 
不行的,要重新编码才能传输。
 
怎样得到Tmscomm接收到的OLEVariant的BYTE数组的长度以便进行数据处理;
var
V,B:Variant;
begin
V:=Tmscomm.input;
for i:=0 to BYTE数组的长度
do B::=V
....
end;
 
接收到的OLEVariant的BYTE数组的长度:MSComm1.InBufferCount


var
V:Variant;
b:array of byte;
begin
V:=mscomm1.input;
setlength(b,MSComm1.InBufferCount);
for i:=low(b) to high(b) do B:=V
....
end;
 
多人接受答案了。
 
后退
顶部