MSComm 接受数据为binary 时 Byte 与 String如何转换(50分)

  • 主题发起人 主题发起人 qngshn
  • 开始时间 开始时间
Q

qngshn

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.FormCreate(Sender: TObject);
begin
//Mscomm1.PortOpen:=False;
//Mscomm2.PortOpen:=False;
Mscomm1.PortOpen:=true;
Mscomm2.PortOpen:=true;
Mscomm1.InputLen:=0;
Mscomm1.RThreshold:=5;
MsComm1.InputMode:=comInputModeText;
// ReData:='';

end;

//发送数据
procedure TForm1.BitBtn1Click(Sender: TObject);
var
s:string;

begin
Mscomm1.InBufferCount:=0;
mscomm1.InputMode:=1; // binary
mscomm2.InputMode:=1; // binary
mscomm2.RThreshold:=1;
While True do
begin
s:=edit1.Text;

MsComm1.Output:=s;
sleep(360);

Application.ProcessMessages;


end;


end;

//接收数据
procedure TForm1.MSComm2Comm(Sender: TObject);
var
s: array of string;
b: array of Byte;
v: Variant;
i: Integer;
begin
Case MsComm2.CommEvent of
2:
begin
v:=MsComm2.Input;
b:=v;
for i:=0 to length(v) do
begin
s:=b;
end;
richedit1.Lines.Add(s) ;
end;
end;
end;
 
你作到那一步了啊,你的数据是谁发的啊。
我觉得哦,思路是
吧output付给一个变体类型的数据,而后将一个字节数组设置的合着个变量一直。
后面你用inttostr就可以了,byte其实也是整型的,不过就是位数断一点。
我现在考了的是怎么给output幅值,朋友回的话,给点想法。
谢谢
 
我就是不要一个字节,我要得是一位,要分析编码啊,OlEVariant怎么拆分成数组
不过我传递string没问题,是不是都要用结果来转换成二进制,不过现实是设备传过来的数据是二进制啊
你的问题:string:=output
variant:=output
或者你问的是要用两个串口,一个input ,一个output
 
不是拉,先测试自己法自己收,串口2、3连起来。
我现在目的也是发送2进制吗,我的SPcomm下面可以法,可以收了。但是mscomm一直不会法不会收,老是说无效的属性,或别的一些异常。我照着别人在VB下的思路去弄,还是不行。所以相想你讨教一下。
我觉得哦,即使你使用2进制来传送,他受到的也是一个整体的。mscomm的input应该会吧他全部收完才可以让你移出的。关于变体数组,我是用varcreate函数来创建的,不过我用下来还是有点问题。
VB下面好像可以位操作,有例bit0=bitvalue*(2^0);等。但是delphi下面好像不可以直接进行位操作了。原本我也考虑过BCD类型的,但是讲的太少了。
我们在一起谈论谈论吧
 
我试了可以用string接受input ,设触发事件为一字节,然后根据接受到的字符转换为ASCII
然后再转换为二进制,这样怎么样啊
 
应该可以的
 
Case MsComm2.CommEvent of
2:
begin
v:=MsComm2.Input;
b:=v;
for i:=0 to length(v) do
begin
richedit1.Lines.Add(inttostr(b)) ;//s:=b;
-------------------------------------------------
end;
end;
end;
这样改改看,是你需要的吗?
 
frankis你的问题怎么样了,我试过现在没问题了,相信你也没问题
 

Similar threads

后退
顶部