xiaotanlan 发表于 2011-3-15 16:02:48

关于VB中用Teechart画波形的问题

在CSDN上下载了一个Teechart2010的控件,传到这里来,点击此处下载 ourdev_622743G8GKPS.rar(文件大小:3.74M) (原文件名:TeeChart2010.rar)
要用上位机实时显示电压值,于是拿这个控件写了个测试程序,我写的打包到这里。
点击此处下载 ourdev_622744W3JKSB.rar(文件大小:3K) (原文件名:Wave Display.rar)
波形截图如下:http://cache.amobbs.com/bbs_upload782111/files_37/ourdev_622746F2VQ7R.jpg
(原文件名:wave.jpg)

我要实现的功能如下:能实时显示一个通道的电压值(0~5V范围),上面写的软件是用随机数产生每秒变化一次的模拟电压值,Y轴为电压轴,X轴为时间轴,显示最近2分钟的波形,如果2分钟到了波形自动从右向左滚出左边界。可是上面的程序只能将波形堆积在窗口,不能实现滚动显示的效果。Teechart控件用的不熟,看它说明是可实现这功能的,还可实现曲线回放功能,用鼠标向右拖动波形会将时间轴放大,可是纵坐标又跑出范围了,不知怎么用,望高人指点迷津。

xiaotanlan 发表于 2011-3-15 17:48:28

再传个安装版的teechart2010上来,里面有好多例子
点击此处下载 ourdev_622767CJ2UWX.zip(文件大小:24.90M) (原文件名:TeeChart2010-安装版.zip)

tdh03z 发表于 2011-3-15 19:02:21

teechart2010可以用于vb.net吗?

自动从右向左滚出左边界,查找控件提供的例程,应该有例子,不过如果连续记录并且数据量大时,CPU占用会越来越大,导致电脑响应变慢,我当时是这样做的,利用控件提供的函数获得X轴的最大值,在数据个数超过这个值后,删除最开始的一个数据,使显示数据个数始终保持在一个固定值。如果要保存老的数据,可以利用文本文件将数据保存下来,回放时,从此文件中读取数据并显示即可。

QQ373466062 发表于 2011-3-15 22:03:14

听说Teechar很强大却没有用过

bobqq 发表于 2011-3-15 23:54:24

每次刷新都把所有连线重新画一次,舍掉最左边的点

hefq 发表于 2011-3-16 01:22:15

学习

xiaotanlan 发表于 2011-3-16 09:47:28

回2楼:我现在的要求是只要能实时显示最近2分钟内的波形就可以了,不需要在波形上实示老的数据,也不需要回放历史曲线。
你说的“利用控件提供的函数获得X轴的最大值,在数据个数超过这个值后,删除最开始的一个数据,使显示数据个数始终保持在一个固定值。”这个做法我不知道具体怎么实现的。怎么获取X轴的最大值呢,又怎么样删除最开始的一个数据,能不能在我程序的基本上修改一下,我的程序所有代码如下:
其中command1是启动按钮,command2是停止按钮,还有一个timer1定时器用来在启动后每秒产生一次随机数。
Private Sub Command1_Click()
    Timer1.Enabled = True
    Command1.Enabled = False
    Command2.Enabled = True
End Sub

Private Sub Command2_Click()
    Command1.Enabled = True
    Command2.Enabled = False
    Timer1.Enabled = False
End Sub

Private Sub Form_Load()
    Randomize
    TChart1.Series(0).Clear
End Sub

Private Sub Timer1_Timer()
    Text1.Text = 5 * Rnd
    TChart1.Series(0).Add Val(Text1.Text), Time, vbRed
End Sub

xiaotanlan 发表于 2011-3-16 09:52:07

回4楼:我不是用pset画点和连线的方法做的,我的程序里还要做大部分实时采样以及控制,因为自己画做实时2分仲的动态显示要不停的移数据,不停的刷新,我担心自己画曲线时间来不及,所以想用控件来做。还望大家指点下

yyccaa 发表于 2011-3-16 11:32:40

如果没有x轴的缩放功能的话,不需要移动数据,只需要在1个PictureBox(假设为A)作为容器,里面放2个PictureBox,这2个PictureBox作为图形循环,加上循环数组,定时向左移动这2个PictureBox控件,最左端的移出A后,移动到最右端做下一个循环就行。
所以每个定时要做的不过是Line一根线,再设置2个PictureBox的Left这点工作量。

xiaotanlan 发表于 2011-3-16 15:17:01

TO 8楼,不知道您有没有例程呀,就用一随机文框每秒产生数据,用Picture BOX来动态显示最近几十秒的波形,我是上位机初学者,希望大家帮帮忙啊。

topzjm 发表于 2011-3-16 15:43:22

非常强大的控件,曾经用过老的版本做热网曲线上位机。

xiaotanlan 发表于 2011-3-16 21:21:17

大家既然很多人用过这个控件,就帮帮忙吧,能否说明一个怎么样设置teechart可以实现动态实时显示,即随着时间的推移整个曲线动态的实时向左移动,我上面用teechart做的程序只能将波形压缩在整个窗口,这样时间越长波形就密密麻麻的都看不清了。

或者用另外一种移动图片框的方法也行,我找了篇论文试图按它的说明来做,但是最终曲线不能实现平移,只能实现刚开始在图片框里绘制曲线的功能,曲线到达右边界后不能实现平移,主要是bitblt这个函数用的时候出现问题了,下面我把论文及写的源程序都传上来
论文点击此处下载 ourdev_623094D3757U.pdf(文件大小:341K) (原文件名:用VisualBasic实现测控软件中的实时曲线和历史曲线(2).pdf)
我按论文写的源程序:点击此处下载 ourdev_623095LDRXNG.rar(文件大小:3K) (原文件名:picturebox画实时曲线.rar)

bomq123 发表于 2011-3-18 15:22:44

关注此帖!!
望高手解答!!

xiaotanlan 发表于 2011-3-21 16:04:31

问题已经解决了,有些人可能认为这是个很简单的问题,不愿意解答,只是来炫下自己曾经用它做过什么什么,哎,对于我们这些初学者来说,想摸清楚它的功能还是要费一翻周折的!我来这里,主要是因为这里曾有好的氛围,有很多热心的朋友总是能无私的解答我的问题。可是这一次比较失望,有人用过却不愿发个例程上来。我欣赏这里的开源精神,大家相互帮助才有提高嘛。
下面我把例程打包放在这里,可以实时显示最近1分钟内的波形;按鼠标右键向右拖动还可以显示历史曲线,希望对初学者有所帮助,高手不要见笑。
点击此处下载 ourdev_624298HNO4N4.rar(文件大小:3.57M) (原文件名:Wave Display.rar)

bomq123 发表于 2011-3-21 17:10:47

感谢LZ的无私精神!
向LZ致敬!!

GZLJZ 发表于 2011-3-26 01:10:45

LZ好样的

xiaotanlan 发表于 2011-4-1 10:48:58

借这个贴子再顺便发个问题,大家知道VB软件怎么打包吗,也就是打包好的软件拷到其它没装VB的电脑上也能正常运行。VB自带的Package &Development向导好像不好用呢,我用它来做这个波形显示的安装软件都没做成功。

我的VB程序里用到了第三方控件,数据库,还有文件。想做成个安装软件,大家有没有好的打包工具推荐下呀。

yyccaa 发表于 2011-4-1 11:30:35

开源的 NSIS,商业的InstallShield。微软开源的工具,WiX。

waterx3 发表于 2011-4-1 11:34:29

初始化中 Chart1.AllowZoom:=False;
procedure TForm1.LineSeries1AfterAdd;
var
    i:Integer;
begin
X:=X+1;
    if x>1000 then
       begin
         With Chart1.BottomAxis do
            begin
                Minimum := 0;
                Maximum := Maximum +1;
                Minimum := Maximum - 999;
            end;
       end;
end;

每次赋值调用此函数,你自己改VB吧。
还有,chart的下轴选项中的自动去掉。

lantian0099 发表于 2011-4-1 11:42:17

支持LZ,学习当中

yuanjingjie 发表于 2011-4-1 11:57:09

关注一下

xiaotanlan 发表于 2011-4-1 21:48:54

回复【18楼】waterx3
-----------------------------------------------------------------------

我没有看懂是啥意思,难道说打包还需要修改程序吗?

tdh03z 发表于 2011-4-1 22:29:23

晕,都没看到,不会说我的吧。

那你不觉得这个简单的问题完全可以在控件带的例程中找到解决方法吗?

我不是写上位机程序的,只是临时凑合写下调试程序,这个控件是很久以前用过下,当时也是第一次使用,从提供的例程中可以基本上使用起来,然后在网上搜索下个别函数的用法。最终是简单的应用起来了,可这么长时间没用,对这个问题还真是一下子回答不出来,只能说下自己的解决思路,具体的还是要靠自己哦。

程序打包,我写的调试程序一般比较小,一个程序中也用不了几个外部控件。我是先用VB6自带的打包程序将此程序用到的所有控件全部找到后生成一个安装包,因为自带的安装包会自动将用到的控件全部提取。这些控件就是你这个程序需要的。然后用第三方打包程序将这些控件及主程序一起打包即可。我用的第三方打包程序是   小颖安装程序制作专家V5.46 ,不要问我这个程序怎么用,自己练练手吧,一个国人写的软件,还是很好用的,自己从网上搜索下载。

afeibfp 发表于 2011-4-2 00:53:53

vb打包用SetupFactory.

xiaotanlan 发表于 2011-4-2 12:52:51

谢谢大家,SetupFactory挺好。

yl604922959 发表于 2011-4-6 14:18:03

mark....

robertwang 发表于 2011-4-8 11:47:13

mark....

huanyingxuan 发表于 2011-4-12 21:38:49

我是vb的初学者,现在想用vb来绘制一个图形,第一段是指数增长,第二段是线性增长,然后后面是其他函数的,不知道谁能教下我大概的步骤呢?

huanyingxuan 发表于 2011-4-12 21:59:01

回复【1楼】xiaotanlan
-----------------------------------------------------------------------

能不能给我留个联系方式呀,我有些具体的问题想问问你,我还没怎么接触的、

bomq123 发表于 2011-4-20 10:15:41

想做一个正弦波及谐波,TeeChart本身可以添加函数,不知道如何用,望知道的朋友指点一下~ 多谢了~

hao234hao234 发表于 2011-6-2 11:20:06

mark

lee345 发表于 2011-6-23 18:03:48

顶上

yesful 发表于 2011-6-27 14:30:29

mark!

plc_avr 发表于 2011-6-27 16:31:58

我也mark一下,可能会有到、

cuikai12345 发表于 2011-6-27 16:47:19

mark

dyjanna 发表于 2011-7-14 10:15:46

很实用。

残忆视觉 发表于 2014-1-16 20:33:38

谢谢楼主,我刚看到这个控件,也是一点不会用。楼主真是帮了大忙了

ypm 发表于 2014-2-16 11:39:53

可惜之前串口的波形显示已经搞定了,要不然可以玩玩这个

chunyu 发表于 2015-4-8 16:57:33

这个真会用到

happy_andy 发表于 2016-7-14 17:44:31

图形效果还可以啊
页: [1]
查看完整版本: 关于VB中用Teechart画波形的问题