用的什么usb转ttl芯片,如果是ch340请更换为ft232或者cp2102。
(为什么要换ch340? 因为ch340有很多假货)
TX、RX是否连接正确
串口屏和电脑或者单片机是否共地
检查串口驱动是否正确安装
串口号是否选对/手动选择串口
尝试拔插串口工具
尝试重启电脑
尝试更换一个串口工具试试
使用串口软件调试时,不要加回车换行
尝试更换屏幕
波特率是否匹配
检测连接方式是否正确,是用TTL电平还是用232电平
检查电源是否稳定,电压有没有被拉低,电源不稳定可能会造成任何异常
右键我的电脑-管理-设备管理器-端口,应有正确的端口号并且无感叹号
将串口转ttl工具插到USB接口上,安装驱动人生/360驱动大师/驱动精灵软件后进行自动安装
推荐使用CP2102、FT232芯片的串口工具,不推荐使用ch340芯片的工具
每次使能定时器后,时间都会重头算
比如timer0是1秒1次,timer1是10秒一次,每次timer0里赋值timer1.en=1时,timer1都会从0开始计时,那么timer1就永远执行不了,应该在timer0中使能timer1时先判断timer1d的状态
If(timer1.en==0)
{
timer1.en=1
}
K050和T050结构兼容。T050和X350,X550结构不兼容。
5寸是唯一一款X系列改变结构的型号
1、电脑配置如果不是很低。就考虑是不是有流氓软件拦截了我们软件操作硬盘。
出现这个问题是因为,串口传输数据产生误码了。可以从以下方面着手解决。
1,尝试降低串口波特率。
2,缩短串口延长线距离
3,换一个USB转串口模块
1、手动选择自己的串口,可以节省搜索串口的时间
2、下载波特率和通讯波特率是分开的,下载波特率可以使用最快的921600,通讯的波特率需要单片机和屏幕匹配,如果是cp2102和ft232的串口芯片,建议直接选择921600的最高波特率进行下载
3、使用sd卡进行下载,下载完成后断电,拔出sd卡重新上电即可
printf("n0.val=666"); //发送命令
printf("\xff\xff\xff"); //发送结束符
printf("n0.val=666\xff\xff\xff");
printf("n0.val=%d\xff\xff\xff",MyData); //一次性发完命令和结束符
printf("t0.txt=\"%d\"\xff\xff\xff",MyTxt); //一次性发完命令和结束符
HMISends("t0.txt=\"");
HMISends(Str);
HMISends("\"");
HMISendb(0xff);
1、在上位机工程新建一个文本控件,假设为t0,将程序下载到串口屏上,
2、串口屏串口与单片机串口连接,两者波特率应一致,单片机RX接串口屏TX,单片机TX接串口屏RX。
3、发送指令:单片机串口通过字符串模式发送t0.txt="六六六"
4、发送结束符:单片机通过HEX模式发送0xff 0xff 0xff
5、此时屏幕上的t0控件内的文字变为“六六六”
1、在上位机工程新建一个数字控件,假设为n0,将程序下载到串口屏上,
2、串口屏串口与单片机串口连接,两者波特率应一致,单片机RX接串口屏TX,单片机TX接串口屏RX。
3、发送指令:单片机串口通过字符串模式发送n0.val=666
4、发送结束符:单片机通过HEX模式发送0xff 0xff 0xff
5、此时屏幕上的n0控件内的文字变为“666”
方法1:使用虚拟浮点数控件
1、在上位机工程新建一个数字控件,假设为x0,设置虚拟浮点数控件的小数点位数2位,将程序下载到串口屏上,
2、串口屏串口与单片机串口连接,两者波特率应一致,单片机RX接串口屏TX,单片机TX接串口屏RX。
3、发送指令:单片机串口通过字符串模式发送x0.val=314
4、发送结束符:单片机通过HEX模式发送0xff 0xff 0xff
5、此时屏幕上的x0控件内的文字变为“3.14”
方法2:使用文本控件
1、在上位机工程新建一个文本控件,假设为t0,将程序下载到串口屏上,
2、串口屏串口与单片机串口连接,两者波特率应一致,单片机RX接串口屏TX,单片机TX接串口屏RX。
3、发送指令:单片机串口通过字符串模式发送t0.txt="3.14"
4、发送结束符:单片机通过HEX模式发送0xff 0xff 0xff
5、此时屏幕上的t0控件内的文字变为“3.14”
这种情况是因为没有配置波特率导致的,串口屏默认是9600的波特率,但是如果你是用了其他波特率,却没有在串口屏初始化时配置的话,就会导致这种情况,在调试时可用,是因为选择用户mcu输入时选择了正确的波特率时,串口屏的波特率会自动改变
比如屏幕printh aa 01 0d 0a代表开灯,printh aa 02 0d 0a代表关灯
单片机判断(其中aa是开始位,odoa是结束位)
if(uartRxMsg[0]==0xaa&&uartRxMsg[2]==0x0d&&uartRxMsg[3]==0x0a)
{
switch(uartRxMsg[1])
{
case 0x01://开灯操作
break;
case 0x02://关灯操作
break;
}
}
假设有这么一串数据 55 01 02 03 04 05 06 0d 0a(其中55是开始位,0d0a是结束位)
if(uartRxMsg[0]==0x55&&uartRxMsg[7]==0x0d&&uartRxMsg[8]==0x0a)
{
int year = uartRxMsg[1];
int mon = uartRxMsg[2];
int day = uartRxMsg[3];
int hh = uartRxMsg[4];
int mm = uartRxMsg[5];
int ss= uartRxMsg[6];
}
串口屏上怎么发呢
printh 55
va0.val=rtc0-2000
prints va0.val,1
prints rtc1,1
prints rtc2,1
prints rtc3,1
prints rtc4,1
prints rtc5,1
printh 0d 0a
左上角文件-虚拟sd卡文件夹
如果是上位机软件中直接使用多行编辑,直接按回车可以换行.
在控件的事件中给文本赋值时用\r t0.txt=”123\r456”
串口发送给屏幕时用\r\n
1、在页面初始化使用recmod=1,进入主动解析模式,退出主动解析模式方法。
2、设置一个50ms的定时器,en=1.
3、定时器事件如下
4、当接收到0x01时,p0切换到id=4的图片,当接收到0x02时,p0切换到id=3的图片
常规的退出主动解析模式方法是在事件中写入recmod=0的固件指令,如果想通过串口数据来退出,串口发送recmod=0是肯定没有用的,可以通过发送一串退出密码来实现退出主动解析模式,退出密码为一串24字节的字符串+3字节的结束符。
24字节的字符串:
DRAKJHSUYDGBNCJHGJKSHBDN (字符串数据,必须大写)
3字节的结束符(Hex数据):
0xff 0xff 0xff
合计27字节
所有运算不支持乘除法优先,也不支持括号优先级,统一从左到右的顺序,请特别注意。
更改了屏的现实方向以后,需要重新用视频转换工具转换导入视频。并在导入的时候选择方向。
更改了屏的现实方向以后,需要重新用视频转换工具转换导入视频。并在导入的时候选择方向。
1、输出生产文件
2、拷贝你编译后产生的.tft文件到SD卡根目录(文件名中英文均可)
3、屏幕断电,插入SD卡
4.屏幕上电,自动进入工程升级界面
5、等待升级完成
6、断电,拔出sd卡
7、重新上电
大括号要要单独放一行
cb0.path+="\raaa"
就会添加一个aaa的选项
cb0.path=cb0.path+"123\r"+"456\r"
FPC 座是10P 1.0MM
fpc是1.0x10pin
支持的型号:x5系列 8路(其中2路PWM),k0系列8路(其中4路PWM)
提示:建议使用x3系列或者x5系列进行制作,以为t0和k0不支持透明png
方法一:
新建一个页面,页面背景用一张全屏的png图片,如下图,分辨率为800*480,必须要全屏的,但是周围是镂空的(灰色和白色格子部分),然后保存为PNG格式,如果是其他格式的话,空白部分会被填充成白色。
当需要弹窗时,page到这个页面就可以了。
方法二:
添加一个图片控件,用的是方法1中制作的这个图片
平时不需要弹窗时,用vis隐藏这张图片,需要弹窗时,用vis显示这张图片
设置文本控件/数字控件的vscope属性为全局,并且设置key属性,选择相应的键盘即可
点击解锁之后,点击是,就可以对页面进行编辑了,如果最后感觉不满意,可以选择重置系统页面
基于官方的键盘进行更改
调用键盘页之前,先对键盘页的loadpageid.val和loadcmpid.val赋值就可以了,其他的逻辑会自动实现,loadpageid.val表示调用页的页面ID,loadcmpid.val表示调用页的控件ID
这种情况发生在输入“\”时,只需要换成“\\”就行了
data0.delete(param1,param2)
param1:要删除记录的起始位置
Param2:要删除的条数
eg:
data0.delete(data0.val,1) //删除当前选中的记录
1.File configuration data does not match Component configuration data. It is recommended to delete this file. The system will recreate the correct data file:
sd0/ xxx.data
因为记录的字段和所指定的.data文件中的字段数量不符导致的,只需把存储卡或者虚拟sd卡文件夹中的原本的.data文件删除即可
2、提示file lost :没插micro sd(tf)卡
1、将数据记录的位置指定到ram中
2.设备-工程-内存文件存储区大小设置为100000Byte(至少大于65kB=65560Byte)
这种现象一般出现在4.3寸及以上的屏,因为供电不足导致的,请检查你的电源带载能力,在通电情况下检测屏幕电源座子上的电压是否正常。务必亲自动手检测带载能力,不要看电源标签上的标称值,多数电源的标称值都是假的。
因为你在当前屏幕的初始化里给这个控件赋值了
每次关闭键盘的时候,会重新载入当前页面,控件的值就会被初始化了
解决方法是在跳转到这一页之前给控件赋值,避免每次进入当前页面时被初始化
1、解锁键盘页面
2、编辑ok按钮的弹起事件,在page命令前加上prints input.txt,0语句(注意,page之后的指令是不会被执行的,因为已经跳转到别的页面了)
使用了vis命令将控件隐藏了之后,按键就看不到也摸不到了,但是可以使用click命令触发
必须知道相关控件的id,不能直接使用objectname,比如t[0],这样子的,必须要p[页面数字].b[控件id]
1,在页面上新建一个定时器
2,如果有任何按键操作,那么给这个定时器定时清零
3,如果一定时间没操作。跳转到屏保页面
4,屏保页面有操作,返回主页面
如果是在主动解析模式下,有省电的需求,可以在屏保页面的初始化中将dim设置为0,在退出界面中将dim设置为100
检查是否存在这个变量
检查变量是否添加了.val或者.txt
如果是跨页面调用,需要设置该变量为全局,并且调用时在前面加上页面的名称
检查运算符号两遍是否存在空格
检查是否添加了分号
检查关键字是否拼写正确
检查运算符两边是否有多余的空格
检查语句结束是否多添加了分号
单片机发什么格式给二维码,二维码就是什么格式,二维码控件自己并不知道什么格式,他只管显示hex数值
1、修改工程的编码
2、删除原有的字库,修改为utf8字库(需要勾选自己所需要的语言,如果添加了所有语言,字库会相当大)
文本数据长度不够或者字库中没有某些字
covx rtc0,str.txt,4,0
t0.txt=str.txt+"-"
covx rtc1,str.txt,2,0
t0.txt=t0.txt+str.txt+"-"
covx rtc2,str.txt,2,0
t0.txt=t0.txt+str.txt+"-"
covx rtc3,str.txt,2,0
t0.txt=t0.txt+str.txt+"-"
covx rtc4,str.txt,2,0
t0.txt=t0.txt+str.txt+"-"
covx rtc5,str.txt,2,0
t0.txt=t0.txt+str.txt+"-"
substr weekArr.txt,str.txt,rtc6-1,1
t0.txt=t0.txt+"星期"+str.txt
CR1220
备注:如果要使用rtc功能,必须装上电池,否则断电后屏幕的时间就会变化
http://wiki.tjc1688.com/doku.php?id=2.%E4%B8%8A%E4%BD%8D%E8%BD%AF%E4%BB%B6%E4%B8%8B%E8%BD%BD:4.%E5%B8%B8%E7%94%A8%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7
T0系列没有EEPROM,不能关机保存数据,其他系列的串口屏可以关机保存数据
写入:
http://wiki.tjc1688.com/doku.php?id=6.%E6%8C%87%E4%BB%A4%E9%9B%86:1.%E5%9F%BA%E6%9C%AC%E6%8C%87%E4%BB%A4%E9%9B%86,wepo
读取:
http://wiki.tjc1688.com/doku.php?id=6.%E6%8C%87%E4%BB%A4%E9%9B%86:1.%E5%9F%BA%E6%9C%AC%E6%8C%87%E4%BB%A4%E9%9B%86,repo
写入一个变量到用户存储区(EEPROM)
(支持X3、X5、K0系列)
wepo att,add
att:变量/常量
add: 用户存储区位置(从0开始,到1023结束,总共1024个)
实例1:wepo t0.txt,10 (将t0.txt的内容写入用户存储区的第10位置,在储存区中的占用空间为t0.txt的最大设置值+1,即t0的txt-maxl属性表示的大小+1,假如txt-maxl=20,那么最多可以放下10个汉字或者20个英文字母,实际占用的控件为10-30,共21个位置,下个存储地址应从31开始)
实例2:wepo “abcd”,20 (将字符串“abcd”写入用户存储区的第20位置,在储存区中占用大小为5字节,一个英文字母1个字节,共四个字节,因为是字符串,多加1个字节,最后为5个字节,实际存储地址为20-24,注意:由双引号括起来的或者xx.txt的就是字符串)
实例3:wepo 125,10 (将数值125写入用户存储区的第10位置, 在储存区中占用大小为4字节,即10-13位置)
实例4:wepo “一二三四五”,100 (将”一二三四五”字符串写入用户存储区的第100位置,每个汉字占用2字节,5个汉字共10字节,因为是字符串,加1字节,共11字节,实际存储地址100-110,下个存储地址应该从111开始)
备注:
1.写入内容为变量字符串的时候,在储存区中的占用空间为此变量的最大字符数+1;写入内容为常量字符串的时候,在储存区中的占用空间为此常量字符串的实际字符数+1。
2.写入内容为变量数值或常量数值的时候,在储存区中的占用空间统一为4字节。
3.使用用户存储区读写操作过程中请切记规划好数据区位置,以免位置交错引起数据覆盖错乱。
从用户存储区(EEPRO)读数据到一个变量
(支持X3、X5、K0系列)
repo att,add
att:目标变量
add: 用户存储区位置(从0开始)
实例1:repo t0.txt,10 (从用户存储区的10位置读数据到t0.txt变量中,在储存区中的读取数据量为t0.txt的最大设置值+1,即t0的txt-maxl属性表示的大小+1)
实例2.repo n0.val,10 (从用户存储区的10位置读数据到n0.val,在存储区中的读取数据量为4字节)
备注:
1.读入内容为变量字符串的时候,在储存区中的读取数据量为此变量的最大字符数+1。
2.读入内容为变量数值时候,在储存区中的读取数据量统一为4字节。
3.使用用户存储区读写操作过程中请切记规划好数据区位置,以免位置交错引起数据覆盖错乱。
比如我一个按键,按一下,按钮上显示正在检测,再按一下按钮,按钮切换显示停止检测
if(b0.txt==”检测”)
{
b0.txt="停止检测"
}else
{
b0.txt=”检测”
}
未制作字库或者选错字库(该字库中没有你要的字)————字库制作方法
制作完成后,应检查控件的font属性是否为你所需要的字库
双击该字库,即可查看到字库包含了哪些文字
http://wiki.tjc1688.com/doku.php?id=4.%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E8%AF%A6%E8%A7%A3:2.%E5%AD%97%E5%BA%93&s[]=%E5%AD%97%E5%BA%93
字库资源或者图片资源中没有你指定ID的图片,导入字库或者图片即可
如下图所示:属性栏中显示为绿色的属性都可以在运行中修改,黑色的属性只能在编辑时修改,不能在运行中修改。
txt属性,即字符串属性。在给字符串做常量赋值时,需要添加双引号(与C语言相同)。
例如:
t0.txt="abcd"
t0.txt="\"hello\"" 使用C语言标准转义字符,结果为屏幕上显示内容为"hello"(包括双引号)
t0.txt=t0.txt+"123" t0.txt在原来字符串的尾部在追加"123"这三个ASCII字符
val属性,即数值型属性。所有数值型操作时,不需要不需要使用双引号。
例如:
n0.val=1234
n0.val=0xabcd
n0.val=1234+0xabcd
if(bt0. val==1)
{
}else
{
}
将对应控件的vscope属性由默认的“私有”修改为“全局”即可。
注1:将控件设置为全局以后,只有在设备复位后会对所有全局控件做一次赋值操作。其他任何设备不会主动去修改全局控件属性值。
注2:每次进入页面时设备会执行页面的“前初始化事件”或者“后初始化事件”中的代码。如果用户在这里增加了任何操作属性的代码,则会按照用户代码操作去修改对应变量属性值。
多数情况下,我们都是在操作当面页面的控件属性,如果需要操作其他页面的控件属性请按如下书写方式:
[页面].[控件].[属性]=XXX
实例:
main.t0.txt="123" 给main页面的t0.txt属性赋值"123"
main.t0.txt=set.t3.txt 把set页面的t3.txt赋值给main页面的t0.txt
set.t4.txt="abc" 给set页面的t4.txt赋值"abc"
特别注意:跨页面操作控件属性的时候,不管是读取还是赋值,被操作控件的vscope属性必须设置为全局(默认是私有),否则操作会失败。
http://wiki.tjc1688.com/doku.php?id=6.%E6%8C%87%E4%BB%A4%E9%9B%86:2.%E4%B9%A6%E5%86%99%E8%AF%AD%E6%B3%95&s[]=%E8%B7%A8%E9%A1%B5%E9%9D%A2,kuayemian
请参阅文档:指令集->名称组使用说明
1.新建一个定时器tm0,en属性设置为0,其他属性不用管;此时定时器处于默认关闭状态。
2.在按钮的按下事件中写上如下代码:
tm0.tim=2000 2秒后进入长按功能
tm0.en=1 打开定时器
3.在按钮的弹起事件中写上如下代码:
tm0.en=0 已经松手了,所以定时器立即停止工作
4.在定时器tm0的定时事件中写上如下代码:
tm0.tim=100 按钮刚按下的时候,定时时间是2秒,这里修改为100ms,就意味着如果不松手,每100ms会来执行一次后面的代码
此处写上您想操作的长按事件代码,比如:n0.val++
…..
1,每次修改eeprom以后,要等1秒才能断电。eeprom有缓冲机制。如果小于1秒断电,可能导致写入失败
2,升级最新的公测版试试看是否有改善
http://wiki.tjc1688.com/doku.php?id=7.%E5%B7%A5%E7%A8%8B%E6%A0%B7%E4%BE%8B:2.%E5%AE%98%E6%96%B9%E5%8F%91%E5%B8%83%E5%BA%94%E7%94%A8%E6%A0%B7%E4%BE%8B
建议使用printf或者sprintf进行字符串拼接
发送符号时,需要进行转义
keil编译的程序 “汉字显示不全、串口发送汉字接收后乱码缺失”问题
https://blog.csdn.net/qq_34824576/article/details/79292584
解决方法是在出现问题的字体后面加上\xFD
如 :unsignedchar code s[]="数学"; 改为 unsignedchar code s[]="数\xFD学"; 即可正常显示。
下面是从GB2312中挑出来的相关汉字:
褒 饼 昌 除 待 谍 洱俘庚过
糊 积 箭 烬 君 魁 例笼慢谬
凝 琵 讫 驱 三 升 数她听妄
锡 淆 旋 妖 引 育札正铸
佚 冽 邶 埤 荦 蔟 摭啐帻猃
恺 泯 潺 妪 纨 琮 椠辇挲臊
忑 睚 铨 稞 瘕 颀 螨簖酏觚
鳊鼾
替代方法:
比如我做一个触摸热区,按下事件里写“电机异常”,弹起事件里写“电机正常”,把这个触摸热区屏幕外(避免被误触发),然后用单片机发送click去触发他
最好是在第一页里面选择语言,然后存到一个全局变量里,然后在每一页的初始化里刷就好了
串口屏:
新建一个变量chooseLang,用于选择语言
在页面初始化中写:
if(chooseLang.val==1)
{
t0.txt=”中文”
}else if(chooseLang.val==2)
{
t0.txt=”English”
}else if(chooseLang.val==3)
{
t0.txt="태양"
}else if(chooseLang.val==4)
{
t0.txt="真実はいつもひとつ"
}
创建字库时,范围选择指定字符,只添加需要的字符
字高数值越大,每个字占用的体积越大,尽量选择比较小的字高
控件的id相当于控件所在的图层,越底层id越小,所以页面的id号是0,最顶层的id号是最大的,修改id号可以通过置顶,置底的操作来完成
不可以和控件所在页面名称相同(报错:名称重复),但是可以和其他页面名称相同一样。
缓冲区大小:1K
主动解析时缓冲区需要自己清空
规格书写的是1K。用最新版上位机,x系列是4k串口缓冲区,t0和k0还是1k
1、如果当前页面有需要进行键盘输入的控件,那么不要在当前页面的初始化中给页面赋值,否则每次离开键盘时,都会执行初始化中的赋值操作
】