摘要:针对位置敏感探测器件构成的数据分析系统,借助开发工具及MFC消息映射机制,实现系统交互界面的设计。界面通过对串口通信和USB通信方法的研究,利用按钮控件实现并控制上下位机数据通信;数据传输处理之后,以文本和模拟坐标两种方式显示出光斑的位置,并利用文件保存光斑位置的历史信息。系统调试结果证明:该界面能够准确直观地显示数据分析系统的相关数据,实现与用户的友好交互,与其他同类型界面相比,提供了各种型号探测器件的相应处理,具有较强的适用性。

关键词:数据分析系统;交互界面;MFC;串口通信;USB通信

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)12-2798-04

目前在激光准直、测角、自动跟踪等精密光电检测系统中,探测目标位置的连续变化已经变得非常重要。位置敏感探测器(Position Sensitive Detector,PSD)是对入射到光敏面上的光斑能量中心位置敏感的光电感应器件,可以利用少数几个输出光电信号的相对程度来计算位置信息。由其构成的数据分析系统具有位置分辨率高、响应速度快等特点[1];四象限探测器(Four-Quadrant photodetector,QPD)通过比较四个象限的电流来确定光斑中心在二维平面上的位置坐标,其数据分析系统可以探测目标位置的连续变化,具有位置分辨率高、响应速度快、调节方便等特点[2-3]。该文在对光电位置敏感器件构成的数据分析系统研究的基础上,开发了一套上位机软件界面。该上位机软件交互界面设计了供用户选择位置敏感器件型号及输入系统修正参数的窗口,通过对串口通信和USB通信方法的研究,设置了上下位机通信控制部分,同时,设计了光斑中心位置数据文本直观显示、模拟坐标绘制、历史信息保存模块,及设备状态显示模块。软件功能全面、界面友好、操作直观、方便,且适用于其他型号的位置敏感器件数据分析系统中。

1 开发工具简介

Visual C++ 6.0拥有强大的功能和友好的界面,能为用户提供一个良好的可视化开发环境,它将程序和资源的编辑、编译、调试和运行融为一体,且提供了大量的程序开发工具。MFC是它一个庞大的类库,实现了标准的用户接口,提供了管理窗口、菜单、对话框的代码,可实现基本的输入/输出和数据存储,为用户开发Windows应用程序建立了一个非常灵活的应用程序框架[4]。

在MFC中对消息的处理利用了消息映射的方法,该方法的基础是宏定义实现,通过宏定义将消息分派到不同的成员函数进行处理。因此,在这种机制的支持下,MFC具有强大的消息处理能力[5]。

借助VC++提供的软件代码自动生成可视化资源编辑的功能及MFC消息映射机制,可以很便捷地开发上位机软件交互界面。

2 交互界面设计

上位机软件交互界面包括供用户选择位置敏感器件型号及输入相应修正参数的窗口部分,上下位机通信控制部分,数据/设备状态显示部分。

2.1 供用户选择输入的窗口设计

利用下拉式列表框控件提供供用户选择位置敏感器件型号的窗口。通过给其连接变量m_Type,利用m_Type.AddString()函数为列表框添加选项,m_Type.SelectString(-1, "HY1315(Active area 1.3*15mm)")函数添加默认选项。软件通过m_Type. GetCurSel()函数获得用户的选择,完成相应量程及坐标轴范围的改变及显示。利用编辑框控件提供用户输入增益及修正系数的窗口,以完善数据处理[6]。

2.2 上下位机通信控制模块设计

上下位机通信控制模块是数据分析系统实时数据采集的核心部分。设计中采用了串口通信和USB通信两种方式进行数据采集与传输。其中,串口通信用于测试,USB通信用于实际数据传输。

图1 USB通信流程图

2.2.1 串口通信控制部分

利用单选按钮控件提供串口号选择窗口,通过函数GetCheckedRadioButton()获取串口号。通过按钮控制串口设备的状态,按钮交互的实现,通过MFC类向导对按钮按下时,触发消息BN_CLICKED进行拦截,并重写对应的消息处理函数On*Button(),在函数中完成相应按钮的功能。串口控制区中,“Open”、“Close”按钮对应的函数在获取用户选择的串口号后,分别完成对应串口的打开及关闭功能;“Start”、“Stop”按钮通过控制参数m_SPStop控制串口通信的开始与否。借助串口类成员函数OnComm()实现接收字符及相应数据处理的功能[7]。

2.2.2 USB通信控制部分

USB通信接口具有即插即用的特点,方便与微处理器进行联机通信,同时USB的通信效率要远远高于RS232、RS485等通信接口。USB通信控制部分通过按钮控制数据传输,根据用户选定的位置敏感器件型号,进行相应的数据处理。通信程序流程图如图1所示。

“Link”按钮通过标志位m_OpenFlag控制设备是否连接。“Start”和“Stop”按钮通过标志位m_stop控制数据接收与否。“Suspand”按钮通过参数m_pause控制数据传输的暂停和继续,当按下该按钮时,按钮改变为“Continue”字样,同时通过调用Invalidate()函数使整个客户区无效,这时Windows会在应用程序的消息队列中放置WM_PAINT消息,MFC为窗口类提供了其消息处理函数OnPaint();当再次按下该按钮时,OnPaint()函数负责重绘窗口,从而重新进行数据传输。

上下位机的数据通信通过直接调用CH375DLL.dll动态链接库实现。CH372是一款USB总线的通用设备接口芯片,是芯片CH375的功能简化版,硬件成本更低,且完全兼容CH375,可以直接使用其WDM驱动程序和动态链接库。CH372在计算机端提供了应用层接口,即由动态链接库DLL提供的面向功能应用的API,包括:设备管理API、数据传输API及中断处理API。设备管理API包含了打开设备函数CH375OpenDevice(),关闭设备函数CH375CloseDevice();数据传输API包含了读取数据块(数据上传)函数CH375ReadData(),写出数据块(数据下传)函数CH375WriteData()等[8]。

2.3数据/设备状态显示设计

上位机软件在数据传输过程中,借助CString类成员变量stateinfo直观显示设备状态。数据接收处理后,借助Format()函数,以文字形式直观显示光斑中心位置的横纵坐标值,利用绘图函数在模拟坐标中显示光斑位置。借助文件实现数据历史信息保存的功能,关键代码如下:

GetDlgItem(IDC_RECEIVE_EDIT)PostMessage(WM_VSCROLL,SB_BOTTOM,NULL);

CString strPath;

图2 HY1315系统调试结果图

GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);

strPath.ReleaseBuffer();

//此时strPath内容为工程文件全路径,如:E:\TestPro\Exam\ Test.exe

//以下函数作用是获取最后一个"\"的位置

图3 四象限探测器系统调试结果图

int nPos=strPath.ReverseFind('\\');

//开始取全路径

strPath=strPath.Left(nPos+1);//此时strPath保存为当前工程的全路径,如:E:\TestPro\Exam\

//保存文件

CFile m_rFile;

if(!m_rFile.Open("Rec.txt",CFile::modeCreate | CFile::modeWrite)) {

AfxMessageBox("创建记录文件失败!");}

m_rFile.Write(m_Receive,m_Receive.GetLength());

m_rFile.Close();

3 实际调试结果

上位机软件设计完成后,运行程序,选择位置敏感器件的型号为默认选项,即一维位置敏感探测器HY1315,连接其对应的系统设备,输入需要的增益参数,选择串口号,单击串口控制区“Open”按钮打开串口,“Start”按钮接收数据,此时上位机界面数据、设备状态显示,模拟光斑坐标结果如图2所示。再次运行程序,选择四象限探测器型号,即QP36(Active area 6*6mm),连接相应系统设备,单击USB通信控制区按钮,可以控制数据传输设备的状态,单击“Link”按钮打开设备,“Start”按钮接收数据,此时上位机软件界面结果如图3所示。

4 结束语

针对位置敏感器件构成的数据分析系统,通过对串口通信和USB通信方法的研究,借助VC++提供的软件代码自动生成可视化资源编辑的功能及MFC消息映射机制,设计了上位机人机交互界面。调试结果证明,该界面能够实现用户选择输入,实现数据的上下位机通信传输,直观显示数据,准确绘出光斑在模拟坐标中的位置,完成光斑位置的历史信息存储。设计为数据分析系统提供了一套功能全面、界面友好、操作直观、方便的上位机软件。应用中只需修改对应的数据处理,即可应用到其他类似的数据分析系统中,很大程度上增强了系统的实际应用性。该界面已用于PSD及QPD数据分析系统试验箱中。

参考文献:

[1] Henry J,Livingstone J.Improved position sensitive detectors using high resistivity subs- trates[J].J Phys D :Appl Phys ,2008,41.

[2] Liu Yun,De Xu,MinTan.A new pre-alignm ent approach based on four-quadrant-photo- detector for IC mask[J].International Journal of Automation and Computing,2007, 4(2): 208 -216.

[3] Guo Li,Zheng Shuang.A high-performanc -e smallsignal amplifier[J].Journal of Northe-ast Agricultuial University,2005,12(2):141-145.

[4] Wang Ziying.The design of scene simula- tion system based on MFC programming fra- mework[J].Advanced Computer Control (ICA CC).2010,V3: 302-305.

[5] 潘恒.基于VC++/MFC的麻将牌连连看程序设计.[J]科协论坛:下半月,2011,25(5): 53-54.

[6] 揣锦华.面向对象程序设计与VC++实践[M].西安:西安电子科技大学出版社,2005:201-204.

[7] Rong Jian,Zhao Cuilian,Fan Zhijian,et al. Realistic 3D face reconstruction based on VTK and MFC[J]. Optoelectronics and Image Processing 2010,V(2): 145-149.

[8] 边海龙,贾少华.USB2.0设备的设计与开发[M].北京:人民邮电出版社,2004:217- 220.

[9] 孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2008.

用户和计算机通信的界面设计,数据分析系统的交互界面设计相关推荐

  1. 虚拟机里切换linux图形界面,虚拟机-linux系统中图形界面和命令行界面切换

    linux系统中图形化界面和命令行界面之间的切换可以分为两种,临时性切换和永久性切换. 临时性切换即切换后只对本次生效,系统重启后界面还是默认界面. 永久性切换即切换后系统开机后永远处于的界面. 临时 ...

  2. python编写交互界面设计_Python 如何编写交互界面?

    Python 如何编写交互界面? 先导入Python GUI库tkinter:然后使用tkinter接口"Tk"进行创建界面:接着使用接口"title"设置界面 ...

  3. python交互界面制作_Python 如何编写交互界面?_后端开发

    c语言怎么实现三个数从小到大输出?_后端开发 方法:1.使用if语句对数字x与y进行比较,若x>y则交换x和y的值:2.使用if对x与z进行比较,若x>z则交换x和z的值:3.使用if对y ...

  4. c语言主界面设计菜单系统,c语言界面设计代码的操作步骤,你学会了吗

    学计算机的人都知道C语言,而这也是非常常用的一种计算机编程语言.其实c语言运用得当,完全可以编程很多设计代码,帮助你进行界面设计.今天就让小编为大家介绍c语言界面设计. c语言界面设计代码的操作步骤 ...

  5. 如何设计日志系统_架构 - 如何设计一个百亿级日志系统

    " 日志是记录系统中各种问题信息的关键,也是一种常见的海量数据. 日志平台为集团所有业务系统提供日志采集.消费.分析.存储.索引和查询的一站式日志服务. 主要为了解决日志分散不方便查看.日志 ...

  6. LinkIn基于Dynamo设计的系统:伏地魔(voldemort)设计中文文档

    引用说明:原文来自于http://www.54chen.com/document/dynamo-based-systems.html,为了方便本人阅读,文本格式略有调整. Key-Value存储 为了 ...

  7. (附源码)Python云顶之弈数据分析系统 毕业设计451545

    目 录 摘要 1 1 绪论 1 1.1研究背景 1 1.2开发意义 1 1.3系统开发技术的特色 1 1.4论文结构与章节安排 1 2 基于Python云顶之弈数据分析系统系统分析 3 2.1 可行性 ...

  8. (附源码)python办公数据分析系统 毕业设计 021836

    Python办公数据分析系统 摘 要 现代办公通过办公自动化系统可以大大提高的效率.节省成本.规范业务和流程,辅助提升管理水平.办公系统在单位信息化中占有非常重要的地位,涉及到单位的各个部门及绝大多数 ...

  9. 人机交互-任务3:命令语言交互界面的设计

    文章目录 任务目的 实验内容 方案设计 核心代码 运行结果 完整项目+成品下载 任务目的 (1) 通过人机界面的显示风格和用户操作方式等内容的学习,帮助学生了解界面设计的主要内容. (2) 使用掌握的 ...

最新文章

  1. Java中byte与16进制字符串的互相转换
  2. LeetCode Number of Digit One(计算1的个数)
  3. eclipse android环境配置
  4. 什么是服务器信息怎么看,怎么查看服务器信息
  5. springboot-文件上传xls及POI操作Excel
  6. plsql执行command命令控制台出现乱码_展现“管理员”的神级能力,有趣又实用的我的世界基础命令...
  7. 概念验证:玩! 构架
  8. Linux详解系列2- 这100条常见命令你都用过哪些?
  9. c语言flappy bird代码,Flappy bird源代码(略吊)
  10. linux删除几日的文件脚本,Windows Linux 删除N天之前文件脚本
  11. html和css页面自动缩小和放大,如何使用CSS和Javascript来缩小HTML?
  12. LeetCode160相交链表
  13. 水溶性羧基化 CdSe/ZnS 量子的特点
  14. Paypal学习 3 -- 接受信用卡直接付款 (DoDirectPayment)
  15. android手机运行win10,Win10可以直接运行你手机里的安卓APP了:三星率先支持
  16. Arduino之干接点控制继电器取反实例
  17. 子类、父类各种方法的执行顺序
  18. 远程连接Mysql报10038错误
  19. 在线免费无限制的 PDF 处理工具(转换、编辑、分割、合并、压缩)
  20. 解决ubuntu安装后进入系统时黑屏,左上角闪动光标(ubuntu20亲测有效,应该是解释最详细的一篇了)

热门文章

  1. 机械行业ERP系统实施能成功吗?
  2. 【电信】ITV 使用心得
  3. php 数组如何添加元素,php数组添加元素
  4. java 实现http/ftp下载,支持迅雷地址转换的草稿
  5. hyspider之猫眼价格解密
  6. 【原创】微云网盘直链解析C#源码
  7. boilerplate_完整的React Boilerplate教程-从零到英雄
  8. ABAQUS几何非线性问题:薄板大变形(如何定义材料方向)
  9. 字符串数组交换c语言,c语言指针数组和字符串数组的区别,高手请进
  10. MYSQL强化练习51题