迪文科技论坛

 找回密码
 立即注册
搜索
查看: 2048|回复: 28

【开源】手持控制盒-进度条背景色 基本图形 自由设置背...

[复制链接]

9

主题

15

回帖

896

积分

高级会员

Rank: 4

积分
896
QQ
发表于 2023-8-2 10:18:02 | 显示全部楼层 |阅读模式
已量产,用迪文屏也有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 应用开发指南上找到。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

2

主题

679

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12180
发表于 2023-8-2 10:22:34 | 显示全部楼层
赞一个
回复

使用道具 举报

0

主题

415

回帖

5764

积分

论坛元老

Rank: 8Rank: 8

积分
5764
发表于 2023-8-2 10:56:17 | 显示全部楼层
大佬厉害。
我不在我不在
回复

使用道具 举报

23

主题

136

回帖

1363

积分

金牌会员

Rank: 6Rank: 6

积分
1363
发表于 2023-8-2 13:53:44 | 显示全部楼层
项目怎么样暂不评说,美工做的很NICE
回复

使用道具 举报

0

主题

577

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10270
发表于 2023-8-2 15:37:47 | 显示全部楼层
大佬厉害了,点赞o( ̄▽ ̄)d
回复

使用道具 举报

0

主题

3

回帖

63

积分

注册会员

Rank: 2

积分
63
发表于 2023-9-18 14:19:12 | 显示全部楼层
大佬,请教一下程序是烧到屏幕上还是自己的主控版。迪文的不是只能写51吗?
回复

使用道具 举报

0

主题

752

回帖

4681

积分

论坛元老

Rank: 8Rank: 8

积分
4681
发表于 2023-9-18 14:21:14 | 显示全部楼层
楼主分享的是屏幕程序吧
只会hellowrold
回复

使用道具 举报

9

主题

15

回帖

896

积分

高级会员

Rank: 4

积分
896
QQ
 楼主| 发表于 2023-9-19 08:37:07 | 显示全部楼层
helloworld 发表于 2023-9-18 14:21
楼主分享的是屏幕程序吧

是的,分享的是屏幕上的程序
回复

使用道具 举报

13

主题

89

回帖

2618

积分

金牌会员

Rank: 6Rank: 6

积分
2618
发表于 2023-12-15 09:08:01 | 显示全部楼层
学习了。正好我有个项目能用到。谢谢大佬。赞赞赞。还有一个就是环形的。能用基本图形搞定吗?
回复

使用道具 举报

0

主题

577

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10270
发表于 2023-12-15 09:11:34 | 显示全部楼层
海东占宇 发表于 2023-12-15 09:08
学习了。正好我有个项目能用到。谢谢大佬。赞赞赞。还有一个就是环形的。能用基本图形搞定吗? ...

环形进度条吗?那个要么用图标,要么在另外一张界面做一个完整的图形,再利用基本图形剪切指令来进行,图标是最简单的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-24 11:09 , Processed in 0.103690 second(s), 32 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表