急,急,急,串口通讯的苛刻协议(200分)

  • 主题发起人 主题发起人 疯语者
  • 开始时间 开始时间
在pc端,为了达到5ms的响应时间,我觉得你不能用控件,应该直接底层操作,如果是win98,你可以用嵌入asm汇编语言来实现。另外是不是你的发送缓冲区设得太大,所以发送比较缓慢,有个门限,一次发送多少数据!!
 
同意 luoshitu 用汇编吧
 
to luoshitu
我必须使用各种WIN32平台,我自己用的开发平台是XP,我嵌入ASM,结果编译失败,
关于5ms的限制是这样的,单片机在发出请求后须在5ms内至少受到一个字节,如果收到它就会等待你的指令传送完毕,如过在5ms内没有任何数据送到,它就返回做其他的事情.
 
如果单片机程序有源码,最好改单片机程序,由单任务查询式改为多任务处理方式。
由于计算机对串行数据的响应时间不是固定的(依系统运行情况而定),再加上你程序的处理时间,很难在短时间内可靠响应。如果不使用较长的响应时间,很容易出现测试没问题,一到用户那里就常出问题的毛病。
 
响应时间与用什么语言写程序没关系,在Win32平台下用直接读写端口是特权指令,实现起来难度较大;更何况以现在的计算机速度,5ms应可以完成几十万条代码没问题。

主要与你的控件对COM口数据的响应方式有关。不论你是用控件,还是用API,实质上是一样的。
SPcomm的是按查询方式读取端口的,而用Comport控件是以响应Windows COM事件进行响应。

我也碰到过楼主类似问题,主要原因在于Spcomm控件在Win32平台下工作有些问题,换成Comport后一切问题决定,通讯基本上没有延时。

当然,你的应用响应COM数据后的反应速度也是你要解决的问题。
 
to apw
你有Comport编程的例子和控件吗?如果有,请给我一份,
candylyg@sina.com
 
串口的东西不好玩..
帮你提前.
http://cnsoft.inows.com/ 我的共享地带
 
楼主,邮件已发,查收。
Good luck.
 
Apw说得很对,SPCOMM是轮讯的方式,实时性差,而Comport则是基于事件的,实时性好,
我有现成的控件和完整源代码,我可以给你.QQ:84253262
 
接受答案了.
 
后退
顶部