cdhelen
驱动牛犊
驱动牛犊
  • 注册日期2004-06-10
  • 最后登录2004-10-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2469回复:13

为何我的多线程数据采集老出现丢数现象

楼主#
更多 发布于:2004-08-23 10:54
我想用多线程实现高速的数据采集,实验时,接正弦信号可以发现采集的波形会出现丢数现象,没有规律,大概几个周期有一次数据丢失发生。
已经被困绕很久,请高手帮帮忙!
Sundsea
驱动老牛
驱动老牛
  • 注册日期2003-05-06
  • 最后登录2012-06-05
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望35点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-23 12:44
能说的在详细些吗?
本人就曾作过类似工作.
cdhelen
驱动牛犊
驱动牛犊
  • 注册日期2004-06-10
  • 最后登录2004-10-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-24 10:46
先谢谢你答复,
我用多线程技术实现高速的并口数据采集,(delphi7下),使用双缓冲,一边采集,一边处理和绘图显示采集数据,曲线能绘出来,但偶尔波形有变形,没有发现有规律,跟缓冲区的大小和输入波形的频率似乎没有关系,估计是数据丢失所导致,不知何因?
Sundsea
驱动老牛
驱动老牛
  • 注册日期2003-05-06
  • 最后登录2012-06-05
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望35点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-24 12:05
我估计,应该是缓冲区溢出问题,建议:
1.可以将缓冲区的大小加大,试试看,如果还是不能解决.
2.可以采用环行缓冲区,将缓冲区多开几块,在试试看.
本人曾用此法解决了高速数据采集记录问题(155M速率的采集记录,而且是IDE硬盘).

[编辑 -  8/24/04 by  Sundsea]
hzhq1
驱动老牛
驱动老牛
  • 注册日期2002-12-13
  • 最后登录2012-03-29
  • 粉丝0
  • 关注0
  • 积分32分
  • 威望1054点
  • 贡献值0点
  • 好评度606点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-08-27 08:40
能说的在详细些吗?
本人就曾作过类似工作.

还不拿出来共香共香?
 :D
这是一个,一个风雨交加的,漆黑的夜晚......恩,情节越来越复杂了。
Sundsea
驱动老牛
驱动老牛
  • 注册日期2003-05-06
  • 最后登录2012-06-05
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望35点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-08-27 09:36
[quote]能说的在详细些吗?
本人就曾作过类似工作.

还不拿出来共香共香?
 :D [/quote]


涉及到一些保密的东西,所以Sorry!
hzhq1
驱动老牛
驱动老牛
  • 注册日期2002-12-13
  • 最后登录2012-03-29
  • 粉丝0
  • 关注0
  • 积分32分
  • 威望1054点
  • 贡献值0点
  • 好评度606点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-08-27 10:35
[quote][quote]能说的在详细些吗?
本人就曾作过类似工作.

还不拿出来共香共香?
 :D [/quote]


涉及到一些保密的东西,所以Sorry! [/quote]

155M的,
恩,
理解。
这是一个,一个风雨交加的,漆黑的夜晚......恩,情节越来越复杂了。
xx_focus
驱动中牛
驱动中牛
  • 注册日期2003-08-06
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望10点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-08-27 21:57
不知道你是怎样同步的
Sundsea
驱动老牛
驱动老牛
  • 注册日期2003-05-06
  • 最后登录2012-06-05
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望35点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-08-28 12:50
不知道你是怎样同步的


什么同步?
cdhelen
驱动牛犊
驱动牛犊
  • 注册日期2004-06-10
  • 最后登录2004-10-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-08-31 14:42
我的多线程丢数现象,我发现应该是并口驱动程序或并口 采集卡出了问题,因为我用同样的程序可以很好地 采集pci卡设备。
我的并口驱动是98下的直接端口访问,并口采集卡不带缓冲。

Sundsea大哥的建议对我还是有用,我的采集速度只能到10k,100M想都没想过,真的能到这么高吗?要到这么高还需要有什么技术支持?
想给你加分,不知到哪加。
lanren_me
驱动牛犊
驱动牛犊
  • 注册日期2004-11-11
  • 最后登录2007-02-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-11-12 17:35
上位机必须使用三个缓冲区;
A为公共缓冲区;
b为采集缓冲区
c为作图缓冲区;

下位机必须使用双缓冲区;d,e
d,e区采满数据后发送中断给上位机!并且轮流交换存放数据的位置以避免数据丢失~!

上位机得到中断立刻读取d,OR ,e 区数据放到b,采集完毕一次中断数据再copy到a,此时发送信息给主程序来刷新;
主程序得到信息则从a区读取数据到c进行计算绘图等等!

我的采样频率为20k;全部数据都进行了滤波,计算,绘图;
运行情况良好!
lanren_me
驱动牛犊
驱动牛犊
  • 注册日期2004-11-11
  • 最后登录2007-02-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-11-12 17:40
另:说什么采样频率达到150多M

试问什么的cpu可以达到这样的频率;

20k/s的采样频率的时间周期已经是50微妙!

1微妙的采样频率最多也就是20k*50/s==100M/s

估计这个采样频率现在都没有办法达到吧!



ningwl
驱动牛犊
驱动牛犊
  • 注册日期2004-11-19
  • 最后登录2004-11-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-11-19 09:18
各位大虾能不能把电路、代码给一部分让我学习学习啊?
hzhq1
驱动老牛
驱动老牛
  • 注册日期2002-12-13
  • 最后登录2012-03-29
  • 粉丝0
  • 关注0
  • 积分32分
  • 威望1054点
  • 贡献值0点
  • 好评度606点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-12-29 08:57
另:说什么采样频率达到150多M

试问什么的cpu可以达到这样的频率;

20k/s的采样频率的时间周期已经是50微妙!

1微妙的采样频率最多也就是20k*50/s==100M/s

估计这个采样频率现在都没有办法达到吧!

 


PC并不能做完所有的事,
尤其高速传输。。。
这是一个,一个风雨交加的,漆黑的夜晚......恩,情节越来越复杂了。
游客

返回顶部