|
【开源】智能微波热解仪
一、项目背景 微波热解仪是一种用于实验室样品前处理的精密设备,主要用于通过高温高压的微波加热方式快速热解有机或无机样品,它的应用场景多用于如下三种:
1.样品前处理
2.加速化学反应
3.处理难溶物质
那我们现在来定位到微波热解仪本身,它的核心模块由如下几个部分构成:
1.T5L主控制器+7寸1024*600的RGB触摸显示屏 2.高温高压产生模块 3.控温模块,实时监测并调节温度和压力,避免容器过压爆炸 4.多工位并行处理模块 5.分段式程设,预设热解方法(梯度升温、分段控压),适配不同样品类型,方法一旦创建,可以永久反复调用 6.旋转机构等硬件
二、GUI设计
1.所有图片素材如下:
2.仪器上电后,将首先进入系统加载界面,在这里仪器做一些基本的初始化,使仪器处于就绪状态
3.加载完成后,将进入多用户,多角色选择界面,主要是分为了管理员(具有所有的权限), 组长, 实验员(只有基本的实验权限)
4.同时主界面上也可以进行网络配置,使用的是ESP8266+Airkiss配网机制
Airkiss配网界面如下:
5.若用户选择的是管理员或者组长,则需要密码验证,同时在此界面下也可以修改密码
6.验证通过后,用户将进入到热解模式选择界面,其中维护功能主要是仪器厂家调试, 数据记录等功能
7.不论是用户选择了高热量模式,还是选择了高功率模式,都将进入其对应的方法创建,调阅界面
高热量的:
高功率的:
8.用户创建了新的方法或者调用了老的已存方法后,将进入其对应的运行界面
高热量的:
高功率的:
9.然后就是前面所说的维护功能了
维护功能也是需要验证后才能进入的,密码和管理员密码一致的
下面这是调试功能
下面是记录调阅
三、代码设计
- 首先是在管理员验证界面需要做如下的处理,监听功率模块发过来的串口数据包
- void role_win_handler()
- {
- u16 val;
-
- if(!is_wait_respond)
- return;
- if((uart2_rx_len==0x59)&&(uart2_buf[0]==0x82))
- {
- skip_cnt++;
- if(skip_cnt==12)
- {
- skip_cnt = 0;
- is_wait_respond = 0;
- if(uart2_buf[78]==0)
- {
- method_win_init();
- set_win(mode==GTL?3:5);
- val = 0;
- }else
- {
- val = (mode==GTL?59:60);
- }
- sys_write_vp(ROLE_WIN_ERR_TIP_VP,(u8*)&val,1);
- }
- }
-
- }
- 核心的加载对应方法
- void method_win_init()
- {
- u16 val = 0;
-
- sys_write_vp(METHOD_WIN_TIP_VP,(u8*)&val,1);
- is_method_win = 1;
- sys_write_vp(METHOD_WIN_NO_VP,(u8*)&cur_method_no,1);
- method_win_load(cur_method_no);
- }
- void method_win_load(u16 no)
- {
- u16 addr = METHOD_WIN_STEP_START_VP;
- u8 i,j;
-
- sys_write_vp(METHOD_WIN_TMP_VP,(u8*)&cool_tmp,1);
- sys_write_vp(METHOD_WIN_TIME_VP,(u8*)&cool_time,1);
- if(!is_cloud_method)
- {
- METHOD_READ(&cur_method,no);
- }
- for(i=0;i<10;i++)
- {
- for(j=0;j<4;j++)
- {
- sys_write_vp(addr,(u8*)&(cur_method.step[j]),1);
- addr += METHOD_WIN_OFFSET;
- }
- }
-
- method_win_gray_invalid_step();
- }
- 下面这是读取用户创建的方法参数
- void method_win_read_params()
- {
- u16 addr = METHOD_WIN_STEP_START_VP;
- u8 i,j;
-
- sys_read_vp(METHOD_WIN_TMP_VP,(u8*)&cool_tmp,1);
- sys_read_vp(METHOD_WIN_TIME_VP,(u8*)&cool_time,1);
- for(i=0;i<10;i++)
- {
- for(j=0;j<4;j++)
- {
- sys_read_vp(addr,(u8*)&(cur_method.step[j]),1);
- addr += METHOD_WIN_OFFSET;
- }
- if(mode==MODE_GTL)
- {
- cur_method.step[0] = 0;
- }
- }
- }
- //实时监听用户方法界面的参数修改,针对修改项进行红色高亮显示
- void method_win_scan()
- {
- static u16 old_tip = 0xffff;
- static u8 input_pos = 0;
- u16 tip;
- u8 i;
-
- if(is_method_win==0)
- return;
-
- tip = 0;
- for(i=0;i<43;i++)//4*10+3=43
- {
- sys_read_vp(METHOD_WIN_LOAD_START_VP+METHOD_WIN_OFFSET*i,(u8*)&tip,1);
- if(tip==0xF800)
- {
- input_pos = i+1;
- if(i==0)
- tip = 44;
- else if(i==1)
- tip = 41;
- else if(i==2)
- tip = 42;
- else
- tip = i-2;
- break;
- }
- }
- if(input_pos&&(i==43))
- {
- if(role==ROLE_GENERAL)
- method_win_load(cur_method_no);
- else
- {
- method_win_read_params();
- method_win_gray_invalid_step();
- }
- input_pos = 0;
- }
- if(old_tip!=tip)
- {
- sys_write_vp(METHOD_WIN_TIP_VP,(u8*)&tip,1);
- old_tip = tip;
- }
- sys_read_vp(METHOD_WIN_NO_VP,(u8*)&cur_method_no,1);
- if(old_method_no!=cur_method_no)
- {
- is_cloud_method = 0;
- method_win_load(cur_method_no);
- old_method_no = cur_method_no;
- }
-
- }
- GUI参考: template.rar (7.02 MB, 下载次数: 2)
- vs代码参考: vs_wbrjy.rar (33.29 KB, 下载次数: 0)
复制代码
视频演示:https://b23.tv/4N54nwK
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|