人机界面简介
人机界面是指人与机器在信息交换和功能方面相互接触或交互的领域,或称界面。人机界面,信息交换,功能接触或交互,是指人与机器之间的硬接触和软接触。这个组合面不仅包括点、线、面之间的直接接触,还包括远距离信息传输和控制的空间。
人机界面是人机系统的中心环节。主要由安全工程学的一个分支安全人机工程学研究和提出,通过安全工程设备工程、安全管理工程和安全系统提供解决方案。工程学研究具体的解决方案、手段和安全人体工程学。它将信息的内部形式转换为人类可以接受的形式。
人机界面存在于所有涉及人机信息交换的领域。它广泛应用于工业和商业领域。它简单地分为两种:“输入”和“输出”。输入是指人对机器或设备的操作,如手柄、开关、门、指令等。 (命令)发出或维护等,而输出是指机械或设备发出的通知,如故障、警告、操作说明等。良好的人机界面将帮助用户使操作变得更简单、更正确、更方便。高效机械的快速运转还可以最大限度地提高机械的效率并延长其使用寿命。市场上所说的人机界面是指狭义上的软件的人机操作界面。
如何使用人机界面
明确监控任务需求,选择合适的HMI产品;
在PC机上使用屏组态软件编辑“工程文件”;
测试并保存编辑好的“工程文件”;
将PC与HMI硬件连接,并将“工程文件”下载到HMI;
连接HMI与工业控制器(如PLC、仪表等),实现人机交互。
人机界面编程简介
用单片机实现的项目人机界面比较简单。如果是LED显示屏,应根据LED位数选择简单、明亮、易于用户一目了然的提示;显示数据位数应充分考虑用户提出的技术要求。
分析编程难点及技术解决方案
即使是熟练的程序员,在编程过程中也会遇到一些困难。为了更顺利地完成程序设计,应该根据程序完成的功能和程序流程来分析整个程序的框架,根据自己的技能定位整个程序的难点,然后找到最好的算法。例如,对于稍微大一点的项目,键盘扫描和显示部分的编程应该是单片机编程中最困难的部分。
(1)键盘扫描和显示过程都与硬件部分密切相关
发送片选信号选择键盘,必须判断单片机芯片是高电平选通还是低电平选通;选通键盘后,还需要读回键盘的状态。回读键盘状态需要进行防抖处理;如果键盘晃动,则丢弃回读的数据,重新读取键盘状态。如果确定键盘被按下,则可以对键值进行处理;处理后的键值被发送到显示器或用于其他用途。可见,上述每个过程都涉及到硬件电路。
(2)键盘扫描和显示涉及的算法相对复杂。
因为扫描键盘的过程就是遍历每个按键,识别抖动,识别按键是否松开等;另外,必须延迟适当的时间才能再次读取键值。显示过程还需要遍历每个数码管或液晶字符;其中,查表过程和显示过程都采用了相对复杂的循环遍历算法。
(3)数字键和功能键的区分
如果是数字键则显示,如果是功能键则转到相应的功能子程序。两者结合起来就会形成一个相对复杂的分散程序。 MCS51单片机有现成的自由转子子程序可供参考。 PIC可参考MCS51的自由转子子程序来应用。
以上三点都是单片机编程的难点,编程前应仔细找出并分析。通过分析,将所有可能的难点一一找出并找到相应的算法,后续的编程过程也相应更加顺利。
编程
上述准备工作完成后,就可以开始编写程序了。因为有清晰的程序流程和充足的信息,可能遇到的困难基本上都能找到解决方案;这样,提前的准备工作就比较充分,即使在以后的编程过程中遇到困难,也比较容易解决。这样可以节省很多时间,让你可以静下心来,按照计划和流程认真地写程序。另外,调试一般是写完一个功能程序后进行,通过后再写另一功能代码。这样可以避免所有代码写完后调试时可能产生的相互影响,从而可以找出程序的哪一部分出现了问题。问题。
程序调试
程序的调试过程是一个比较复杂的过程,有的需要很高的技巧和一定的方法。一般编程软件都提供单步、单步跳过、断点、运行到光标处等基本方法。一般来说,掌握这些基本方法就可以解决大部分问题。经过长时间的调试实践,自然可以掌握一定的调试技巧,即熟能生巧。
人机界面简单编程实例
一、原理
ActIveX 控件的美妙之处在于控件和应用程序始终可以和谐地交互。 ActIveX 控件提供了三种与应用程序交互的基本机制:属性、方法和事件。用户通过这三部分来控制控件和开发程序。
属性描述控件的当前状态并影响控件的显示和行为。属性值存储在控件的变量中。方法是在控件内定义的函数(FuncTIons)。方法的使用与控件提供的功能有关。它通常会影响控件本身或其行为。大多数方法的效果还受到当时控件的属性的影响。事件是控件在某些特定情况下生成的通知事件。该事件被传递到控制应用程序以执行程序中与该事件连接的函数(事件处理程序)。
下面举例说明如何使用DAQBench控件搭建人机界面,以及如何使用凌华数据采集设备的ActIveX控件处理模拟信号。
我们假设一个程序分为两部分:可见部分(前台显示操作的界面)和不可见部分(后台工作的线程)。本文程序的显示界面非常简单,只有一个绘图控件和一个退出按钮。后台工作是使用虚拟的PCI-9112多功能数据采集卡(无需安装真实的板卡)来生成采样数据。
程序流程如图1所示。程序开始时,调用PCI-9112控件的StartContAI方法来激活连续AI。当采样完成后,PCI-9112控件的AiHalfReady 0事件自动激活。在事件响应函数中,通过调用绘图控件PlotChart 0的方法,将采集到的数据传输到绘图控件。
这样我们就可以继续在屏幕上看到采样的数据,直到程序退出。整个程序中只有两条语句需要键盘输入,其余的工作都是通过鼠标点击完成的。从这个程序中你可以感受到使用DAQBench的ActiveX控件来做数据采集程序是多么的简单和容易。
**图1 程序原理图**
下面将一步步讲解如何在Microsoft的Visual c++6.0下使用DAQBench的ActiveX控件完成数据采集应用。
使用Visual C++的MFC AppWizard构建基于对话框的程序框架。
通过“文件”>>“新建”菜单命令创建一个新项目,这将打开“新建”对话框。在Projects页面中,选择[MFC AppWizard(exe)]项目类型,在Project name中输入项目名称:MZR,点击0K。
在Step 1对话框中选择[Dialog based]选项,点击Finish》》点击0K。
通过这种方式,应用程序向导构建了新项目和程序的框架,并自动在对话框编辑器中打开程序对话框。
将所需的ActiveX 控件添加到控件工具栏的步骤如下:
(1)选择绘图ActiveX控件(文件名)DAQBench DChart Control—(ADLINK),点击插入按钮,用鼠标在随后的对话框中点击确定,接受默认的类名和文件名。
(2)选择数据采集ActiveX控件(文件名)NuDAQ PCI—9112 Control—(ADLINK),点击插入按钮,点击确定按钮,点击确定按钮,接受默认的类名和文件名。
(3) 添加完成后,返回组件和控件库对话框,单击关闭按钮。
这样,绘图控件DAQBench DChart Control和数据采集控件NuDAQ PCI-9112 Control就被添加到对话框编辑器的控件工具栏中,方便向对话框添加控件。
将控件添加到控件工具栏后,您可以在设计应用程序的用户界面时使用它。开发人员可以使用对话框编辑器在对话框上放置控件。具体步骤如下:
删除表单上带有TODO 消息的静态文本控件,并删除“确定”按钮。
单击控件工具栏底部的DChart 按钮,然后通过单击鼠标将其放置在对话框中。 ActiveX控件可以像标准Windows控件一样插入到对话框中,并且可以调整位置和大小。
选择控件工具栏底部的PCI-9112 按钮,将其放置在对话框中适当的位置,右键单击对话框中的PCI-9112 控件,在打开的菜单中选择属性,出现一个窗口各种属性字段的属性页对话框。通过属性页对话框,您可以设置这个特定的控件。具体数值见表1。
**表1 控制NuDAQ PCI-9112 控制属性设置**
用户在使用控件编写程序之前,必须首先为该控件设置一个变量名。下面为绘图控件和采样控件设置相应的变量:使用快捷键Ctrl+W打开MFC类向导对话框,在成员变量选项卡中将类名设置为CMZRDlg,使用添加变量?按钮将变量添加到控件标识号。变量定义见表2。
**表2 对话框中对应的控制变量**
定义PCI-9112控件的事件处理函数。使用快捷键Ctrl+W。在“MFC 类向导”窗口中,按“消息映射”选项卡,然后在“对象ID”字段中选择IDC_PCI9112CTRLI 控件。在消息字段中选择AiHalfReady。单击添加功能按钮。添加数据采集控件的AiHalfReady消息响应函数,接受默认函数名,点击编辑代码按钮找到该函数,添加以下代码:
空白
CMZRDlg:OnAiHalfReadyPci9112ctrl1(VARIANT FARScaledData,VARIANT FARBinaryCodes)
{TODO:在此处添加您的控件通知处理程序代码
m_Chart.PlotChart(ScaledData); //将ScaledData 中的采样数据传递给绘图控件。 }
在初始化函数中启动数据采集功能:
找到对话框初始化函数void CMzRDlg:OnInitDialog(),最后返回TRUE;在语句前添加以下语句
BOOL CMZRDlg:OnInitDialog()
{CDialog:OnInitDialog();
(1)选择项目》》添加到项目》》组件和控件?项目,然后在出现的对话框中,用鼠标双击Registered ActiveX Controls 目录条目。这将打开计算机上安装和注册的ActiveX 控件的列表。选择所需的ActiveX 控件并将其插入到项目和控件工具栏中。
TODO: 在这里添加额外的初始化VARIANT 文件名;
m_Pci9112.StartContAI(文件名); //激活连续
返回真; //返回TRUE 除非将焦点设置到控件
按Ctrl_F5 键直接在Developer Studio 中运行程序。运行结果如图2所示。
**图2 运行结果**
开发环境:本文假设您已经安装了Visual C++6.0、DAQBench和PCIS-OCX。