HreoWinGauge2.0组件集应用示例----数据处理

 

HreoWinGauge2.0 试用版下载地址:http://download.csdn.net/source/6896899

 

       HreoWinGauge中包含一个功能齐全的数据处理模块,具有对数据进行输入输出、记录、回放、数学计算等处理功能。具体介绍参考《HreoWinGauge2.0组件集使用手册》。本示例将在上一节数据输入输出示例的基础上,演示如何应用数据处理模块的记录、回放功能。

 

1)设置组件的自动记录输入数据功能

在上一节数据输入输出示例中,已创建一个命名为TestValueProcessor的窗体,并已将左右两个CircularPointer关联起来。用鼠标点击GaugeContainer对象右上角的三角形智能标记,弹出智能操作面板,点击“Task for selectded object” 选项卡中的“Edit”选项,此时打开一个“Gauge Container Editor”对话框。对话框上部显示有此对象的类型(GaugeContainer)和名称(gaugeContainer1)。在此对话框中找到ValueProcessors属性,然后点击其右侧的属性值框内的“...”按钮,弹出一个“ValueProcessor Collection Editor”对话框(见图7.9-1)。此对话框可对ValueProcessors集合进行各种编辑。点击ValueProcessor0对象,然后在右侧的属性编辑器内设置该ValueProcessor对象的内部属性:“HistoryDepth”设定为“10”;“HistoryDepthUnit”设为“Seconds”。然后点击OK按钮退出修改。此设置表示ValueProcessor0可以自动记录最近10秒钟的输入数据,可作为回放时输出使用。

HreoWinGauge2.0组件集应用示例----数据处理

 

7.9-1  Gauge Container Editor窗体1

 

2)添加和设置各种数据计算器

在图7.9-1  ValueProcessor Collection Editor窗体中找到ValueCalculators属性,用鼠标点击其右侧的属性值框内的“...”按钮,弹出一个“ValueCalculator Collection Editor”对话框(见图7.9-2)。此对话框可对ValueCalculators集合进行各种编辑。点击“Add”按钮添加各种ValueCalculator对象到对话框左侧的“Members”列举项中,并在对话框右侧的属性编辑器内设置各对象的内部属性。设置内容如下:

CorrectingValueCalculator0:“Type”设为“Unchange”;“Enable”设为“True”。

MathValueCalculator2:“Type”设为“RateOfChange”;“ValueDepth”设为“2”;“ValueDepthUnit”设为“Seconds”;“Enable”设为“True”。

HreoWinGauge2.0组件集应用示例----数据处理

 

7.9-2  ValueCalculator Collection Editor窗体1

 

3)设置圆形旋钮和圆形指针为接收回放数据

直接点击左侧圆形旋钮对象CircularPointer0区域,此时该对象将出现矩形选择框,然后点击右上角的三角形智能标记,弹出智能操作面板,点击“Task for selectded object”选项卡中的“Edit”选项,此时打开一个“Gauge Object Editor”对话框(见图7.8-6)。找到该CircularPointer0对象的内部属性:“ValueSource”设为“ValueProcessor0\CorrectingValueCalculator0”。此设置表示,数据处理器ValueProcessor0CorrectingValueCalculator0的输出数据将送到此圆形旋钮中显示。

同理将右侧CircularPointer1对象的ValueSource”设为“ValueProcessor0\MathValueCalculator2”。

 

4)添加各种回放功能按钮

TestValueProcessor窗体右侧添加4个功能按钮(见图7.9-4),分别为:PlaybackPauseResumeStop,并添加相应的Click事件响应函数。

HreoWinGauge2.0组件集应用示例----数据处理

 

7.9-4  TestValueProcessor窗体1

 

程序清单如下:

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

// add namespace

using HeroWinGauge;

 

 

namespace HeroWinGaugeSamples

{

    public partial class TestValueProcessor : Form

    {

 

        private ValueProcessor vp;

        private CircularPointer cp;

 

 

        public TestValueProcessor()

        {

            InitializeComponent();

        }

 

        private void TestValueProcessor_Load(object sender, EventArgs e)

        {

            cp = (HeroWinGauge.CircularPointer)gaugeContainer1.GaugeComponents[0].MiddleLayerParts[0];

            vp = gaugeContainer1.ValueProcessors[0];

          

 

        }

 

        private void btnPlayback_Click(object sender, EventArgs e)

        {

            cp.DraggingEnable = false;                  // must set false first for plackback;

            if (!vp.StartPlayback())

            {

                MessageBox.Show("Error in starting playback!");

                cp.DraggingEnable = true;               // if playback false or over,then reset to true for enable dragging

            }

 

        }

 

        private void btnPause_Click(object sender, EventArgs e)

        {

            if (!vp.PausePlayback())

            {

                MessageBox.Show("Error in pausing playback!");

 

            }

 

        }

 

        private void btnResume_Click(object sender, EventArgs e)

        {

            if (!vp.ResumePlayback())

            {

                MessageBox.Show("Error in resuming playback!");

            }

        }

 

        private void btnStop_Click(object sender, EventArgs e)

        {

            vp.StopPlayback();

        }

 

        private void gaugeContainer1_ProcessorPlaybackStateChanged(object sender, PlaybackStateChangedEventArgs e)

        {

            switch (e.PlaybackState)

            {

                case (OperatingState.Started):

                    btnPlayback.Enabled = false;

                    btnPause.Enabled = true;

                    btnResume.Enabled = false;

                    btnStop.Enabled = true;

                    break;

                case (OperatingState.Paused):

                    btnPlayback.Enabled = false;

                    btnPause.Enabled = false;

                    btnResume.Enabled = true;

                    btnStop.Enabled = true;

                    break;

                case (OperatingState.Resumed):

                    btnPlayback.Enabled = false;

                    btnPause.Enabled = true;

                    btnResume.Enabled = false;

                    btnStop.Enabled = true;

                    break;

                case (OperatingState.Stopped):

                case (OperatingState.Complete):

                    btnPlayback.Enabled = true;

                    btnPause.Enabled = false;

                    btnResume.Enabled = false;

                    btnStop.Enabled = false;

                    cp.DraggingEnable = true;                   // if playback false or over,then reset to true for enable dragging

                    break;

                default:

                    break;

 

            }

       }

}

 

以上程序中各按钮的功能如下:

Playback按钮:开始进行回放操作,ValueProcessor0进入数据回放状态,左右两个圆形指针将重现此前10秒种的转动过程。

Pause按钮:暂停当前正在回放操作,ValueProcessor0进入数据回放暂停状态,左右两个圆形指针将暂停回放转动过程。此时可使用Resume按钮恢复已暂停的回放操作。

Resume按钮:恢复已暂停的回放操作,ValueProcessor0重新进入数据回放状态,左右两个圆形指针继续回放转动过程。

Stop按钮:停止当前正在进行回放操作,ValueProcessor0进入数据回放停止状态,左右两个圆形指针将停止回放转动。此时可使用PlayBack按钮重新开始回放操作。

 

5)数据记录回放过程总结

 

1)记录和计算输出过程

当用鼠标拖动左侧圆形旋钮时,相当于输入CircularPointer0Value值,同时将当前Value值送往CircularPointer0.OuputProcessor属性指定的数据处理器ValueProcessor0中,ValueProcessor0首先将输入的数据保存到历史记录缓冲区中,然后将数据送到ValueProcessor0.ValueCalculators中的各种数据计算器进行运算处理,最后将各计算结果送往相应的图形类指针对象进行输出显示。图形类指针对象可以通过设定其ValueSource属性来指定数据输入源,例如:ValueProcessor0\MathValueCalculator2

 

注意:记录过程中,尽管CircularPointer0也设置了ValueSourceValueProcessor0的数据计算器,但CircularPointer0输出的数据,经数据处理器ValueProcessor0处理计算后,输出的数据并没有重新回到该CircularPointer0,这是由于HreoWinGauge中已限定输出数据的对象不能同时成为输入数据的对象。

 

2)回放和计算输出过程

当点击Playback按钮后,ValueProcessor0进入数据回放状态,并拒绝外部数据输入。ValueProcessor0开始从历史记录缓冲区中按先进先出顺序取出数据,送到ValueProcessor0.ValueCalculators中的各种数据计算器进行运算处理,最后将各计算结果送往相应的图形类指针对象进行输出显示。图形类指针对象可以通过设定其ValueSource属性来指定数据输入源,例如:ValueProcessor0\MathValueCalculator2

回放过程中可以暂停、恢复和停止。当历史记录缓冲区中所有数据取出处理后,回放操作结束,ValueProcessor0退出回放状态,重新允许外部数据输入。

 

 

 

 

 

 

HreoWinGauge2.0组件集应用示例----数据处理

上一篇:java中 静态代理模式


下一篇:游戏 window