在DLEPHI里用MSCOMM控件的问题,请帮一下忙... ( 积分: 20 )

  • 主题发起人 主题发起人 sxwy
  • 开始时间 开始时间
S

sxwy

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在在DELPHI里用它作二进制通讯是没有什么问题,但是我如果文本通信的时候,在MSCOMM的ONCOMM(触发)事件里怎么接收文本字符呢.因为在DLEPHI里MSCOMM的INPUT属性是返回OLEVARIANT变量类型的.我无法将一个字符型变量直直接赋值.如:TMP:=MSCOMM1.INPUT,请你们帮一下忙应该怎么将字符数据接收.
 
我现在在DELPHI里用它作二进制通讯是没有什么问题,但是我如果文本通信的时候,在MSCOMM的ONCOMM(触发)事件里怎么接收文本字符呢.因为在DLEPHI里MSCOMM的INPUT属性是返回OLEVARIANT变量类型的.我无法将一个字符型变量直直接赋值.如:TMP:=MSCOMM1.INPUT,请你们帮一下忙应该怎么将字符数据接收.
 
//接收一个字节即触发事件
procedure TForm1.MSComm1Comm(Sender: TObject);
var
i:integer;
a:array of integer;
begin
if Mscomm1.CommEvent = 2 then
begin
while Mscomm1.inbuffercount<>0 do
begin
a:=Mscomm1.Input;
Memo1.SelStart:=Length(Memo1.Text);
Memo1.SelText:=chr(a[0]);
end;
  end;
end;
 
mscomm控件的属性中有一项是设定接收数据为二进制还是文本字符,
你二进制接收很正常,说明你设置了该属性,你只要将其去掉就行了.
mscomm 默认接收文本字符
 
先谢谢了,我先试试MAXI88的源码,关于DEMODH16的说法,我的程序如果选择文本方式.这个时候才会在接收程序里出错,因为我在MSCOMM.INPUT的接收方法里都是按照二进制接收的.
 
没有用呀.楼上两位,能再赐点方法吗.
 
将代码贴入ONCOMM事件里过程里后,提示说INVALID ARGUMENT
 
这段代码我编译是没有问题的
你可以把工程文件发给我看一下MAXIM88@TOM.COM
 
多人接受答案了。
 
后退
顶部