迪文屏幕的学习和开发
一、前言
  最近需要做一个关于迪文屏幕的项目,通过这几天的学习,对其开发方法有了大致的了解,但是涉及到 OS 部分还没有完成,现在即将离开,因此项目暂时中止,以后有机会再继续了解,为了以后自己再学习更方便一些,因此现在做了这个笔记,同时也分享一下自己学习的经验,让更多人很好的入门。
  这里吐槽一下迪文屏的资料和数据手册,特别碎片化,完全没有系统,导致入门特别麻烦,也很浪费时间,我这里打算整理一下我自己的入门经验,希望帮助大家可以很快的入门,进入项目开发环节。很多资料都需要自己去找客服要,如果没有常和客服沟通,自己摸索开发会浪费很多时间,这里就是DWIN软件部分不人性化的地方。
  下面所说的所有软件(除了PS,自己找资源下载安装,重点不在这里),都可以在我发的百度云盘链接里找到。这是云盘链接,永久有效:
链接:https://pan.baidu.com/s/1Dyc9fRZB9yG_z8OoPVuTrQ 提取码:g9lj
官网学习资料: http://www.dwin.com.cn/home/Index/download
官网软件下载: http://www.dwin.com.cn/home/Index/download?cate_id=4
   如果还有什么问题一定记住和客服沟通,可以节省你很多时间。 记住一定和客服沟通。

二、环境搭建及其项目开发准备
(1)、硬件部分
  我先以我这里的屏幕作为参考,我买的屏幕型号是: DMT12800K070_A2WTC 医疗级电容屏幕,买的时候一定自己上官网查看数据手册,查看供电电压等相关参数(这里客服为了省事,不会给你关于你这款屏幕的参数介绍,需要自己去找),就以我这款屏幕,它的供电电压范围是 7 - 36 V(额定电压为12V,额定电流为250mA),但是客服给的资料是其他型号的屏幕的(5 V 供电的,我接5V电压,我以为是屏幕出问题了,不会亮),也没给出接的电压范围是多少,后来我自己去官网查了以后,再问了客服客服才告诉我。
  这是官网给出的各个屏幕的参数表: http://www.dwin.com.cn/home/Index/get_screen_list?id=39 这里以我的屏幕作为例子:

  还有他这里会提供几种类型的连接线路,是实现屏幕和电脑通信,还有给屏幕供电的作用。只要有 USB转232接线,或者USB转TTL模块(CH340),都可以实现连接。**注意:**我这里用了屏幕的两个串口,一个是串口2,一个是串口4,供电为9V,300mA。因为连接相对简单,只需要注意供电电压就行,我这里直接给出硬件连接图:

  电路接好后,屏幕就会直接亮起来,然后显示出厂家下载进去的Demo历程,我的是像这样的:

  这样硬件部分就完成了,注意还有一点,迪文屏幕开发是基于内存卡开发的,需要准备的内存卡存储范围在2G - 16G之间(32G内存卡不好使,这里一定注意。)下面软件部分会有详细讲解。

(2)、软件部分
  DWIN屏幕开发需要的环境是这两个,一个是 DGUS Tool V7.3 以上的软件,这个是进行GUI进行设计的;如果要进行OS,进行二次开发需要准备 OSBuild3.0 以上的软件(软件版本最好是最新的,之前的版本也可以,这个是对于汇编编程的),或者 DWIN C Compiler 1.1.0以上的软件(软件版本最好是最新的,之前的版本也可以,这个是对于C语言编程的)。还有一个素材加工软件PS,这个一般需要根据的屏幕来进行素材加工。一共三个软件,DGUS Tool ,OS Build, PS。缺一个你的项目都无法进行下去。
  接下来我将从素材设计,到新建一个工程,到下载到屏幕中实现功能,到进行二次开发(二次开发未完成,有思路),逐步介绍。我这里做的项目是实现屏幕和经颅超声刺激信号发生器通信。

a.PS 设计素材
  我这里需要设计一个这样的界面,ps教学就自己去学习了,ps 功底越好,屏幕设计的就越精美,我就比较菜了,就自己弄了一个可以看的界面,也算实现功能吧~,如下所示:

  就这样的一个主界面还有一些素材,其中里面背景,还有图标啥的都可以这里用ps弄,我这里只是为了暂时完成任务,我没有必要做的太精美,这边的老师临时安排的任务,我后天就离开这里回去我们那边了,给我的时间又很短,我就弄了几天,所以暂时交差就ok啦,不过帮助暂时入门还是很有用的。继续回到正题,这是另外一些素材:

  分别是键盘,串口编号,波形状况,波特率,波形极性。通过这几样素材,就可以做出一个GUI界面,是不是很方便,虽然迪文屏软件设计方面很坑,但是入门了对于设计界面还是特别省时间的。下面是重点,我的屏幕分辨率是1280*800的,所以PS的图像大小配置也需要做相应的的调整,如下:

  通过调节图像高度,宽度,分辨率,让图像的尺寸为自己屏幕的分辨率。我这里的屏幕分辨率为1280*800,所以设置的也是接近这个数值。重要的一点,所有图片的保存格式必须为BMP图像格式,24位深度图像,不然屏幕识别不了。


  然后以这样的格式命名(以00,01,02…这样的形式,后面再接图像的名字),保存在DWIN_SET的目录下。DWIN_SET建立好工程就会出现,这里在下面建立工程部分讲述。 命名方式如下:

  这里只需要注意图片命名方式即可,其他文件下面会有讲解。

b.建立工程
  DEWIN的GUI设计的软件为:DGUS Tool 。我这里问客服要到的为DGUS_V7381版本,这款软件和我们使用的软件不太一样,这个不需要安装,它是以一个文件包的形式存在,直接打开就可以,像这样的:

  直接打开就可以使用,接下来说怎么建立一个工程。点新建工程,然后会有下面这个界面,让你选择屏幕尺寸,如果里面的选项没有你的屏幕尺寸,你可以在上面这个文件夹里面进入 Config,然后再点 Terminal,进行修改成自己的屏幕尺寸。

  修改尺寸的文件如下,这样就修改好了,就建立好了自己的工程:


c.设计GUI
  生成工程以后,会有一个DWIN_SET的文件,你需要在这个文件里面添加有你用PS制作好的BMP格式的图片,其中图像以数字为开头命名,例如0,1,2…,数字后面跟着图片名字;设计好以后还需要生成13触控配置文件,14变量配置文件,22_Config,如果有音乐,字库还有配置相关文件,这个可以看迪文给的资料。设计GUI的过程我基本看迪文视频学习的,这里按照视频学习即可,但是难免还有一些不充分的地方,没有说怎么下载工程,没有说素材怎么得到,而且迪文也基本没有提供什么素材。这里举点例子,主要自己看视频学习 ,这是GUI设计的主要视频, 选择第五页的 视频屏开发示例2018-11-20 看一下就行:http://www.dwin.com.cn/home/Index/download?cate_id=5 ,
  比如,我需要点一下一个菜单部分,然后弹出键盘,输入数字以后显示在主界面上。我需要这样做,我先点显示控件,点数据变量显示,然后用鼠标在想要显示的范围内画一个框(背景为蓝色),然后对参数进行配置,如图所示:

  这里配置主要是变量地址,因为考虑到二次开发需要用到OS,所以这里要求用户取得变量是从1000H - FFFFH,我这里地址取1054H,注意里面这些都是用16进制来表示,结尾为H,其他参数看自己项目要求调节。
  然后点触控控件,再点变量数据录入,然后在蓝色的框那里划一个一样大小的框(注意,触控配置的是黄色的框),然后地址和显示配置的地址一样,配置如下:

  因为数据输入需要选择键盘,所以接下来这样配置,先点键盘设置,选择键盘所在的页面,我这里是第一页,如下:

  接着框出键盘的位置,然后点显示位置的设置(这个是显示键盘位置的),把键盘放在你首页的哪一个位置,由自己选择,注意的是,输入显示方式为直接显示,键盘位置为其他页面,最后回到上面的那个 显示位置部分(这个是显示输入数字的中间过程),点设置,然后选择显示输入数字的中间过程的位置。接下来就设置完成了,但是还需要对键盘进行设置,进行触控配置,选择键盘页面,如下:

  对每一个按照需要配置,以1按键作为例子,选择触控控件,再选择基本触控,然后在键值那里输入 0x0031H,DWIN的处理器会明白你输入的是数字1,其他也一样,按照下面提示输入就行。这样一个就设置好了,其余的可以直接复制粘贴,改变一下变量地址就行。其他控件部分看视频学习,不一一讲解,这里不是本笔记的重点。 在GUI部分设计完成后,就涉及到下载工程的问题,这里是重点。

d.工程的下载
  迪文工程的下载要求用SD卡进行下载,并且SD卡要格式化为FAT32的格式(注意:32G的内存卡不可以用迪文的指令格式化成功),其中格式化过程为:

  一定记住这段话,不按照这样的要求是下载不了文件的。
  然后把自己设计好的工程,先点保存,再点生成,最后点导出,这样就生成了一个完整的迪文文件包。其中界面如下:

  最后生成的文件然后移入按照标准格式化的SD卡中,注意,DWIN_SET一定在根目录下,移入SD的文件如下:

  最后,在开机状态下插入SD卡,下载完成后拔出SD卡,拔出电源线再插上,就可以实现下载并且运行成功。

要点
  会出现一种情况,可能把SD里面的文件下载进去会导致触控不反应,没有作用。所以需要这样做。 先下载一个 UltraEdit-32软件,软件在我发的云盘资料里有,自己找了安装下载。然后在我的云盘文件里找到这个,如图:

  按照文件提示找到这个文件,找到自己屏幕适配的CFG文件,然后用 UltraEdit-32软件打开,如图,改成这个样子:

   注意:迪文客服给的资料是有三行的,把后面两行删除掉,然后吧第一行的04-07列改为00,其他不变化,就成为上图我改好的样子。注意,如果04-07列不为0会导致触控不灵,具体可以看云盘文件里面的txt文件。 然后把这个CFG文件与工程一起下进去,就下载一次就行,然后以后下载就不需要放入CFG文件了,然后触控就灵了。

三、效果验证
   初始界面:

   输入键盘显示:

   选择串口:

   选择波特率:

   选择极性:

   选择波形状况:

   然后各个菜单弹出选择以后,会有相应的键值返回到地址里,只要我在OS里面读取到键值,就可以知道用户选择哪一个选项,然后在连续发送,单次发送,停止,读取参数那里,相当于一个触控按键,只要我按了,就有返回值,我在OS中读取,就可以配置相应的参数。这样,GUI界面就基本完成,并且满足要求。

四、OS系统的二次开发(未完成,有思路)
   现在GUI界面做好了,各个地址和键值如下:

   有点乱,只是一个草稿,将就看一下吧~。我选择的变量地址是从1000H开始的,因为0000H-0FFFH是迪文自己的地址,具体的可以看看他们的数据手册。我这里的任务不算太难,是要实现,通过读取各个变量地址的键值,然后转化为16进制,加上匹配经颅超声刺激信号发生器通讯的帧头帧尾,按照通讯的格式把数据顺序排列,之后一起发出去。然后经颅超声刺激信号接收到信号,就可以按照要求产生相应的信号了。
   现在继续介绍一下DWIN屏幕的OS开发环境。你可以选择用汇编语言进行编写,它的开发平台是迪文自己的软件:OSBuild3.0.2.6;也可以选择用C语言编写,他们自己的开发平台是:DWIN C Compiler 1.1.0.7。这是我找客服要到的两个相对最新的软件了。因为之前用C语言进行过STM32的开发,有过一些经验,所以选择用C语言进行编写。
   这里使用C语言需要注意,迪文的编译器不用引入头文件,他们编译器自身就导入了一般C语言需要的库,还有迪文自己的库:1Lab,2Lab。注意,如果使用C语言编程,需要把这两个库用SD卡下载到屏幕中,之后可以就可以直接用串口2下载程序就可以了。
  我这里没能继续开发的原因是,一般调试我都习惯用串口打印出数据,我这里想要用的是串口4和经颅超声刺激信号发生器 进行通信,但是我通过调用迪文库里面的读取变量地址的函数,但然后把键值通过串口4发送出去,很遗憾没有发送出去,一直都是接收到 16进制的 0000000000000,后来不知道怎么的,连000000000都接收不到了,如果串口不好使都不能继续下去。。。现在我明天就走了,所以很遗憾不能调试了,以后用迪文屏的时候继续学习吧。但是,我通过串口2****读取各个变量地址的键值都可以显示出来,所以我认为是我自身的问题,或许是我没有配置好吧,这是我的开始的代码(才开始的,就只有声明啥的,如果有大佬看到可以点播我下,谢谢~):

#define COM 4
#define BPS 115200
#define MODE 0

int main()
{
    char SerialPort[4] = {0};
    char BandRate[4] = {0};

    char Voltage[4] = {0};
    char PulseFreq[8] = {0};
    char BaseWiveNum[8] = {0};
    char RepetitionTime[8] = {0};
    char PulseNum[8] = {0};

    char Polarity[8] = {0};
    char WaveSpecies[8] = {0};

    char X_Axis_Left[8] = {0};
    char X_Axis_Right[8] = {0};
    char y_Axis_Below[8] = {0};
    char y_Axis_Above[8] = {0};     
 
    com_config(COM,BPS,MODE);

    read_dgus_vp(0x1012,SerialPort,2);
    read_dgus_vp(0x1014,BandRate,2);

    read_dgus_vp(0x1050,Voltage,2);
    read_dgus_vp(0x1052,PulseFreq,2);
    read_dgus_vp(0x1054,BaseWiveNum,2);
    read_dgus_vp(0x1056,RepetitionTime,2);
    read_dgus_vp(0x1058,PuleeNum,2);

    read_dgus_vp(0x1016,Polarity,2);
    read_dgus_vp(0x1018,WaveSpecies,2);

    read_dgus_vp(0x1022,X_Axis_Left,2);
    read_dgus_vp(0x1024,X_Axis_Right,2);
    read_dgus_vp(0x1026,y_Axis_Below,2);
    read_dgus_vp(0x1028,y_Axis_Above,2);

    while(1)
        {
            read_dgus_vp(0x1050,Voltage,2);
            send_data_com(0x1050,Voltage,2);
          
        }
        
    return 0;
}

// *******************************************

void Time0_IRQHandler(void)  //定时器0 函数体
{
}
void Time1_IRQHandler(void) //定时器1 函数体
{
}
void Time2_IRQHandler(void) //定时器2 函数体
{
}
  我这里就只声明了这几个变量,还有想在while循环里时时检测触摸Voltage变量,其地址为1050H,对应的为电压峰峰值情况,然后通过串口4然后发送出来显示。其实,这个项目也不难,只要串口可以准确发送出来对应地址的键值。那么我只需要加上帧头,把数据按照顺序排列,再拼接帧尾,然后加上一个发送确定的Flag(标志),这样就可以实现发送通信。接收通信的话,再点击读取参数按键后,然后再按照仪器的通信格式提取出相应的数据信号,这样一个简单的项目就完成了。
  现在说一下,Compiler 1.1.0.7如何使用,这是它的界面:

  建立工程的方式和一般C语言编译器方式差不多,不过写程序这里不需要加入头文件,直接写就行,打开就可以直接用,还挺方便,注意在其他编译器里面编译不了。 下面说一下下载的过程,步骤如下:
  先点Set,再点Set Serial Port,然后弹出这个界面,选择串口号就行。

  然后在点Debug,再点Download Flash,然后在连接好串口的条件下,就可以实现下载进屏幕了。  注意, 如果想要通过串口2读取各个变量地址的键值,需要用汇编程序这个软件看,软件是OSBuild3.0.2.6。

五、总结
  这篇博文的目的有两个。第一是做一个自己的学习笔记,如果以后自己想继续学习这个好接续,效率会高一些。第二是帮助一些入门感觉困难的朋友快点入门,我这篇博文基本把我开发过程中遇到的所有问题都总结出来了,希望对你有帮助。其实迪文软件的缺陷就是入门相对费劲一些,因为他们给的资料特别碎片化,需要自己花大量时间总结,感觉不太人性化。但是入门以后就特别方便,真的挺好的。

六、云盘资料(永久有效)
再发一遍资料:
链接:https://pan.baidu.com/s/1Dyc9fRZB9yG_z8OoPVuTrQ 提取码:g9lj
(永久有效,找不到联系我)
官网学习资料: http://www.dwin.com.cn/home/Index/download
官网软件下载: http://www.dwin.com.cn/home/Index/download?cate_id=4
如果还有什么问题一定记住和客服沟通,可以节省你很多时间。 记住一定和客服沟通。
————————————————
版权声明:本文为CSDN博主「心一墨」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38169460/article/details/99704650

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐