|
一.介绍
微波热解仪是一种用于实验室样品前处理的精密设备,主要用于通过高温高压的微波加热方式快速热解有机或无机样品,它的应用场景多用于如下三种:
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参考:
vs代码参考:
视频演示:https://b23.tv/4N54nwK
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|