高手请进:实时性问题 ( 积分: 100 )

X

xgbing

Unregistered / Unconfirmed
GUEST, unregistred user!
计算机(上位机)与DSP仪器(下位机)通讯问题
程序主要是上位机程序频繁接收下位机发送的数据(每隔100毫秒发一次)。我用一个线程接收数据,并处理数据显示在界面上(需耗时50毫秒左右),问题是当界面上不做其实事时接收数据正常,但当我需在界面做其实事时(如画图,最大化,最小化时),这中间会丢失若干数据,即使我把接收数据的线程优先级设成最高也是这样。
请问高手怎么做啊?  
 
X

xgbing

Unregistered / Unconfirmed
GUEST, unregistred user!
计算机(上位机)与DSP仪器(下位机)通讯问题
程序主要是上位机程序频繁接收下位机发送的数据(每隔100毫秒发一次)。我用一个线程接收数据,并处理数据显示在界面上(需耗时50毫秒左右),问题是当界面上不做其实事时接收数据正常,但当我需在界面做其实事时(如画图,最大化,最小化时),这中间会丢失若干数据,即使我把接收数据的线程优先级设成最高也是这样。
请问高手怎么做啊?  
 
C

chuwenyong

Unregistered / Unconfirmed
GUEST, unregistred user!
把你线程代码贴出来瞧瞧。
 
H

hfqxfx

Unregistered / Unconfirmed
GUEST, unregistred user!
将接收做成单独的程序。
 
M

Mike1234567890

Unregistered / Unconfirmed
GUEST, unregistred user!
这个问题我以前遇到过
你准备出多少分啊
你要是把分都给我
我就和你一起把它搞定
其实最主要的是线程要独立
 
S

skyccf

Unregistered / Unconfirmed
GUEST, unregistred user!
接收线程把收到的数据放到一个队列中
显示线程从队列中取数据显示 不久ok了?[:D]
 
N

nicai_wgl

Unregistered / Unconfirmed
GUEST, unregistred user!
OK,和我同行,建议如下:
1、数据接收线程独立,只管接收数据,接收到的数据放到缓冲区,大小、是否动态,看你数据量大小而定。
2、界面刷新数据可以用定时器,也可以由线程发送消息,只读取缓冲区数据即可。
3、界面数据刷新别用线程,多线程同步,麻烦。
 
X

xgbing

Unregistered / Unconfirmed
GUEST, unregistred user!
以上各位大哥的想法我都想到了,但实时性还不是很高,特别是在配置很低的电脑上面,
有没有更好的办法啊!
 
M

Mike1234567890

Unregistered / Unconfirmed
GUEST, unregistred user!
配置很低?
低到什么程度?
你与下位机用什么通讯?
 
C

cqwty

Unregistered / Unconfirmed
GUEST, unregistred user!
Mike1234567890:
做为大富翁论坛上的人不要这样开价还价的,分似乎没有什么用,如果能解决就帮帮别人。想想别人老外的开源软件,想想如果你在国外的网站上遇到一个问题,别人老外能解答的绝对解答,不会说什么分的问题。
顺便说一下我对这个问题的想法,可能不对:
给你一个建议,由于你的线程在频繁的接受数据,而你需要显示在窗体上,显然访问了可视化vcl,而在delphi中,访问可视化vcl是必须用到同步的(这里的同步是你在线程里面方位vcl的时候)。但是有一个办法可以不在线程里面访问vcl控件,那就是使用消息,在线程中自定义一个消息,然后在接受到数据的时候,把接受到的数据通过消息发送给主线程,然后主线程里面写一段专门处理这个消息的代码,这样就可以把同步的事件转化为消息,和最大化,最小化这些消息一样公平处理了。你试试,应该可以解决你的问题的了。
 
M

Mike1234567890

Unregistered / Unconfirmed
GUEST, unregistred user!
cqwty:
我当然知道这里的分没什么实际意义
而且到目前为止我还没在论坛提出什么问题
当然这并不表示我的水平多高,只是暂时没遇到什么解决不了的难题
但是当你付出的时候你不想有人肯定你吗
我要分的目的就是获得别人的肯定
而且如果我能帮它难道拿分不对吗?
 
C

cqwty

Unregistered / Unconfirmed
GUEST, unregistred user!
拿分是对的,哈哈,帮助别人,同时也促进自己嘛
 
M

Mike1234567890

Unregistered / Unconfirmed
GUEST, unregistred user!
理解万岁!
 
X

xgbing

Unregistered / Unconfirmed
GUEST, unregistred user!
OK,谢谢cqwty,受益匪浅!
to Mike1234567890:
我的观点:谁解决了问题就给分,其他大哥没有功劳也有苦劳吧!他们必竟也很热心吧-就算是为了分吧,但总不能给一个人吧!
 
X

xgbing

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 
M

Mike1234567890

Unregistered / Unconfirmed
GUEST, unregistred user!
没我的分?
算了
给别人解决问题吧
 
顶部