请求一个串口通讯的问题(100分)

  • 主题发起人 主题发起人 bobodon
  • 开始时间 开始时间
B

bobodon

Unregistered / Unconfirmed
GUEST, unregistred user!
单片机跟PC机通过串口通讯,单片机主动,且大约每隔1S时间发送一个请求信号.PC机只有在
接受了这个信号后的200MS内马上发送一条指令,单片机才会响应.
我现在已经用SPCOMM控件写了程序.因为我不能准确地在收到请求信号后马上发送指令,
所以就愚蠢地开了个线程不断地发送指令,直到单片机反馈了响应指令的确认信号才终止线程.
结果虽然可以实现PC机对单片机的指令控制,但往往指令响应的时间太长,打不到性能的要求.
我也常识过在SPCOMM的OnReceive事件响应函数中检测接收的数据是否请求信号,如果是则马上
发送一条指令.但这样做还是不行.
希望高手指点,帮助我解决这个问题.
 
将缓冲区大小调整为1字节就快多了。大约10ms.
 
to DarwinZhang:
调整缓冲区大小,虽然可以加快速度但并没有真正从根本上解决问题.
就是如何在受到请求信号后的200MS内发送指令并确保能响应指令成功.
 
响应到就立即发出字节啊!这样就不会超时间了。我做的是在15ms内响应都可以的。
 
在下也有此问题?就是对单片机采集数据不全也不准。我的是以pc机为主动?
也是不知道怎么提高,通讯的准确性?
 
没必要再开线程了,直接用onreceive里返回结果就可以了,看了spcomm的源码知道,其实
他已经采用了线程了。
 
用我写的控件,tigerii@sina.com
 
to IITiger:
对你的控件有兴趣,
candylyg@sina.com
 
to DarwinZhang
我的指令有很多字节,怎么能只发一个字节
 
to IITiger:
我对你我的控件很有兴趣.
因为我也写了一个,用到我的 RedComm串口调试器里.
下载: vip.6to23.com/cooldba
想与你交个朋友

to All:
SPComm 控件没有用到多线程.在接收时做不到"实时 "
最好换个控件. 比如说 : CommDev...

 
to Qsmile:
你有commDEV控件和DEMO吗?给我一份.
candylyg@sina.com
 
缓冲区一个字节不是只能发一个字节,
而是缓冲区大小为一字节,随你要发多少都可以的!
只是接受到一个字节就会触发OnReceive事件的。
 
接受答案了.
 
后退
顶部