各位高手,利用MSComm控件读串口数据,如何把OleVariant变量值赋给string型变量?(100分)

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

lanchong

Unregistered / Unconfirmed
GUEST, unregistred user!
比如:
procedure TForm1.MSComm1Comm(Sender: TObject);
var
recstr:Olevariant;
begin
if Mscomm1.CommEvent =2 then
recstr:= Mscomm1.Input;
end;
如何把recstr的值赋给strins型变量?
 
直接转换就可以了
var
s:string;
begin
s:=recstr;
end;
 
var
TemStr,InStr:String;
i:integer;
begin
InTempS:=Mscomm1.Input;
if VarIsArray(InTempS) then
begin
LenInBuf:=VarArrayHighBound(InTempS,1)+1;
TemStr:='';
for i:=1 to LenInBuf do TemStr:=TemStr+Chr(Byte(InTempS[i-1]));
InStr:=TemStr;
end
else InStr:=InTempS;
end
 
上面例程的MSCOMM.InPutMode:=comInputModeBinary;你也可以用comInputModeText直接获取STRING即可
不需要用Olevariant类型
 
用move函数比较保险一些
 
to xiaoywh:
某是新手 用mscomm想从单片机里读32个二进位数 这样写行不行
MSCOMM.Inputmode:= cominputmodetext
inputLen:= 4
RThreathold:= 4
//属性里这样设置没有问题吧

 
我只写接收部分:

procedure TForm1.MSComm1Comm(Sender: TObject);
var recstr:Olevariant;
begin
if Mscomm1.CommEvent=2 then begin
recstr:=Mscomm1.Input;
Memo1.text:=Memo1.Text+recstr
end;
 
to PLWang
MSCOMM.Inputmode:= cominputmodetext
只适合接收字符
应该换成字节型
 
多人接受答案了。
 

Similar threads

后退
顶部