请教大家怎样实现这样的功能

youhao1999 2011-11-10 09:01:32
上位机usb口接收到设备发来的数据,现在想在接收数据的同时,将数据实时的通过上位机串口进行转发,请教具体实现的思路
...全文
178 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
youhao1999 2011-12-04
  • 打赏
  • 举报
回复
上面说的这样可以吗[Quote=引用 2 楼 fly4free 的回复:]

实现数据缓存队列,
一个线程从USB接收数据保存到队列,
一个线程从队列提取数据发往串口。

数据是即时的话,使用内存即可。
数据需要都保存的话,那就得把缓存放到磁盘上。
[/Quote]
youhao1999 2011-12-03
  • 打赏
  • 举报
回复
定义了全局QList变量
在主线程中,接收USB数据, m_zfList.push_back(m_data)
在转发线程中发送:
char buf[25];
int b = 10;
if(!m_zfList.isEmpty())
{
float temp = m_zfList.takeLast();
gcvt(temp,b,buf);
myCom_288->write(buf);

}
点击开始发送按钮,开始接收数据并同时转发,请问这样做可以吗?
向立天 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 youhao1999 的回复:]
请问队列该用什么实现?有现成的标准模板库用吗?

引用 12 楼 xianglitian 的回复:
队列更合理一些吧
USB的来到数据只管入队
串口转的时候只管出队
[/Quote]当然
http://wenku.baidu.com/view/26dca04ac850ad02de804178.html
向立天 2011-12-01
  • 打赏
  • 举报
回复
队列更合理一些吧
USB的来到数据只管入队
串口转的时候只管出队
morrist1987 2011-12-01
  • 打赏
  • 举报
回复
fly4free
(自由的飞!!)
说的很明白了。
li_wei_ying0809 2011-12-01
  • 打赏
  • 举报
回复
一个队列就够吧。两个线程访问加上数据保护。
youhao1999 2011-12-01
  • 打赏
  • 举报
回复
请问Qlist使用前需要先确定容量大小吗?
是否可以先确定容量大小,有顺序的存入数据(push_back),再有顺序的提取数据(pop_font)?
[Quote=引用 7 楼 fly4free 的回复:]
这玩意儿全靠经验,具体硬件、具体环境、具体问题具体分析。
你可以设计成可配置的。

不过看你要转发到串口,估计实际上不会有多大的数据流量。。
不然这需求简直是……
[/Quote]
liujie250079934 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 youhao1999 的回复:]
请问队列该用什么实现?有现成的标准模板库用吗?

引用 12 楼 xianglitian 的回复:
队列更合理一些吧
USB的来到数据只管入队
串口转的时候只管出队
[/Quote]

用链表也可以吧、、
hnzlk 2011-12-01
  • 打赏
  • 举报
回复
考虑到接收数据可能要比发送数据的速度快,首先要看你接收的数据是啥格式的,是一段段的规则的,还是乱的,反正自己定义,将接收到的数据放入队列,然后可以用timer监视这个队列,如果有数据,则直接发送,也可以用线程,至于采用什么队列,像这种采用vector就挺快的,反正都是队列首尾操作。
youhao1999 2011-12-01
  • 打赏
  • 举报
回复
请问队列该用什么实现?有现成的标准模板库用吗?[Quote=引用 12 楼 xianglitian 的回复:]
队列更合理一些吧
USB的来到数据只管入队
串口转的时候只管出队
[/Quote]
youhao1999 2011-11-27
  • 打赏
  • 举报
回复
以前没搞过这东西,真是无从下手呀
fly4free 2011-11-23
  • 打赏
  • 举报
回复
这玩意儿全靠经验,具体硬件、具体环境、具体问题具体分析。
你可以设计成可配置的。

不过看你要转发到串口,估计实际上不会有多大的数据流量。。
不然这需求简直是……
youhao1999 2011-11-22
  • 打赏
  • 举报
回复
队列的大小如何确定?
[Quote=引用 4 楼 fly4free 的回复:]

你能保证处理速度 大于 设备发送数据 的速度,也可以不用队列。
或者允许部分数据的丢失。


队列这个词在这里表示数据元素的完整性与顺序性。
[/Quote]
用户 昵称 2011-11-21
  • 打赏
  • 举报
回复
您自己不说的很明白了吗?就是转发一下。
fly4free 2011-11-21
  • 打赏
  • 举报
回复
你能保证处理速度 大于 设备发送数据 的速度,也可以不用队列。
或者允许部分数据的丢失。


队列这个词在这里表示数据元素的完整性与顺序性。
youhao1999 2011-11-20
  • 打赏
  • 举报
回复
为什么使用队列,列表可以么?[Quote=引用 2 楼 fly4free 的回复:]

实现数据缓存队列,
一个线程从USB接收数据保存到队列,
一个线程从队列提取数据发往串口。

数据是即时的话,使用内存即可。
数据需要都保存的话,那就得把缓存放到磁盘上。
[/Quote]
youhao1999 2011-11-11
  • 打赏
  • 举报
回复
怎么没人?
fly4free 2011-11-11
  • 打赏
  • 举报
回复
实现数据缓存队列,
一个线程从USB接收数据保存到队列,
一个线程从队列提取数据发往串口。

数据是即时的话,使用内存即可。
数据需要都保存的话,那就得把缓存放到磁盘上。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧