功能实现:PLC对LPC的音量控制
设计方案1:
在PLC上,当使用QDial调节音量时,触发QDial的SIGNAL:ValueChange(),对应SLOT向LPC发送自定义键码0x22;
在LPC上,当接收到0x22键码时,执行操作:设置当前volume值,当设置完成后,PLC将接收到来自LPC的volume数据进行更新。
发现问题:
1、当触发ValueChange()信号时,由于LPC设置3s无活动自动进入音量显示界面,PLC每隔3s仍发送0x22键码,导致VFD一直显示0x22键码,其他按键可以正常使用,但是操作执行完成后依然进入0x22的显示界面且每隔3s闪烁一次(原因应该是显示了volume界面但马上又被0x22刷新)。
2、发送的数据只有一个Byte可以搭载数据,搭载命令数据之后就无法搭载音量数据,改写协议又相对麻烦。
3、由于显示0x22也是其中一个功能码操作,在LPC中设置了3秒延时,因此才会有问题1的问题。必须关掉对0x22键码设置延时。
设计方案2:
设置一个Volume的镜像变量Volume_2(Volume_2设为全局变量),QDial获取Volume_2的值并与当前值做判断,得出方向后发送Volume+(ADKey5)和Volume-(ADKey6)的信号给LPC,直接执行加减操作。
发现问题:
1、用QDial控件的触发信号ValueChange()会导致音量一直为零,原因是在发生Value的变触发发送改变音量的函数,导致音量持续改变;
2、用release()做触发信号在数值改变的过程中LPC不响应,每次不论将数值调整为多少,都只做一次改变。
3、底部用于显示音量的Label无ValueChange的触发信号。
解决办法:
去掉Lbl控件,改用SpinBox并与QDial建立信号-槽关系,将spinbox的button隐藏(看起来就和Label一样了),用spinbox的valuechange作为触发信号。这样可以保证value随QDial实时改变,问题基本解决,但效果不太理想。由于使用循环,在实时改变数值的时候每改变一个单位都要计算一次差值,导致出现明显抖动。尚无解决办法。
注意:
1、在进行功能实现时,尽量避免使用全局变量,减少移植难度和空间占用;
2、不可改写现有通信协议。
功能实现:PLC对LPC的音量控制的更多相关文章
- Android之声音管理器《AudioManager》的使用以及音量控制
以下为网上下载然后拼接-- Android声音管理AudioManager使用 手机都有声音模式,声音.静音还有震动,甚至震动加声音兼备,这些都是手机的基本功能.在Android手机中,我们同样可以通 ...
- Android应用--简、美音乐播放器增加音量控制
Android应用--简.美音乐播放器增加音量控制 2013年6月26日简.美音乐播放器继续完善中.. 题外话:上一篇博客是在6月11号发的,那篇博客似乎有点问题,可能是因为代码结构有点乱的原因,很难 ...
- EasyPlayerPro windows播放器本地音频播放音量控制实现
背景描述 作为一个播放器, 除了能播放视频和声音外,音量控制是绝对不能缺少的功能; 本文在音视频播放的基础上,增加对音量的控制: 实现流程 调用mixerGetDevCaps获取音频输出设备列表; 打 ...
- Android原生音量控制【转】
本文转载自:http://blog.csdn.net/u013082948/article/details/65630085 本文主要涉及AudioService.还是基于5.1.1版本的代码. Au ...
- 关于IOS7以及向下兼容音量控制问题
最近做个简单的播放界面,只是简单的设计到播放音频,ios系统自带播放有四个类可以播放音频 AVPlayer,AVAudioPlayer,MPMusicPlayerController,MPMovieP ...
- WPF 媒体播放器(MediaElement)实例,实现进度和音量控制
WPF 视频音频播放控件MediaElement实现进度控制,音量控制实例 说明: 1.Volume控制音量的大小,double类型,并且实现了属性依赖,可以用来双向绑定:在 0 和 1. 之间的线性 ...
- krpano音量控制(我们已经转移到krpano中国网站 krpano360.com)
需求: 实现音量控制,这是官网的样例, 本文已经转移 到 krpano中文网 p=148">http://krpano360.com/? p=148 很多其它教程关注微信公众号 krp ...
- IIS7中 ASP.NET授权功能如何实现对静态文件的控制
IIS7中 ASP.NET授权功能如何实现对静态文件的控制 前序 .net提供了3种用户认证的方式,分别是Windows,Forms,Passport.这几种形式的定义可以在网站根目录下Web.con ...
- ALSA声卡12_从零编写之添加音量控制_学习笔记
1.设置音量时应用程序的调用过程 (1)strace分析: amixer cset numid=1 30 (设置音量) /dev/snd/controlC0 open SNDRV_CTL_IOCTL_ ...
随机推荐
- [LeetCode] Maximum Gap 求最大间距
Given an unsorted array, find the maximum difference between the successive elements in its sorted f ...
- Alpha阶段总结
Alpha阶段的验收已经完成,8个小组都展现了他们经过连夜奋战后的成果.相比过往几届,这是第一次8个小组全部顺利演示操作完成,没有个别小组因为任务未完成而延宕演示的情况发生.Alpha演示,各组都实现 ...
- AngularJS模型
1. AngularJS模型主要就是使用的AngularJS的ng-model指令. ng-model指令可以将输入域的值与 AngularJS 创建的变量绑定. <!DOCTYPE html& ...
- java多线程通信 例子
package com.cl.www.thread; public class NumberHolder { private Integer number = 0; // 增加number publi ...
- chrome 更新flash插件
下载下面的插件并安装 https://fpdownload.macromedia.com/pub/labs/flashruntimes/flashplayer/install_flash_player ...
- 【原】iOS 同时重写setter和getter时候报错:Use of undeclared identifier '_name';did you mean 'name'
写了那么多的代码了,平时也没有怎么注意会报这个错误,因为平时都很少同时重写setter和getter方法,一般的话,我们大概都是使用懒加载方法,然后重写getter方法,做一个非空判断.然后有时候根据 ...
- Freemarker中空值 null的处理++++定义数组
http://blog.java-zone.org/archives/800.html <#list listBlogPost as blogPost> </#list> 如果 ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- Python实战项目网络爬虫 之 爬取小说吧小说正文
本次实战项目适合,有一定Python语法知识的小白学员.本人也是根据一些网上的资料,自己摸索编写的内容.有不明白的童鞋,欢迎提问. 目的:爬取百度小说吧中的原创小说<猎奇师>部分小说内容 ...
- EasyUI 解决 datagrid 中 NumberBox 限制小数位数后不能输入小数点问题
初始化界面,发现编辑datagrid,不能输入小数点. var arrColumnsCNT = [[ { title: '毛重', field: 'GrossWeight', halign: 'cen ...