已量产,用迪文屏也有5年了。 这次主要是用了DMG80480C043_01WTC 这样一个电容屏幕,当然这个屏幕我也用了moubus 这样的一个屏幕程序。
以下是优酷链接,大家可以看下:
屏幕上的modbus程序,也是T5L用Keil去走的一个UART4,去实现的,modbus,不想讲了,前面的章节,我也讲了很多,大家可以下载代码去看看。
这次我们讲讲
一.自由设置背景文件,为背景 先打开 T5L _DGUS II 应用开发指南 这个文档,翻到 3.3.2.5 CFG 硬件参数配置文件 ,这里,然后大家看到这个变量
就是这里,大家把生成背景图片的
就是这个文件的编码,填到这里就是上电开机,迪文的内核,就会自动加载这个flash内部地址位置,的文件,去做开机启动的背景图片。
打开我上传的工程,找到界面工程目录下面的,不常用的烧录下面的 这个文件,然后用UE的2进制方法,来打开文件,如下 大家看到,08的这个位置有一个0x17的数字,实际的10进制的话,就是23,所以上电,就会加载这个23地址的背景图片
二. 滑动条背景色设置 效果如下
进度条,有会显示进度的绿色 要达到这个效果,目前我有两个方案 方案1。很费美工
方案2. 费CPU,当有很多进度条在一个界面上,就会慢,如果是几个进度条,就没有什么问题
方案1. 讲解
就是每个进度都用一个logo 进度条去表示,要美工,做一个完美的100个进度图片,这个的话,只要用滑动刻度, 就可以完成工作,所以说,很费美工。
设置的内容如下,用一个slider display ,显示控件,再加一个触控的拖到调节,就可以实现这样的一个效果。
方案2 讲解 ,用代码上去实现 先放一个底色图,比如我这个项目的,30这个图片,如下
在适当的位置,放上已经满了的进度条的背景图片。 我们把他用到,第40张图片上,就是这里
这个我们用到了3个控件 1. Sliderdisplay 滑动块显示 2. BasicGraphic 基本图形显示 3. DragAdjustment 拖到调节 然后我们打到屏幕的程序,看到这里
void TenMsHandle(void) { if(!TenmsFlag) return; read_dgusii_vp(0x14,NowPage,1); TenmsFlag=0; MainVolLogo(); AuxVolBar(); SongBarLogo(); TouchPressRecord(); BTVolLogo(); FMAMLogo();
ClearEnterData(); }
void FMAMLogo(void) { staticu8 xdata ChanalBuf[2]={0,0xff}; u8 xdata Readdtata[2]; u16begEndXY[2][2]={{71,191},{285,199}}; u16localPageXY[2]={550,139}; u8cmp=0; u16BuffNow=0;
if(NowPage[1]!=40) return;
read_dgusii_vp(0x2601,Readdtata,1); cmp=Mymemcmp(ChanalBuf,Readdtata,2); if(cmp==0xff) return;
if(Readdtata[cmp]!=ChanalBuf[cmp]) { if(cmp==1) { BuffNow=Readdtata[cmp]; BarLogoVol(&ChanalBuf[cmp],BuffNow,30,begEndXY, localPageXY,214,0x2640,0.01,0,0); } ChanalBuf[cmp]=Readdtata[cmp]; } }
这个函数很重要,我这里都作了注释
//VolC_Buf 缓存音量比较数据地址 VolCNow:当前音量值 //CutPage 需要剪切页面begEndXY:开始地址,和结束地址 //localPageXY 剪切到当前页地址 //LogoLen 剪切图片logo长度 //dis_addr 基本图形显示地址 //dataTotalLen 音量数据总长度,比如音量最大100' //is_X_V_c: 0 X变,1 变 //LowUp: 0从下到上 1从上到下 void BarLogoVol(u8 *VolC_Buf, u8 VolCNow,u8 CutPage, u16(*begEndXY)[2],u16 *localPageXY, u16LogoLen, u16 dis_addr, float OnedataTotal, u8 is_X_V_c,u8 LowUp) { u8 WriteBuff[10][2]; u16Endaddr=0; // u8 buff[4];
if(*VolC_Buf==VolCNow) return; *VolC_Buf=VolCNow; memset(WriteBuff,0,sizeof(WriteBuff)); WriteBuff[0][1]=6;//固定 WriteBuff[1][1]=1;//固定 WriteBuff[2][1]=CutPage;//音量条所在页面
if(!is_X_V_c) { WriteBuff[3][0]=begEndXY[0][0]>>8;//开始地址 X WriteBuff[3][1]=begEndXY[0][0]&0xff;//X WriteBuff[4][0]=begEndXY[0][1]>>8;//Y WriteBuff[4][1]=begEndXY[0][1]&0xff;//Y
Endaddr=begEndXY[0][0]+*VolC_Buf*OnedataTotal*LogoLen;//结束地址 WriteBuff[5][0]=Endaddr>>8;//X WriteBuff[5][1]=Endaddr&0xff;//X WriteBuff[6][0]=begEndXY[1][1]>>8;//Y WriteBuff[6][1]=begEndXY[1][1]&0xff;//Y
WriteBuff[7][0]=localPageXY[0]>>8; WriteBuff[7][1]=localPageXY[0]&0xff; WriteBuff[8][0]=localPageXY[1]>>8; WriteBuff[8][1]=localPageXY[1]&0xff; WriteBuff[9][1]=0XFF; } else { floatkk = 1 - VolCNow*OnedataTotal; Endaddr=begEndXY[0][1]+kk*LogoLen;//结束地址
WriteBuff[3][0]=begEndXY[0][0]>>8;//开始地址 X WriteBuff[3][1]=begEndXY[0][0]&0xff;//X WriteBuff[4][0]=Endaddr>>8;//Y WriteBuff[4][1]=Endaddr&0xff;//Y
WriteBuff[5][0]=begEndXY[1][0]>>8;//X WriteBuff[5][1]=begEndXY[1][0]&0xff;//X WriteBuff[6][0]=begEndXY[1][1]>>8;//Y WriteBuff[6][1]=begEndXY[1][1]&0xff;//Y
WriteBuff[7][0]=localPageXY[0]>>8; WriteBuff[7][1]=localPageXY[0]&0xff;
if(!LowUp) Endaddr=localPageXY[1]+kk*LogoLen;//结束地址 else Endaddr=localPageXY[1]+VolCNow*OnedataTotal; WriteBuff[8][0]=Endaddr>>8; WriteBuff[8][1]=Endaddr&0xff; WriteBuff[9][1]=0XFF; }
write_dgusii_vp(dis_addr,WriteBuff[0],10); }
关于基本图形,我们看到 T5L DGUSII 应用开发指南里面的
具体的内容,大家可以去这个文档上面再研究研究
三. 设置立即息屏 这个比较简单,主要是修改系统变量0x82的背光设置,即可以修改亮度为0,可以达到 息屏的效果,看这里 以下内容,可以在T5L DGUSII 应用开发指南上找到。
|