VB通过串口采集多路数据,绘制曲线并保存

xuehan1108 2009-07-23 05:18:38
用VB通过Rs232采集下位机10路通道的数据,现想对每一路通道的数据进行曲线绘制和保存。目前对单一通道的数据采集、绘制和保存成功。10个通道可通过手动选择,当回选到一个通道时(比如,刚开始是1通道,后来换到2通道)能够观察到这一段时间内的数据曲线。
请问,我应该怎样设计才能实现每换一个通道显示一张曲线图?并且能够通过保存对话框来存储该曲线图?
...全文
1210 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
taoqixufei 2011-04-29
  • 打赏
  • 举报
回复
楼主你好,我现在正在修改跟你一样样的一个6通道的程序,能不能看一下你的源代码
qq52016000 2009-08-26
  • 打赏
  • 举报
回复
呵呵,真的和股软一个样。。。这个下位机类同数据服务器
xuehan1108 2009-08-07
  • 打赏
  • 举报
回复
我画的散点图。
pusiyu 2009-08-06
  • 打赏
  • 举报
回复
也在做这个曲线显示,我想问的是:你画曲线是用的是Line方法,还是MSCHart控件;两者都是将接收到的数据保存,然后绘图是吧?不知道两者有什么优缺点?
xuehan1108 2009-08-06
  • 打赏
  • 举报
回复
10路数据不能同时传上来 ,一次只能传一路数据,下位机10个通道接了10路传感器,想要分时观察每一路通道的数据,所以要来回切换。现在上位机就是要看每次切换到那个通道时候的数据变化(新切换到一个通道后清除以前的图像显示,然后从此刻采集到的数据开始显示该通道的曲线)。
chinaboyzyq 2009-08-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 xuehan1108 的回复:]
目前对单一通道的数据采集、绘制和保存成功。10个通道可通过手动选择,当回选到一个通道时(比如,刚开始是1通道,后来换到2通道)能够观察到这一段时间内的数据曲线。
[/Quote]
1)10通道同时有数据传上来吗?
2)切换到当前通道时在干什么?为什么要切出去,再切回来看变化.
3)是看最近一个切出去的,还看哪个无所谓.

你这里问题太多了.
画图 或 用数据装数据 都是简单的事. (逻辑第一,数据第二)

dim a() as single
redim a(100,100)
pic1.cls
...画Pic1....
xuehan1108 2009-08-05
  • 打赏
  • 举报
回复
我想通过一个数组来保存采集得到的制,用一个Picturebox显示曲线,我首先获得通道号,并且每次判断通道号是否有改变,如果改变清数组,和清图。这样可实现吗?
熊孩子开学喽 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xuehan1108 的回复:]
呵呵,谢谢大家都回复。我的下位机不能控制,是买的。下位机与PC只有一个RS232串口连接。下位机能够显示通道切换后这段时间的数据(比如当1通道时,开始显示1通道的曲线,当换到2通道后显示2通道的曲线,再切换到1通道时,显示2通道这段时间的1通道的数据仍然连续的显示。)但现在的问题是关机后不能保存我此次的数据,所以需要通过RS232把数据传输到PC,然后绘出与之相对应的曲线,并保存,以供下一次实验参¡­
[/Quote]
这就很明显了,当你切换到一个通道的时候没有办法可以获得另一个通道的数据对吧?
如果是这样,再怎么写程序也没办法拉
xuehan1108 2009-07-27
  • 打赏
  • 举报
回复
建立DC环境画图,是不是要快速一些啊?
xuehan1108 2009-07-26
  • 打赏
  • 举报
回复
目前PC得到的数据显示通道号,有效数据、时间。但一次只能显示一个通道的数据。
xuehan1108 2009-07-26
  • 打赏
  • 举报
回复
呵呵,谢谢大家都回复。我的下位机不能控制,是买的。下位机与PC只有一个RS232串口连接。下位机能够显示通道切换后这段时间的数据(比如当1通道时,开始显示1通道的曲线,当换到2通道后显示2通道的曲线,再切换到1通道时,显示2通道这段时间的1通道的数据仍然连续的显示。)但现在的问题是关机后不能保存我此次的数据,所以需要通过RS232把数据传输到PC,然后绘出与之相对应的曲线,并保存,以供下一次实验参照比较。
熊孩子开学喽 2009-07-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 qq52016000 的回复:]
突然想到一个最最简单的方法,如果你的数据格式可以做成股票软件的数据格式,那你这个程序都不需要写了,直接发送到股软显示或者打印。。。。

呵呵,玩笑哦
[/Quote]
最佳创意奖!
qq52016000 2009-07-24
  • 打赏
  • 举报
回复
突然想到一个最最简单的方法,如果你的数据格式可以做成股票软件的数据格式,那你这个程序都不需要写了,直接发送到股软显示或者打印。。。。

呵呵,玩笑哦
of123 2009-07-24
  • 打赏
  • 举报
回复

如果下位机也是自己设计的话,建议使用 RS485 协议。这样只需一个 PC RS232 口,就可以连接到 200 台以上的下位机。而且,RS485 对线路要求很低,一对电话线,就可以连接到最远 1000m 的设备。

RS485 PCI 卡或交换机都有卖的。特别是交换机(RS485 Hub)通过串口连接,下端就可以用水晶头电话线连接多台设备。可以级联,最多接 254 台。
qq52016000 2009-07-24
  • 打赏
  • 举报
回复
刚开始是1通道,后来换到2通道,再回到一通道时,你能够观察到这一段时间内的一通道数据曲线的话,说明数据接收方面你已经完成。

对于你提出的问题,建议如下:

1将各路接收到的数据保存。

2窗体上的同一位置放置多个大小相等的PictureBox控件多个,该控件属数组控件,用来显示各路曲线视图。

3建立内存画图DC环境,并用某路曲线数据在内存里画好曲线图后BitBlt到相应的某个PictureBox里即可。

4多路曲线数据时,只要用路数值分别对应Picture的下标即可,利用类模块实现时如同画单个曲线一样简单。

5利用Printer.PaintPicture可以分别打印各个PictureBox里的各路曲线图形。

6保存PictureBox里面的曲线图形倒文件还要我说吗?呵呵
嗷嗷叫的老马 2009-07-24
  • 打赏
  • 举报
回复
又是一个让人猜测的内容...........

那么我的猜测结果是:

程序接收多个设备的数据,在界面上同一曲线框内定时切换显示?

那你需要首先将接收到的数据分别保存下来.这一点,可以使用一个数组来完成.

曲线显示部分,只需要从相应的数组内取得要显示的曲线各点的数据,显示出来即可.
熊孩子开学喽 2009-07-24
  • 打赏
  • 举报
回复
这得看你的数据采样是怎么做的了,如果你的设备无法做到同时采集所有通道的数据,那么再高明的设计也帮不上忙。(我估计你的PC本身也不大可能同时插着10个串口数据线吧)
所以只能猜测你的232外设是否如同一个USB HUB那样可以接这么多路输入。
如果你有这么样一个外部设备,那你只要在切换的时候把该设备换存的串口数据画成曲线就行了。
当然,如果你的设备本身也只能一次一个得通讯,那么再怎么设计也是白搭了,因为除了你的程序正在“关照”的那个端口以外的其他串口数据根本就进不到你的PC。
rjhrjh 2009-07-23
  • 打赏
  • 举报
回复
我也要做一个类似的东西,叫我qq聊下吧532653049,但是别指望我啊,我是菜鸟~~
of123 2009-07-23
  • 打赏
  • 举报
回复

“手动选择”是什么意思?机械转换开关?

如果是那样的话,很难通过软件来识别。除非你的下位机有特殊的协议来标识自己。
贝隆 2009-07-23
  • 打赏
  • 举报
回复
你可以定义一个保存数据的结构,在定义一个这个结构的数组,二维的,可以存放时间和数据,这样就可以在图片矿上绘制了。

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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