便携式打印数据中心的软件设计(二):人机界面的软件设计

in #steempress3 years ago (edited)

一款仪表,人机界面(按键/显示功能)的感受直接决定了用户对仪表的印象,这是很重要的。人机界面是系统和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。因此,这款机器的显示界面,我也是花了很大的精力去实现的。
image.png

1.键显主要流程如图一所示:

image.png
图一 键显程序流程


2. 菜单和按键的详细介绍:

image.png

a >初始界面:

打印机开机后,根据当时是否有DATALOG连接在打印机上显示如上界面(同时与波特率是否正确设置相关)。

如果没有DATALOG在线,则显示图二。此时,只能通过MENU键切换到PRINT页(图六),然后打印已存在打印机里的数据,或者再通过MENU键切换到CONFIG页(图七),对打印机进行相关设置。

如果有DATALOG在线,则显示图三。此时,屏幕上方显示当前连线的DATALOG的相关信息,分别是:
1. ID:打印机的ID号码;
2. Total:DATALOG采集的总数据量;
3. Rate:DATALOG采样频率;
4. Unit:DATALOG采样的温度单位。

屏幕下方显示的是对DATALOG的相关操作,在此页面中只能进行DOWNLOAD操作。Download:字样反白显示,表示当前进行的选择项是Download,此时,按下ENTER键,Yes字样开始闪烁,表示已经选中Download项,要求确认开始Download,此时,按下ENTER键则开始从DATALOG中Download数据,按下ESC(MENU)键则表示放弃Download。

警告:如果没有经过Download,那么打印机中保持仍是上一次Download的数据,最终打印的数据可能会与现在在线的DATALOG的数据不符。

在这个页面中,按MENU键能够进入LOGGER SETTING页(图四),对DATALOG进行进一步的设定,或者进入PRINT页(图六)和CONFIG(图七),进行相关操作。
image.png

** b >LOGGER SETTING界面: **

打印机开机后,如果有DATALOG在线,则可使用MENU键进入LOGGER SETTING页(图四)。在此页中,可以对DATALOG进行相关的操作。

1.** ID**: 反白显示表示此项被选中。此时,按ENTER键则可对在线的DATALOG的ID号进行设定。ID号由八个ASCII码组成,每个ASCII码只能在‘0’-‘9’,‘A’-‘Z’,‘-’以及‘ ’中选择,并且八个字符中间不能夹杂‘ ’(但可以以‘ ’结尾)。在设定过程中,当前设定的ID字符会闪动。

2. Record Set: 选中该项后,按ENTER键进入Record Set页(图4)。在Record Set页中,对DATALOG的工作方式进行设定。

1)设定DATALOG的记录数据量,共有1000,2000,4000,8000,12000,16000六种数据量可供选择。第二项为设定DATALOG的记录速率,单位是SECOND,范围从1秒-7200秒可供选择。

2)温度单位: 有摄氏(C)和华氏(F)两种单位可供选择。

3)开始工作的方式(START-MODE): 有IMMEDIATE(立即方式),MAGNETIC(磁力方式)和SCHEDULE(定时方式)可供选择。

警告:使用定时方式时,请先设定DATALOG的实时时间,否则会有不正常的结果。

当以上设定完成后,可选择OK表示对以上设定的确认并驱动DATALOG使之开始工作,或者选择CANCEL放弃以上的设定。

3. ALARM: 在此项中设定DATALOG工作时报警的温度范围。报警值的单位同Record Set页中的Unit项,报警的范围为-40~85(摄氏C)或-40~185(华氏F)。

4. SLEEP-MODE: 在此项中设定DATALOG记录完毕后是否进入休眠模式,从而减少DATALOG电池的损耗。

5. DATALOG TIME: 在此项中设定DATALOG的实时时间。此项的初始值为当前打印机的实时时间(而非DATALOG的实时时间!),所以DATALOG开始工作前,应确保其实时时间正确。
image.png

c>PRINT SETTING界面:

打印机开机后,可使用MENU键反复切换页面后进入PRINT页(图六)。在此页中,可以对打印机进行相关的操作。

  1. PRINT: 使用此项表示对打印操作的设定已经完成,可以开始打印数据。PRINT项的使用和DOWNLOAD相类似。

  2. CONTRAST: 在此项中设定打印时的打印浓度。打印的浓度范围为1-9。另外,在打印的过程中也可以对打印浓度做设置(见图八)。

3.PRINT-MODE: 在此项中设定打印模式。打印模式有Report(表格方式)和Graphic(图形方式)可供选择。

4. CONTENT: 在此项中设定打印的内容。打印内容有Statistic(数据统计表头)和Page(分页数据打印)可供选择。选择Page项时,每2000个数据点为一页,最大为8页。

5. ALARM: 在此项中设定打印时是否对数据进行处理,从而得到超过报警范围的记录数据的数量。如果选择YES,则进入ALARM SET页(图七)对报警范围进行选择,选择完毕后从OK项回到PRINT页。如果选择NO,则打印时不对数据进行报警范围的处理。

image.png

** d>打印信息页 :**

打印开始时,则显示打印信息页(图八)。此时,可以使用UP或DOWN键更改打印的浓度,也可按住ESC(MENU)键超过1秒后终止打印。
image.png

** e>CONFIG界面:**

打印机开机后,可使用MENU键反复切换页面后进入CONFIG页(图九)。在此页中,可以对打印机的相关参数进行设定。

  1. LCD CONTRAST: 使用此项设定打印机液晶屏的对比度。

  2. BAUDRATE: 使用此项设定打印机与DATALOG通讯时的波特率。

  3. SET REALTIME: 使用此项设定打印机的实时时间。

f>按键程序流程:

image.png
图十

1.键处理过标志在没有键按下时清0,Key_LCD()处理过键按过标志后置键处理过标志。

2.如果键处理过标志成立,则Key_LCD()中不对键按过标志响应。

3.由于键按下标志不会被双键同时按下破坏,所以只有松开所有键时才会清除键处理过标志。

4.在Key_LCD()中相应地方置键自动标志,在键码=0时清除。

5.如果两个键同时按下,则由于Key_LCD()中已经响应过第一个按下的键,建立了键处理过标志,所以第二个按键被舍弃。

6.以上键的处理基于没有键复用的情况。

g>键盘显示程序设计思路:

状态图如图十一所示。详细介绍如图十二至十四。

1.LCD为139×64的点阵LCD,分8行,20个字符。为编程方便和美观的角度,使用第0、1行作为菜单的提示行,其余6行显示相关的设置信息。

2.键盘使用4键,分别为MENU(ESC),UP,DOWN 和 ENTER键。操作类似于电脑显示器的OSD菜单,根据当时的显示实现各种不同的功能。

3.显示的文字分使用7×5的点阵字符,分为普通文字,反白文字(表示当前设定项),下划线文字(表示多选项中被选中的一项),和闪动的文字(表示正在设置的数值)。

4.显示的内容中,固定的文字储存于AT24C128中,其余实时显示的文字有通讯程序接受后处理显示。反白,下划线,闪动这些文字的位置也存放于AT24C128中,在使用时从中读取。

5.由于按键的响应动作与当时打印机的状态有关,故设置打印机状态标志cShow_Statue表示当时设定的内容,用cControl_Flag表示当时是否在对相应选中的项进行设定,用cControl_Offset表示当时设定值的便宜量。
image.png
图十一

6.使用0x20,0x60,0xA0,0xE0做键显状态字,是为了方便MENU键在各个页面间的跳转,使程序简单和统一(使用子函数)。

7.使用cControl_Flag作为是否正在设定的标志,cControl_Offset作为设定的偏移量,使得设定的程序变得统一。

8.整个键显函数,通过上面的分支后,变为简单的显示程序和键盘响应程序,减小了程序的复杂度。

9.按键响应处理后的显示在下一次进入键显程序时得到体现,由于主程序以较高的速度循环执行各个子程序,所以显示的响应时间可以在人可以容忍的范围内。
image.png
图十二 刷屏程序

image.png
图十三 按键程序:显示状态变化

image.png
图十四 按键程序:设定数值变化


以上内容均由 @patriciaphilip原创,如无授权,请勿引用,谢谢!



Posted from my blog with SteemPress : http://cnstm.org/blog/2019/05/23/%e4%be%bf%e6%90%ba%e5%bc%8f%e6%89%93%e5%8d%b0%e6%95%b0%e6%8d%ae%e4%b8%ad%e5%bf%83%e7%9a%84%e8%bd%af%e4%bb%b6%e8%ae%be%e8%ae%a1%ef%bc%88%e4%ba%8c%ef%bc%89%ef%bc%9a%e4%ba%ba%e6%9c%ba%e7%95%8c%e9%9d%a2/

Sort:  

Congratulations @patriciaphilip! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You published more than 10 posts. Your next target is to reach 20 posts.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Vote for @Steemitboard as a witness to get one more award and increased upvotes!



This post has been voted on by the SteemSTEM curation team and voting trail. It is elligible for support from @curie and @utopian-io.

If you appreciate the work we are doing, then consider supporting our witness stem.witness. Additional witness support to the curie witness and utopian-io witness would be appreciated as well.

For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

Please consider setting @steemstem as a beneficiary to your post to get a stronger support.

Please consider using the steemstem.io app to get a stronger support.

Congratulations @patriciaphilip! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Hi @patriciaphilip!

Your post was upvoted by Utopian.io in cooperation with @steemstem - supporting knowledge, innovation and technological advancement on the Steem Blockchain.

Contribute to Open Source with utopian.io

Learn how to contribute on our website and join the new open source economy.

Want to chat? Join the Utopian Community on Discord https://discord.gg/h52nFrV

Coin Marketplace

STEEM 0.28
TRX 0.06
JST 0.038
BTC 36470.99
ETH 2424.87
USDT 1.00
SBD 3.75