| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9565 人关注过本帖, 1 人收藏
标题:VB6.0 用mschart控件绘制多条动态曲线怎么做到 请指教 谢谢了
只看楼主 加入收藏
梦千殇
Rank: 2
等 级:论坛游民
帖 子:49
专家分:19
注 册:2015-1-6
结帖率:88.89%
收藏(1)
已结贴  问题点数:20 回复次数:18 
VB6.0 用mschart控件绘制多条动态曲线怎么做到 请指教 谢谢了
VB6.0 用mschart控件绘制多条动态曲线怎么做到 请指教 谢谢了
1.工控的范围
2.用PLC获取4路模拟量动态显示曲线
3.数据已经获取
不知道启用mschart控件怎么实现 请高手指点 谢谢了
搜索更多相关主题的帖子: 动态 
2015-01-06 14:37
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:20 
查了查百度http://wenku.baidu.com/link?url=UxLZQhPwod4QO2LoofC8o3f6jgKqtzkPpso4ReDlswKVj4c1lSrzToNdQP6Uvr_c0fscZb8410B6iciM9ZxVXWrZGM3V4FMSTJ8NMRYoXGy
不知动态的意思是不是每个采样周期读取一次PLC数据?如果是,建议用画点,画线的办法.
如果动态的意思是数据全都传到了PC,再每过一个时间间隔画一个数据点,也建议用画点,画线的办法.
如果只是把已有的数据一次画出来,那可以用mschart控件

大开眼界
2015-01-06 14:48
梦千殇
Rank: 2
等 级:论坛游民
帖 子:49
专家分:19
注 册:2015-1-6
收藏
得分:0 
回复 2楼 lianyicq
动态的意思是 每一秒读一次plc的数据 mschart控件中也显示相应的曲线 也就是一秒钟加一个点 我用一条曲线绘制的图以完成 但不知怎么设置多条曲线显示 就是同时绘制多条 我这里需要四条曲线 您能帮忙吗 谢谢了
2015-01-06 15:06
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
这个是画两条,改变数据数组的维数.
http://wenku.baidu.com/link?url=VG_fUq66FN1MD6GuP9EvBValLqoVAH6GWGU5nUcFWiTg4iOAAjg_QlKyGi5gW7UgB9cOCweU2hdRA5D5VYc7BvDQGUx0ejZlYkU6zkvOSM_

大开眼界
2015-01-06 15:10
梦千殇
Rank: 2
等 级:论坛游民
帖 子:49
专家分:19
注 册:2015-1-6
收藏
得分:0 
回复 4楼 lianyicq
这个例子我看过 不是动态的 我要用timer控件触发 接受
2015-01-06 16:09
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
没仔细研究过mschart控件,从它的使用方法看侧重于画静态图。如果必须用它,开辟一个数据区,存放串口来的数据,每个时间间隔收到PLC来的数据后,重画整个数据区。效率似乎不高。如果用画点画线的方法就容易多了,来一个数据画一个点或一条线,不用考虑以前的数据。
实际试了用MSCHART每隔一定时间重新画图,闪烁相当严重。和示波器显示不可同日而语。

[ 本帖最后由 lianyicq 于 2015-1-7 09:30 编辑 ]

大开眼界
2015-01-06 16:36
梦千殇
Rank: 2
等 级:论坛游民
帖 子:49
专家分:19
注 册:2015-1-6
收藏
得分:0 
回复 6楼 lianyicq
现在不知道怎么实现 不知道怎么编程 我只做出了一条动态曲线(实时采集并实时显示的) 但不知道怎么再加 不清楚数组 怎么定义 并给mschart控件赋值
现在不考虑效率 只要能实时动态显示多条曲线就可以了 1秒钟采集一个点 一共采集600秒 我用的散点图类型  重点是数组的定义及赋值 以及给machart控件赋值  您这知道吗 求帮助 效率和画面闪烁不考虑
2015-01-07 10:40
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
回复 7楼 梦千殇
数组mydata(m,n).
第一排(1 ,0) 到(m,0)是横坐标值
第二排(1,1)到(m,1)是第一个曲线的纵坐标值
第三排(1,2)到(m,2)是第二个曲线的纵坐标值
以此类推
画一条曲线可以用散点,一条以上只能用line
给数组赋值可以直接赋值,也可以绑定数据库.


大开眼界
2015-01-07 10:49
梦千殇
Rank: 2
等 级:论坛游民
帖 子:49
专家分:19
注 册:2015-1-6
收藏
得分:0 
回复 6楼 lianyicq
Dim mydata(600, 1)
Dim i As Single
Private Sub Form_Load()
With MSChart1
     .TitleText = "压强变化 kpa/s"
'    '设置图线的外观
    .Plot.SeriesCollection(1).Pen.Width = 30
       .Plot.SeriesCollection(1).Pen.Style = VtPenStyleSolid
        .Plot.SeriesCollection(2).Pen.Width = 30
       .Plot.SeriesCollection(2).Pen.Style = VtPenStyleSolid
        .Plot.SeriesCollection(3).Pen.Width = 30
       .Plot.SeriesCollection(3).Pen.Style = VtPenStyleSolid
      
      
'    '设置XY轴
    .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False
    .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False
    '// 设置最大值
    .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 600 '设置横轴标注最大值
    .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 1000 '设置纵轴标注最大值
    '// 设置最小值
    .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 400
    .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0
    .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 6 'X轴主要网格数量
    .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 'Y轴主要网格数量
    .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 0 'X轴次要网格数量
    .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0 'Y轴次要网格数量
    .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted
    .Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted
   ' .Plot.Axis(VtChAxisIdY).AxisTitle = "压强(kpa)"
       .Plot.Axis(VtChAxisIdX).AxisTitle = "时间(s)"
    MSChart1.Plot.AutoLayout = False
    MSChart1.Plot.UniformAxis = False
    MSChart1.chartType = VtChChartType2dXY '设置图形为二维散点图
'    MSChart1.ChartData = mydata
   
    'MSChart1.Backdrop.Fill.Style = VtFillStyleBrush
    'MSChart1.Backdrop.Fill.Brush.FillColor.Set 0, 0, 0
'   For i = 1 To 600
''   .Row = i
'   .RowLabel = i
'   Next
   
   
    End With
End Sub

Private Sub Timer1_Timer()

mydata(i, 0) = i
mydata(i, 1) = 700
MSChart1.ChartData = mydata
i = i + 1

    If i > 600 Then
    Timer1.Enabled = False
    Else
    Timer1.Enabled = True
    End If
End Sub
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

这是我做的程序 只能动态显示一条曲线  显示多条 怎能定义数组 和 给mschart控件赋值
2015-01-07 10:52
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
回复 9楼 梦千殇
Dim mydata(600, 1) '若画两条1改为2。并为第二条曲线的纵坐标赋值,即mydata(0~600,2)
 MSChart1.chartType = VtChChartType2dXY '设置图形为二维散点图,此外改为二维折线图

大开眼界
2015-01-07 11:01
快速回复:VB6.0 用mschart控件绘制多条动态曲线怎么做到 请指教 谢谢了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041551 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved