前期准备
1. 环境配置
- S14使用的是单片机,需要使用keil来编译,批处理生成二进制文件通过串口烧进机器
- 只需要按照S14开发环境配置流程里的步骤一步一步来即可
2. 理解结构体字段
- 理解ONLINE_LISTITEM(Llist)和ONLINE_DATAENTRY(data_entry)结构体中每个字段表示的含义(有相关文档说明)
3.理解DVBS/T的异同
- DVBS特有的功能,如SAT、22K、Unicable、Disqec等
- DVBT模式下不存在SAT的概念,相当于就是一个卫星的信号,存在TP和BW等信息
4. 开发背景
- 本次开发是在S14已有的DVBS模式下新增DVBT/T2的功能,因此需要在不破坏DVBS代码的完整性的情况下,加上DVBT的宏来控制程序的走向
注意事项
-
在敲代码之前,需要考虑哪些是DVBS的功能,哪些是DVBT的功能,哪些是共有的功能
-
考虑用户在进行某项操作后,可能进行的任何操作,并对此操作赋予相应的功能
-
在当前界面选择卫星或TP后,在另外的界面也需要同步显示相对应的卫星或TP信息
-
程序中最好不要直接出现数字,因为这会让后来维护代码的人看起来不知所措,可选择用宏或sizeof()等来得到相应的数字
-
每个工程都有对应的函数、变量名的命名规则,在移植的过程中,最好把相应的函数名等修改并使用对应工程的命名规则
-
在进行添加、删除、编辑等操作后,需要更新Flash中的数据再进行检索
-
DVBS存在符号率,但DVBT存在的是带宽和Channel id,在S14中将这三个数据使用union存放在了一起,使用时需注意
-
给某一结构体变量赋值,可直接使用memcpy()复制(不需要根据当前的变量检索Flash得到index,再根据index从Flash中读取数据)
遇到的问题
-
代码结构不够清晰,修改OSD界面时效率不高,以后要多加强这方面的能力
-
对某些接口函数不熟悉,例如find_same_tp_in_sat(),以后需要多看代码理解函数功能
-
BOX_INFO_STRUCT在这个结构体中,DVBS存在对应的全局变量来作为当前选择卫星的索引,但DVBT模式下并不存在。解决方案:需要根据已知的TP和BW通过循环检索Flash中的数据,来得到相对应数据的索引
-
当进行添加、删除、编辑操作后,如果直接按退出键,则无法保存当前的索引,导致焦点混乱。解决方案:操作完成后将数据赋值给全局变量,在下一次进入界面时,根据当前全局变量的值来进行检索得到对应的索引
-
2.4寸METER和7寸METER在对字符串的保存和使用时,结构完全不一样。
① 7寸是将所有的字符串对应的不同国家的语言通过枚举的方式保存在同一个Excel中,通过工具检索当前的Excel文件,生成新的bin文件导入到工程中
② 2.4寸是用多个指针数组来保存多个国家的语言,并放在不同的.c文件中,再用一个二级指针指向指针数组(其实可以直接用指针数组,这样做的目的是为了兼容多个国家的语言,用switch来判断当前需要哪种语言,再用二级指针指向对应的指针数组)