串口通讯的问题!!!! ( 积分: 100 )

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

smell29

Unregistered / Unconfirmed
GUEST, unregistred user!
我要计算机和单片机通讯。是用R232通讯的。我在网上下载了一个串口控件。我的通讯已经实现了。但是我发数据是用的线程,接收数据我不知道怎么用线程接收。因为这个控件的用消息来接收的。只要我的这个程序一开始运行,我CPU就达到了100%的运行。请问各位有什么好的方法来实现串口通讯的。谢谢了!!!!
 
我要计算机和单片机通讯。是用R232通讯的。我在网上下载了一个串口控件。我的通讯已经实现了。但是我发数据是用的线程,接收数据我不知道怎么用线程接收。因为这个控件的用消息来接收的。只要我的这个程序一开始运行,我CPU就达到了100%的运行。请问各位有什么好的方法来实现串口通讯的。谢谢了!!!!
 
你用spcom控件,这个控件有接受数据包的方法
onReceiveData的方法

var
s : string;
begin
setlength(s,Bufferlength);
move(Buffer^,Pchar(s)^,length(s)); //串口发过来的数据就可以接收到s中了!
end;
 
用微软的mscomm控件也不错的。
有完善的接收发送机制。
 
ywy32:谢谢你!!!!这是个消息接收的。占用CPU。我想用线程接收。看看你有什么好的方法吗?
 
谢谢!!!我看看mscomm.到那里下载这个控件!!
 
cpu占用100%确定是接收造成的吗??既然发送是在线程中,接收当然也可以在线程中了.
 
是接收造成的。接收我就是不知道怎么才能写到线程里的。你有这方面的例子能否告诉小弟!当然源码是更好了。QQ103478526;smell29@sohu.com
 
SPComm控件就是用线程并且是异步收发的,仔细看看他的源代码就知道怎么用了[:)]
 
同意楼上的,只要你打开串口,有数据发送到串口,SPComm就能接收数据,你在接收事件中处理接收到的数据就可以了
 
在你接收的线程里添上一个sleep就可以解决CPU居高不下的问题了,

我一直都是这么做的
 
后退
顶部