[求助]MsComm串口通讯编程问题. ( 积分: 50 )

  • 主题发起人 主题发起人 mjpok
  • 开始时间 开始时间
M

mjpok

Unregistered / Unconfirmed
GUEST, unregistred user!
请问,如何用Timer轮询,把MSComm缓冲区里一个字节一个字节取出来,并显示在MEMO1里.
不用触发ONCOMM事件.
procedure TMainForm.Timer1Timer(Sender: TObject);
var mydata:byte;
begin
mydata:=mscomm1.Input;//是否只能是用ARRAY byte.能否一个一个接收
memo1.Lines.Add(chr(mydata));
end;
但提示有问题!
 
请问,如何用Timer轮询,把MSComm缓冲区里一个字节一个字节取出来,并显示在MEMO1里.
不用触发ONCOMM事件.
procedure TMainForm.Timer1Timer(Sender: TObject);
var mydata:byte;
begin
mydata:=mscomm1.Input;//是否只能是用ARRAY byte.能否一个一个接收
memo1.Lines.Add(chr(mydata));
end;
但提示有问题!
 
mydata:=mscomm1.Input;这一句是将mscomm1接受缓冲中的数据全部读出;你把mydata定义为string型吧。
我有一个可以一个一个接收字符的通讯控件,你自己上网查一下把。
 
mscomm1.InBufferCount
可以读出接收缓冲区有多少字节
在timer1 里判断=1 即读进来
timer1的轮训时间要看发送端的速度
 
采用Timer轮询要注意,由于Timer的中断级别低,假如你的发送速度快,而BUFFFER设置小的话容易出现数据丢包现象。建议还是使用中断方式。
 
把Inputlen属性设为1就可以一个一个接收了,mydata最好用array of byte类型,这样接收到的数据就可以保存到数组里了,后期处理比较方便。
 

Similar threads

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