人机交互-广州DACAI触摸屏开发中遇到的一些(屏幕和编程)问题

news2024/11/26 5:40:27

目录

背景

一、屏幕相关

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长度读取,可能报文内容不全

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/114129.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【openGauss】一键编译openGauss3.1+dolphin,体验新增的mysql兼容特性

前言 前两天写了一篇openGauss3.1关于mysql的相关特性,但由于openGauss官网提供下载的版本还是9月30号第一次发布的版本,很多特性都还没合入,所以不少爱好者不能轻易体验到。 虽然openGauss已经提供了“一键式编译脚本”,但是还是得做一些前…

Linux系统下的常用文件目录指令

文件目录指令 pwd (Print Working Directory):显示当前工作目录的绝对路泾 ls (list) 基本语法:ls[选项][目录或是文件]常用选项 -a:显示当前目录所有的文件和目录,包括隐藏的。 -l:以列表的方式显示信息 cd (change directory) :切换到指定目录 基本语法:cd参数理…

5G无线技术基础自学系列 | 5G网络速率问题分析

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 前面介绍了接入性和移动性两类问题的处…

node.js+uni计算机毕设项目湖南工商大学财务信息查询小程序(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…

计网第三章.数据链路层—封装成帧、差错检测

以下是湖科大计算机网络公开课的笔记 1 . 数据链路层概述 1.1 一些概念 链路(Link)就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点 数据链路(Data Link) 是指实现通信协议的硬件和软件加到…

【自然语言处理】最大熵马尔可夫模型

有任何的书写错误、排版错误、概念错误等,希望大家包含指正。 由于这部分的参考资料比较少,网上大部分资料重复且不完整,对于一些关键计算没有推导,所以这里我主要讨论几篇论文和讲义。但是这些论文和讲义之间也有些许差别&#…

算法CPP时间复杂度

观察数据生成器可以发现对于每次操作均有 。 考虑将这些三元组想象成空间直角坐标系中 为对顶点的长方体。 将操作分成两部分,一部分是对 轴同时操作的,可以一开始就用前缀 统计完,将长方体变 成一个底面为阶梯状的直棱柱。另一部分是对 或…

【网络工程】9、实操-万达酒店综合项目(三)

接上篇《8、实操-万达酒店综合项目(三)》 之前我们按照项目要求进行模拟拓扑的构建实操,完成了办公区部分的网络配置,本篇我们来继续完成其他区域的网络配置。 一、总体架构情况 按照之前项目需求的拓扑图: 我们已经…

爱了爱了,Spring Cloud Alibaba内部微服务架构笔记真的太牛了

现如今微服务架构十分流行,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。同时,支持微服务的技术栈也是多种多样的,本文主要讲述我们为什么选择Spring Cloud和它的技术概要。 为什么微服务架构需要Spring Cloud 简单来说&#x…

【C++初阶】list的模拟实现

文章目录list的介绍list的模拟实现成员变量Member functionsconstructordestructoroperatorIterators正向迭代器反向迭代器beginendrbeginrendModifierspush_frontpop_frontpush_backpop_backinserteraseclear完整版代码list.hreverse_iterator.htest.cpplist的介绍 list是STL…

Selenium自动化测试环境搭建及问题

一、前言 目标:环境搭建及测试 主要问题:浏览器闪退,路径不明确,语法弃用 二、环境搭建(自带python3.9以上) 2.1.1、下载谷歌浏览器驱动 https://registry.npmmirror.com/binary.html?pathchromedriver/&…

数据结构---A星寻路算法

A星寻路算法第一步第二步第三步第四步JAVA实现用于寻找有效路径的算法。定义俩个集合 OpenList:可到达的格子 CloseList:已到达的格子 每一个格子都具有F、G、H这3个属性 G:从起点走到当前格子的成本,也就是已经花费了多少步。H&a…

生产级部署 Python 脚本,崩溃可自启

今天介绍一个生产级的流程管理工具 PM2,通常我们说到 PM2 的时候,都是在说如何部署 Node.js 程序,但是实际上 PM2 很强大,不仅仅可以用来管理 Node.js,它还可以用来管理 Python、PHP、Ruby、perl 等等。 这里就以 Pyt…

看了下华为工资,我不加班了

周五快下班,我本来是想继续好好上班的。那时候是晚上8点左右,跟我一个华为的朋友聊天,聊完之后,我气得把电脑合上,拿上花了7万巨款买的车钥匙,头也不回的走到电梯口,按下了下楼的电梯按钮。-事情…

项目集成MybatisPlus

目录 1.MyBatisPlus介绍 1.1.为什么需要 1.2.MyBatisPlus简介 1.3.MybatisPlus特点 2.项目集成MybatisPlus 2.1.导入依赖 2.2.创建配置 2.3.代码生成主类GenteratorCode 2.4.Controller,Query模板 2.5.生成代码 2.6最终效果 1.MyBatisPlus介绍 1.1.为什么…

SQL优化篇:如何成为一位写优质SQL语句的绝顶高手

(Structured Query Language)标准结构化查询语言简称SQL,编写SQL语句是每位后端开发日常职责中,接触最多的一项工作,SQL是关系型数据库诞生的产物,无论是什么数据库,MySQL、Oracle、SQL Server、DB2、PgSQL....&#x…

JSP ssh网上商品拍卖系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh网上商品拍卖系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S 模式开发。开发环境为TOMCAT7.0…

个人收款的实现方案

最近出于个人需要折腾了一套微信免签支付的个人系统,下面介绍一下整体的一个实现方案 由于微信本身不提供免签的支付api,因此个人若想要实现免签支付,那么只能通过监听微信收款通知来实现了,因此整个系统的实现部分分为 收款服务端和监听客户端来实现 收款服务端实现 整个…

【nowcoder】笔试强训Day5

目录 一、单选题 二、多选题 三、编程题 3.1统计回文 3.2连续最大和 一、单选题 1.下面的程序 编译运行后,在屏幕上显示的结果是() public class Test {public static void main(String args[]) {int x, y;x 5 >> 2;y x >&…

docker入门以及常见的命令

目录 1. 什么是docker 2. docker的核心组件 3. docker的安装 3.1 安装的先决条件 3.2.1 ubuntu安装docker 3.2.2 CentOS安装docker 3.3 配置镜像加速器 4. 镜像常用操作 4.1 搜索镜像 4.2 镜像下载 4.3 查看宿主机中的镜像 4.3 删除镜像 5. 容器常用命令 5.1 运行…