编程|第三章 逻辑函数编程 (4)( 二 )
您可以编写一个程序来检测系统的状态 , 当处于非激活状态达到一定的时间时 , 自动关闭设备电源 。 如上图所示 。
?回顾一下“SIMPL Windows编程”那一章中提到的时间参数格式:HH.MM.SS.XXs , 其中HH=小时 , MM=分钟 , SS=秒钟 , XX=毫秒 。 那么在上图中 , 脉冲时间参数:3.00.00.00则表示3小时0分0秒0毫秒 。 使用这种格式时 , 如果最大时间单位没用到 , 可以不填 。 如:”3.00.00”表示3分0秒0毫秒(而不是代表3小时) 。
?上图中的”OR”逻辑符用来检测某个按钮是否被按下 , 并且每一次按下按钮都使Retriggerable One Shot被重新触发一次 , 并重新计时 。 如果3个小时内没有任何按键发生 , ’system active’信号量的值将会变低 。 ’systemactive’的低电平输出到One Shot函数的’trig*’端 , 从而驱动输出’out’的值为高 。
?当我们仅需要使用One Shot的’trig*’时 , 必须将’trigger’置0 , 因为’trig’是必须有输入的(不是可选的) 。 这里写0表示任何时候都忽略此输入 。
Delay Symbol
Delay函数用来将事件推迟一定时间发生 。 基本上输出信号的波形与输入信号完全一致 , 只不过被延迟了一段时间 。 Delay函数还有一个’reset’输入 , 用于取消所有未完成的延时输出 。 您起初可能会认为用Delay代替上节中的Retriggerable One Shot更容易实现自动关机的例子 。 但是 , 以下两个因素否定了这种做法 。 首先 , Delay是不可再次触发的 , 它仅仅是将输出传递给输入 。 因此 , 我们需要在每次按钮按下时用一些复杂的逻辑去重置它 。 第二 , Delay是单精度函数 , 因此它的取值范围是0-583秒 , 这样就不可能产生3个小时的等待时间 。
在这一章的前部分 , 我们学习了用一个信号量通过Buffer驱动多个事件的例子 。 这个例子为系统开关机提供了一种简单有效的方法 。 前面那个例子的不足就是”不能控制事件发生的时间和顺序” 。 也就是说 , 一旦Buffer的输入被触发 , 将同时驱动所有的输出 , 但有时并不希望如此 。 比如说 , 在开机联动中 , 希望投影机支架先降下 , 然后开启投影机 , 在完全开启后 , 切换某路视频进行投影输出 。 上图说明如何用Delay和Buffer实现这个时序 。 注意Delay的输出连接到Buffer以触发触发相应的事件 。 正如之前例子所示 , 这样做是为了使信号可以被其它系统输入或Buffer输出驱动所驱动 。。 最后 , 注意”system_power_off”信号被连到了Delay函数的’reset’输入端 ,这样可以防止几秒内交替按下开机和关机按钮(例如用户改变了想法) 时出现问题 。如果不重置Delay未处理完的系统开启’sysytem on’动作将在’system off’过程中出现 , 导致不可预期的结果 。
Oscillator Symbol
Oscillator Symbol可以持续产生交替信号 , 用来查询RS-232设备状态信息或在用户界面上产生闪烁反馈指示很有用 。 只有输入端“Gate”保持为高时 , 输出端才会震荡输出 , 以此让您能控制函数的开关 。 输出信号保持高、低的时间由参数’hi_time’和’low_time’决定 。
为了提示用户某个事件正在处理中 , 可以使用Oscillator产生一个反馈让按钮闪烁 。 比如:当用户按下’Screen down’按钮 , 除了简单的使用Set/Reset Latch这样的函数产生一个锁定的高电平反馈外 , 您可以在屏幕下降过程中让按钮闪烁 , 直到屏幕完全降落后 , 按钮才停止闪烁并保持激活状态 。 如上图所示 。
- 编程|测试人员对编程天生“恐惧”么?
- 编程|打造Web3.0基础设施 百度瞄准元宇宙的“人货场”?
- 网易易盾|测试人员对编程天生“恐惧”么?
- AI 编程工具 Copilot 的竞品 CodeWhisperer 来了,预览版免费用
- 编程|互联网时代不懂数据脱敏是灾难性的
- 如今|人工智能编程工具copilot正式发布
- 编程|以太网交换机中MB、bps 、pps的解析
- aiXcoder XL智能编程大模型发布:自然语言一键生成方法级代码
- 操作系统|好消息接二连三,除编程语言外,国产操作系统根社区也来了
- 编程|网络运营是什么?怎么做好网络运营?
