多任务处理程序架构问题(串口通信、指示灯、按键响应)


本人程序是通过串口获取监测数据,显示到界面中,还有历史记录、设置、操作等功能,界面结构呈树形,主界面-子界面-子子界面。
1.实时信息界面实时显示串口发来的数据,请问通过什么方式可以实时更新?
2.设备配置有led显示功能,所以在某些情况下发生时,比如故障、通讯中断等情况,就需要马上在面板中led上显示出来。此功能实现需要在程序开始时,运行一个线程还是有其它更好方法?
3.用户有多个硬按键(返回主界面、自检、复位等),怎么在界面程序中随时响应硬按键操作,比如按下返回主界面按键,系统必须马上回到主界面,难道还是运行一个线程?还是在程序中有处理这种事件的机制,还望解答。

实体按键的处理,需要一个单独的线程,接收到按键后,构造按键事件,postEvent到主线程。
串口数据读取到之后postEvent发给主线程,就可以更新。
界面线程+串口数据线程+按键处理线程,大概这种结构吧。

原文地址:https://www.cnblogs.com/tianqiang/p/9256541.html

时间: 2024-10-09 22:41:58

多任务处理程序架构问题(串口通信、指示灯、按键响应)的相关文章

C#串口通信—向串口发送数据,同步接收返回数据

最近写C#串口通信程序,系统是B/S架构.SerialPort类有一个DataReceived事件,用来接收串口返回的数据,但这种方式在C/S架构下很好用,但B/S就不好处理了.所以写了一个同步模式接收返回数据的方法,不使用DataReceived事件.经过测试,可以正常使用(不支持多线程调用). 一.Machine类 1.Machine类有一个静态变量,定义如下: private static SerialPort serialPort = null; 2.向串口发送数据,同步接收返回数据的方

LabVIEW上位机与串口通信

渊源 大一的时候,学校开了门公共选修课,叫LabVIEW编程,当时的我当然还不知道LabVIEW是啥东东,但还是选了.上课的老师是机械学院的一个副教授,他给我们展示了好几个用LabVIEW做的项目,譬如油箱监控上位机等,已经不太记得了.后来随着学习单片机.ARM等的串口操作,有时候一个漂亮的上位机(尤其是能显示波形的上位机)在项目中给用户展示非常的有用.过了这么多年,虽然曾经也用LabVIEW写过简单的温度监控上位机,但这次再拿起LabVIEW又好像从头开始一样,语法几已忘记殆尽! 定义通信格式

Java串口通信具体解释

序言 说到开源,恐怕非常少有人不挑大指称赞.学生通过开源码学到了知识,程序猿通过开源类库获得了别人的成功经验及可以按时完毕手头的project,商家通过开源软件赚到了钱……,总之是皆大欢喜.然而开源软件或类库的首要缺点就是大多缺乏具体的说明文档和使用的样例,或者就是软件代码随便你用,就是文档,样例和后期服务收钱.这也难怪,毕竟就像某个著名NBA球员说的那样:“我还要养家,所以千万美元下面的合同别找我谈,否则我宁可待业”.是啊,支持开源的人也要养家,收点钱也只是分.要想既不花钱又学到知识就仅仅能借

关于单片机串口通信的问题

最近在调板子的时候又遇到了单片机MCU检测不到的问题,之前百度了一堆驱动问题,已经可以正常烧写程序,但是昨天又写不了了,连单片机都检测不到,将驱动器的RxD与TxD短接,使用串口助手自己给自己发送数字,是可以接收到的,证明仿真器没有问题,交换驱动器与单片机的RxD与TxD,从顺接改为交叉连接,还是不行.后来在一哥们的指导下解决了该问题.然后发 现一个小小的串口通信其实门道很多,特别是对于对单片机不熟悉的初级选手是个不小的挑战,所以今天跟小伙伴们聊聊我的感受. 我的问题概而论之就是对于CH340驱

[stm32][ucos] 1、基于ucos操作系统的LED闪烁、串口通信简单例程

* 内容简述: 本例程操作系统采用ucos2.86a版本, 建立了5个任务            任务名                                             优先级            APP_TASK_START_PRIO                               2            主任务                          Task_Com1_PRIO                                

.NET 串口通信

这段时间做了一个和硬件设备通信的小项目,涉及到扫描头.输送线.称重机.贴标机等硬件.和各设备之间通信使用的是串口或网络(Socket)的方式.扫描头和贴标机使用的网络通信,输送线和称重机使用的是串口通信. 串口通信,以前一直觉得神秘,没想到用起来却这么简单.当然,这样简单要归功于 .NET 对其操作的封装. .NET 里提供了专门操作串口的类 System.IO.Ports.SerialPort,可以操作串口收发数据.只需要 new 一个对象,简单配置一下相关属性,就可以使用串口收发数据了. S

VC++USB及串口通信程序(附工程)

为公司开发产品测试程序,实际上是基于VC++的USB通信及串口通信.当初编写程序时,网上找了很多资料及程序,感觉大都只是说了一点点,没有一个完整的工程以供其他开发者借鉴,完全要靠开发者东拼西凑,最后凑成一个整体工程,还要在这个工程基础上进行相当艰苦的排查问题.解决问题的调试过程.本人对这一过程极其厌烦,现将走完的以上的"艰苦历程"之后的成果列出,以供后来者借鉴. 这一工程中包含了以下知识点: 1. VC++ USB通信: 2. VC++串口通信: 3. 文件(设备)同步异步操作: 4.

51单片机串口通信

一.原理简介 51 单片机内部有一个全双工串行接口.什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行:既可接收又可发送,但不能同时进行的称为半双工:能同时接收和发送的串行口称为全双工串行口.串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信.其缺点是传输速度较低. 与之前一样,首先我们来了解单片机串口相关的寄存器. SBUF 寄存器:它是两个在物理上独立的接收.发送缓冲器,可同时发送.接收数据,可通过指令对SBUF 的读写

(转)用C#一步步写串口通信

最近在公司让用C#写一个串口调试的工具,要求向串口中输入16进制数据或字符串.因为我刚到公司,并且对C#也不是很熟悉,针对硬件编程更是从来没接触过,确实耗掉了一些时间.好在一切都可以慢慢来,通过网上查资料,几天工作下来,还是小有成就.下面我就将这次遇到的问题和解决方法奉献出来,目的是和同行交流,回馈网友们提供的帮助,也是为了自己对知识加深一下巩固.      说了一大通废话之后,我们来看具体的实现步骤. 公司要求实现以下几个功能:1):实现两台计算机之前的串口通信,以16进制形式和字符串两种形式