人机交互-广州DACAI触摸屏开发中遇到的一些(屏幕和编程)问题
创始人
2024-04-30 16:09:49

目录

背景

一、屏幕相关

1、厂家给的指令集资料可能有错误,请以软件VisualTFT中的指令助手为准。

2、屏幕程序下载方式

3、SD卡文件格式问题

4、画面id的问题  巨坑!!!

5、子画面变暗的问题

6、 VisualTFT自带的键盘问题

7、DACAI只能选择切换到哪个具体的画面,而不能退出当前画面。

8、设置RTC的问题

9、软件VisualTFT的一些bug

二、编程相关

1、strcat函数导致乱码的问题

2、字符串常量初始化指针导致出现段错误的问题

3、sscanf函数导致段错误的问题

4、socket connect报错 Operation now in progress问题

5、socket的阻塞问题

6、read串口丢字符的问题


背景

mcu串口连DA CAI触摸屏,mcu既要支持屏幕自身的触摸可能,还要支持通过实体按键控制屏幕,两者效果相同。

一、屏幕相关

1、厂家给的指令集资料可能有错误,请以软件VisualTFT中的指令助手为准。

 

如设置滑动选择控件值得命令,select_data是1个字节,而不是两个。

 

2、屏幕程序下载方式

软件VisualTFT虽然在“量产向导”中有串口下载选项,但是客户(我们)无法使用,只能使用SD卡下载这一种方式进行。

 

3、SD卡文件格式问题

屏幕程序下载使用的SD卡,注意使用fat32文件格式的SD卡,而不能是其他格式。

4、画面id的问题  巨坑!!!

使用VisualTFT创建工程画面时,画面id是自动分配的,从0开始一次递增,先创建的先分配id,后创建的后分配,并且id是连续的,无法手动修改。(时间:2022.12.25圣诞节)

倘若你创建了多个画面,想删除其中某一个,此时,在这个画面之后创建的画面id会自动被修改掉!!!!

我在代码中写死了各个画面的id,结果这么一搞,全部都要改!!!白白浪费了半个小时,坑爹!!!

5、子画面变暗的问题

点击父画面某个按钮,调出子画面,子画面遮挡了父画面部分空间,但父画面的其他空间还能看到。子画面类似于手机的弹窗效果。

 

切记此时,子画面的背景透明属性一定要选择“透明”!否则在子画面上做操作(如icon帧的切换等等)可能导致父画面越来越暗,最终导致父画面全部呈现黑色!做一次操作,父画面便变暗一分。

 

6、 VisualTFT自带的键盘问题

键盘内的做了什么操作,屏幕不会通过串口发送给MCU,只有在退出键盘时,才告诉mcu什么值被键盘敲了,mcu无法感知操控键盘的整个过程。这就不满足我们的需求了,结果花了两天的时间,用按钮自制了一个数字键盘,支持不确定长度和数值的数字输入。

7、DACAI只能选择切换到哪个具体的画面,而不能退出当前画面。

如果在多个画面都可以调用数字键盘这样子画面的场景下,从数字键盘切换到哪个画面是不固定的,此时退出子画面的功能就很重要了。

8、设置RTC的问题

修改RTC控件的值,无法在模拟场景下验证,需要下载到实体屏幕中验证。

还有,DACAI设置时间的命令,年月日时分秒和星期都需要设置。其中,仅仅将星期设置错了,不影响其他参数的显示。

9、软件VisualTFT的一些bug

VisualTFT软件打开几天之后就卡死了,无法操作,需要杀进程。

有时可能报内存不足(其实电脑的内存是够的),软件操作不了,无法使用。

 

二、编程相关

1、strcat函数导致乱码的问题

char * strcat ( char * destination, const char * source )

使用strcat函数做字符串拼接时,第二个入参一定要是字符串,即以\0结尾,如果仅仅是一个字符,则拼接出来的字符串内有乱码

2、字符串常量初始化指针导致出现段错误的问题

用静态字符串初始化字符指针时,注意长度,如
char *g_ip[4]     = {"192","168","2","30"};
我原本想定义4个占用空间均为4的字符串,分别用192  168 2 30来初始化。而如果使用上述写法,g_ip[2]的长度是1,占用空间为2,而不是4,g_ip[3]的长度是2,占用空间为3,,也不是4。
在后续的代码中,如果想访问g_ip[2][2]或者g_ip[3][3]必然导致访问越界,报段错误。

3、sscanf函数导致段错误的问题

sscanf(instruction, "%s %s %s", opcode, arg1, arg2);这里的opcode  arg1 arg2需要是堆栈空间,不能是函数入参指针,否则,程序运行到此处报段错误。原因未知,我猜测是bug。

4、socket connect报错 Operation now in progress问题

socket设置为非阻塞模式,connect返回-1,错误信息是 Operation now in progress
解决方案:先设置为阻塞(默认模式),connect之后再调用

flags = fcntl(g_wire_socketFD, F_GETFL, 0);     

ret = fcntl(g_wire_socketFD, F_SETFL, flags | O_NONBLOCK);
将其设置为非阻塞

5、socket的阻塞问题

socket设置为阻塞后,recv时整个进程都阻塞了,进程内的其他线程也不能继续工作。这种阻塞不像sleep式的延时,后者可以让出CPU时间片给其他线程用。

6、read串口丢字符的问题

read 串口时,最好是一个一个字符的读取,固定buff长度读取,可能报文内容不全

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
如何吸引顾客 怎样吸引顾客加入... 如何激活群的顾客活跃度,是商家在运营过程中绕不开的事情。当新用户来到商家的私域流量群时,商家一般会采...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
地铁怎么买票 乘坐地铁如何买票 目前,上海轨道交通全网络运营里程已增至831公里,线路增至20条,与此同时,轨道交通的支付方式也日益...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...