如何控制串口连续通讯(1ms发送接收一次)?(300分)

  • 主题发起人 主题发起人 kinglaw
  • 开始时间 开始时间
K

kinglaw

Unregistered / Unconfirmed
GUEST, unregistred user!
数据采集时需要PC端程序控制串口每1ms发送并接收一次的数据。谁做过类似的程序啊。
我用spcomm控件好像接收会丢数据。300分赠与有解决办法的高手。
 
那就不用spcomm呢。
直接嵌入汇编代码试过没有?
 
我想再问调用串口通讯vxd的方法。eg. VMMCOM_READCOM是什么啊?
 
谁知道如何调用vcomm.vxd的 VCOMM_OpenComm、VCOMM_CloseComm、VCOMM_PurgeCom、
VCOMM_ReadComm、VCOMM_WriteComm等?

 
我的天啊,1ms要收发一次数据,不知你收发的数据量大不大.如果大,而
通讯速度跟不上,那肯定会丢失数据.如果把超时控制定长一点,或许还
不会丢失数据,否则还是另想办法吧,
 
我用spcomm已经有一段时间了,
能给我写信交流一下吗?<a href=mail:whb_li@263.net></a>
 
我的信箱<a href=mail:whb_li@263.net>whb</a>
 
曾经做过!没用过spcomm,我用的是ComDrv32,不错哦!
每1ms发送并接收一次的数据,有没有搞错!

email me:jobsmy@263.net

 
1ms发一次用线程计时可以做到的,关键是波特率要足够高,数据量要足够小,否则会overrun
 
你通信的波特率有多高啊?!
 
好像不能实现:( 起码我没成功,大概100ms还差不多,呵呵

做个延时吧,100ms左右,对Buffer进行读取也许还可以:)
 
to wvision:
波特率:56K
to BJ_QQ:
1ms一次这是基本要求,问题是如何控制串口进行实时数据传送.现在问题已有一些眉目.
我想回答了我的一个小问题后结束该问题:
(?)在windows9x中如何精确定时到1ms?(要求精度1%)
 
实践数据:(本人的)
好像精确不到:(
只是本人看法:) 你实现了1ms发收一次?可以给我一份源码呢?,可以取取经,:)

谢谢: BJ_QQ@sohu.com ,非常感谢!!!
 
me too thanks
zws13@sina.com
 
56000 bit/s
= 7000 bytes /s
= 7 bytes/ms
理论上应该是可以每ms收发一次的。
建议你到我的HomePage上看看我的程序。
我用过没有问题。
<a href=http://avsuper.yeah.net>http://avsuper.yeah.net</a>
 
TO CAOWEI
你真的试过呢? 使用你自己写的这个? 还有别的处理机制没有?
还是单纯的对串口进行读写? 我试过spcomm,mscomm的,最低不能低于70ms左右
而且那是已经很不稳定了,有时就会收不到.
当时我在用DOS下的C程序试试,看看成不成:(


 
caowei的TMyComm写的得精巧,
你可以放心一试
如果系统对数据的可靠性要求很高,我建议你结合硬件算了,
因为在windows下,纯软件真得很难完全控制,
如果你对Vxd比较熟的话,当然最好。
 
这在dos下是轻而易举的事情,即修改系统时钟使之1ms(误差<1%)产生一次中断,
并接管该中断。可在win9x中我就不知道该如何实现了。本人对window的中断不了解。
不知能不能实现?

同意caowei的意见:1ms发收一次在dos下绝对没有问题
 
我写过一个在线程中嵌汇编的上位机与多个单片机的通信程序,但没有做定时控制。
其流程是:在线程中轮流向各个单片机发确认信息,接受回应,并在窗口中显示各个
单片机的状态。不知对你有没有用。至于1ms(误差<1%)的定时要求,我个人认为在
Windows系统中是无法达到的。
 
经过各位的热情指导和本人的不懈努力,现得出以下结论(如不对请指教)
在win9x中接管中断太难,无法保证精确定时。因为window不是一个实时操作系统(?)。
现在已经用硬件解决。
谢谢各位。我想结束该问题
分数大家平分了吧..)
amo多得3分。
 
后退
顶部