总第 卷 第 期
拓 年 第 期
电测与仪
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
皿 昌 】朋 ” 扭 场
采用 实现的函数波形显示控件
高宏亮 ’, 王淑娟 ‘ , 翟国富 ‘ , 陈功军
哈尔滨工业 大学 军用 电器研究所 , 哈尔滨 巧以 】
河南省黄河河务局信息中心 , 郑州 侧 辫
摘要 波形显示控件是工业控制类软件常用的一种控件 , 本文采用 设计并实
现了基于 类自绘方式的函数波形显示控件 , 该控件以位图双缓冲方式显示波
形 , 实现了大数据量波形的显示 , 且具有类似 中波形显示窗口一样任意尺度局部
放大的功能 , 同时针对一般控件中大数据量显示控件界面反映迟缓的问题提出了改进
方法 , 进‘ 步加快界面的响应速度 , 实现了较好的效果 。
关键词 双缓冲 波形显示 任意尺度放大
中图分类号 文献标识码 文章编号 一 【侧巧 】 拓 一
玩 一
兮 , , 一 ,另 一 ,
, 于 ,
, 盯 , 《 ,
另 〕 抖 ,
一 丽 勺 即
,
, 一
,
一击
, 叮 盯 ,
尽 ’ 叩 叮 , 拌
初 , 而
冈 拌
·
叮
引 盲
目前 , 国内外许多公司都推出了适用于开发工业
监控软件的软件产品 , 如美 国 公司的 ,
的 , 公 司 的 趾
,
公司的 等 国内主要有组态王 、华富计
算机公司的 , 以及台湾研华的 等 。 这些
软件的功能齐全 , 但价格都很 昂贵 , 对于一些小型用
户并不适用 , 而且一般此类如软件都以 控件
形式发布 , 不便于用户根据具体需求修改控件功能 。
而 目前一些
资料
新概念英语资料下载李居明饿命改运学pdf成本会计期末资料社会工作导论资料工程结算所需资料清单
及网络上提供的显示 曲线的控
件 , 功能大都是较简单 , 主要显示实时采集数据的曲
线 , 用于观察数据的变化趋势 , 此类控件多以每个采
样点对应一个显示像素宽度的比例显示曲线 , 通过波
一
形推移方式显示全部数据 , 无法显示大量数据的整体
波形 , 并且无波形缩放功能 。 而对于一些数据分析类
软件需要对长串数组的总体显示及任意尺度细节的
放大 , 类似于 中 函数波形显示功能 。 本文
实现的波形显示控件 , 主要完成数据动态刷新 , 全局
显示 , 任意尺度放大等功能 , 并针对常见软件中大数
据量显示中出现的界面迟滞问题给出了优化解决办
法 。
基本功能描述及实现算法
为了方便响应各种鼠标输人和图形输出控制 , 本
控件采用 派生类 自绘方式实现 , 这样实现的
控件与用户程序方便集成 , 且用户可根据 自己情况作
出修改 如背景色 , 坐标字号等 , 界面效果如图 所
总第 卷 第 期
叉拓 年 第 期
电测与仪表
口口 切 即口 扭 洲巧
图 波形显示控件全局显示波形
基本图形显示功 能
由于控件是基于 自绘控件方式实现 , 控件的主要
图形绘制功能都在 函数中实现 。
图形显示控件的常见问题是界面户刷新时的闪
烁问题 , 为了消除闪烁 , 本控件显示采用了位图双缓
冲显示技术 , 主要步骤为 先将显示内容绘制在一个
内存位图对象上 , 用 函数将位图直接输
出 , 由于 在 。系统中函数优先级较高 , 故
可实现极快速的显示 , 消除闪烁 。 为了操作方便 , 本文
参考文献【 中定义 , 将关于双缓冲的操作封装成一个
名为 的类负责内存位图的创建与显示输
出 。 使用 对象绘图时代码的格式如下
口脚 从月 饮 叨
二知 口‘ 一 二 刃获得控件所 占整
个矩形大小
饰 朋 口占七” 一
获得控件显示
口姗 心 用对话框背景色清除坐标显示区域 , 并刷新显
示坐标
又 哪 二
‘ 团 , , , 刃缩小控件矩形框 , 得到波
形显示矩形大小
口 二 ,山几 功
刀创建双级冲用位图 , 并选中该对象
一 山 仁 , 夕
先填充绘
图区背景色 白色
· · ·
⋯ ⋯其他绘图操作
刃销毁对象操作中包含显示输出双缓冲位图
】
一般图形显示控件中都需要坐标标注部分 , 即图
形显示部分背景色与窗口 界面背景色不同 , 图 中显
示了实际按钮资源的大小 。 由于波形显示区域与坐标
显示区域的背景色不同 , 如将整个控件举行区域作为
双缓冲显示矩形 , 不同的颜色背景的刷新会造成图形
的闪烁 , 为此 , 定义 了 叩 对象来定义波形
显示矩形大小 , 并以此建立双缓冲位图 。 由于坐标显
示区域的图形变化并不复杂 , 界面刷新只用背景色的
矩形覆盖即可 。
呷 二 忱
哪 氏且川。 , , ,
缩小控件矩形框 , 得到波形显示矩形大小 。
任意长度曲线窗口 映射算法
根据程序界面的不同要求 , 波形显示控件的宽度
不尽不同 , 要实现任意长度曲线的全局现实功能 , 就
需要建立灵活的坐标映射机制 , 将整个波形缩放至任
意宽度窗口 中显示 。
设显示波形数组为 型 口 由控件外
部调用函数负责内存管理 ,窗口宽度为 记 , 显示
数据总长度位 以玩 孙 , 设波形数据每一点的对应
窗口中坐标 为 , 计算公式如式 所示 。
环环八八 八八八
口口口口 ’’
份 、
图 坐标映射算法示意 图
万痴 二
其中 , 卜
·
』
面 『讼蠕
以由 忿以肠哪
,
毗 叫
二 以 为。用
其中 乞。阴 硫 为纵轴方向放大倍数
可 以看出由于显示屏幕上最小显示分辨单位为
像素 , ‘ 必须取整数 , 当显示数据长度远大于窗
口长度时 , 会有很多数据灰重登显示在一个横坐标位
置上 , 同理 , 当显示数据长度远小于窗 口长度时 , 会有
很多窗口横坐标显示同一个数据气
任意尺度细节放大功能实现
当鼠标左键托放时 , 首先需要能动态实时显示放
大框 , 在鼠标左键释放时 , 计算放大区域 , 并显示响应
数据 。
实现过程中主要用到的数据对象如下
总第 卷 第 期
洲拓 年 第 期
电测与仪表
公 旧 妞 拓
助 刃
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
当前需要放大的矩形框的位里
俪 刃记录当前放大之前整个显示 区域代表的矩
形区城大小 多次放大时用到
图 鼠标左健托动时放大框显示
, 刃放大 区 域对
应波形数据中的起始位置索引 。
鼠标左键按下时 , 函数主要完成功能包括 确定
放大框的最上角位置并置放大框矩形大小为 。 特别
需要说明 , 函数返 回参数 为相对于按钮 区域左
上角为零点的相对位置 , 而不是相对 位
置 , 需要进行坐标点转换 。
叩 〔七 栩哪 ,
角叩 禅 橄
刀放大框起始点落在绘图区 以外 , 退出
叫 二
刀无显示数据 , 退出
二
显示放大框标志位 真
山的吧 叩 二 以叩 ‘ ,
城 犯 叩
二 一
滋 越
获得当前放大框左上角位
叩 刃设 鼠标捕捉开关
栩娜 ,州
鼠标移动时 , 函数主要完成功能包括 如果 当前
状态处于放大状态 , 则动态修改放大框大小 , 修改放
大框矩形右下角最标位置 。
鼠标左键抬起时 , 函数主要完成功能包括 根据
放大框大小 , 位置 , 计算响应的显示数据区间 , 并刷新
显示数据 。 保存此次放大框参数值为 ,
以便多次放大时使用 。
切 试 ,
一 研 一
刃 以 二二 叫
无显示数据 , 退出
‘田吧
二 二 以
放大框尺度为 , 退出
二 佃阴
任眨 从 场犯
斌乙扣 司 回玩 泌 二死 仰
任碑 二 加 丘
叱 哪 幻山
几 二 朋 坷吧 吹 ””” 户以
哪 朋 拍
计算放大区对应数据在整个数据数组中的位
数据址小于窗口宽度且不放大波形
》二肠囚肠 山 比 呵
试 沙 肠 ”砂 姻祀 户 二 目
比
任眨 二 彻 吹
任叨 二 毓 户
城以阮 石 比 公
叮 》 戒比理油 任犯 二 介囚玩叼
月叫 二 任吮止汤 一 任转 现
即目 二 目山团比
朋 二 任托 咖
”” 滋 二 巧吮 碱
乙沁 司 二 如
盯 比
以祖卿 ,
鼠标右键按下时 , 函数主要完成功能包括 退 出
局部放大模式 , 清空放大框矩形内容 , 关闭放大标志
位 , 显示数据波形全貌 。 图 显示 了多次放大后某段
数据的波形显示 。
图 波形任慈尺度细 节 放犬显 下
总第 卷 第 期
旧巧年 第 期
电测与仪表
目 肥
,
巧
显示刷新速度的性能优化
从 节中可 以看出 , 当显示数据长度大于窗口
宽度 倍时 , 经过公式 中的取整运算后 , 窗 口一个
水平像素位置上有很多数据点重叠绘制 , 而这些重复
点对于波形显示效果时影响不大的 , 主要 由一组数据
中的最大值 、最小值决定 , 而且 , 由于数据量的过大 ,
显示速度有一定影响 , 为加快界面显示速度 , 作者提
出分类处理的方法 , 加快刷新速度 。 具体办法是 根据
显示数据长度 一 玩 与窗 口 长度
之 比进行不同的处理 ,
玩 将显示数据
中对应显示在同一水平像素位置的数据分为一组 , 搜
寻每组中数据的最大值和最小值 , 显示时只画最大值
和最小值于同一水平像素点 , 其余点不画
玩 戮 按正常公式
算法 , 依次画每一个数据点对应的位置
当显示数据全部长度小于窗口长度时 , 且处于非
放大状态显示数据原貌时 , 直接按照一个像素位置显
示一个数据方式显示 。
具体代码结构为
呷 , 即
坟 砷 一
数据童是窗 口宽度的 倍以上
二 山 拟伽 一 刃计算每组数据长度
巾 , 二哪 一 声二 即
呷沁 二 ,
把 体洲 山 呵 , 成 刀
一 试 十 , 二 ‘公 哟
一 州
, 行
二二 二 一 州
,网
川数据童是窗口的 倍以下或者数据 小于窗口尺寸
司 肠 印 一 不是放大状态 , 且数
据 小于窗 口宽度
代 玩 一
一 叫 笼价 , 一 讨 」 日
玩
即 二 姆 卜 刀 加 计算每组数据长度
二哪 氏 沙 【
一 侧 笼供 , 刃 】
控件测试
由于本控件直接采用 中 类扩展实
现控件 , 使用控件时只需将源代码文件加人工程项
目 , 界面 中创建按钮控件并将按钮与控件类绑定即
可 。 经作者试验 , 该控件加在 《 旧,《减 长度数据显示
波形时 , 仍可以实现快速 , 流畅的波形显示功能 。
结 论
本文采用 编程工具实现 了用于 函数
波形观察的控件 , 控件基于按钮 自绘方式实现 , 采用
位图双缓冲输出方式实现无闪烁显示 , 适用于单维数
据的全局和局部任意尺度放大显示 , 对于某些大数据
量波形显示刷新缓慢的问题 , 给出了优化改进办法 ,
实现了较好的显示效果 。
参 考 文 献
【 魏庆勇 , 王 阳明 ,陈久康 环境下工业监控软件趋势曲线显示画面
的实现闭机电一体化 ,
编程高手工作室 编程高手 , 以刃 ,
以 明 以 从人门到精通【 】电子工业 出版社 ,
作者简介
高宏亮 一 , 哈尔滨工业大学博士研究生 , 从事航天继电器多余物
检侧 , 徽弱信号检测算法方面的研究 。
收稿 日期 拓一 肠
丘 源 编发
上接第 页
结 论
通过讨论 数字滤波器的基本原理和设计步
骤 , 阐述了窗函数法设计 数字滤波器的思路 。 在
中 , 通过窗函数法设计了 数字滤波器 。
最后 , 对 滤波器的 实现的软件编程做了重点
讨论 , 并将结果下载到 目标板 上运
行 , 取得比较好的效果 。
参 考 文 献
刘 燕 基于 的 数字滤波器的设计阴 现代电子
技术 , 仪 ,
」胡广书 数字信号处理 —理论
、 算法与实现 〔 北京 清华大学 出
版杜 ,
作者简介
姜建山 一 ,男 ,湖北洪湖人 副教授 , 博士生 , 主要从事光纤传感 , 信
号处理及桥梁盆康监测等方面的研究 。
收稿 日期 巧一 一
杨长江 编发
一 一