本文档适合大彩带 can接口的ew系列串口屏产品使用。
1. visualtft软件版本:v3.0.1.1112及以上的版本。
版本查看:
1) 打开visualtft软件启动页面如图2-1软件版本,右上角会显示的软件版本号;
图2-1软件版本
2) 打开visualtft,在软件右下角可以查看软件版本图2-2软件版本,最新版本可登录http://www.gz-dc.com/进行下载。
图2-2软件版本
2. 串口屏硬件版本:ew系列固件 >= v7.0.863.0。
版本查看:
1) 查看屏幕背面版本号贴纸;
2) visualtft与屏幕联机成功后,右下角显示的版本号。
ew系列串口屏can总线接口的参数如下:
1. 波特率支持125k ~ 1m bps;
2. 屏幕内置128欧姆终端电阻;
3. 支持标准帧和扩展帧;
4. 遵循can2.0b协议。
1 《lua 脚本api v1.4》可通过以下链接下载物联型开发包获取:
http:/www.gz-dc.com/index.php?s=/list/index/cid/19.html
2 《lua基础学习》可通过以下链接下载物联型开发包获取:
http:/www.gz-dc.com/index.php?s=/list/index/cid/19.html
3 lua脚本初学者可以通过下面链接进行学习。
http://www.runoob.com/lua/lua-arrays.html
本文主要介绍屏幕can接口数据收发,以及can相关api应用等,将以下2点进行说明:
1. 准备工程素材;
2. 配置串口屏工程;
在实现例程前需要作以下3个准备:
1. 硬件平台;
2. 软件平台;
3. ui素材;
5.1.1 硬件平台
该例程使用大彩物联型7寸串口屏dc80480ew070为验证开发平台。如图5-1所示;
图5-1 ew系列7寸串口屏
其他尺寸ew型的串口屏带can总线接口的产品均可借鉴此教程。
5.1.2 软件平台
使用大彩自主研发的上位机软件visualtft配置工程,登录http://www.gz-dc.com/下载。如图5-2所示;
图5-2 下载软件
本文主要介绍以下2点:
(1) 发送数据
(2) 接收并显示数据
5.2.1 can总线收发测试
本例程中使用电脑通过usb转can的调试工具与ew070进行数据收发测试。
1. 画面配置
在画面id0中,添加两个文本控件(控件id1、控件id2)和一个按钮控件(控件id4),其中控件控件id1显示“需要发送的数据”、控件id2显示“can总线接收到的数据”。控件id1为按钮按下时候发出数据给can总线。如图5-3所示:
图5-3 画面配置
2 lua脚本编辑
在系统初始化函数中打开can bus 接口,代码如所示;
--初始化函数 function on_init() canbus_open(0,125,0,0) --打开canbus 接口,设备索引号0,波特率125kbps ,关闭只读模式,关闭自收发测试 end
本例程中,用户点击按钮控件id4后,将向can总线发送控件1的值。代码如程序清单 1所示:
程序清单 1 功能实现
--用户通过触摸修改控件后,执行此回调函数。 --点击按钮控件,修改文本控件、修改滑动条都会触发此事件。 function on_control_notify(screen,control,value) if screen== screen_can and control==4 and value==1 then send_data_buffer[0] = get_value(screen_can,1)>> 8 send_data_buffer[1] = get_value(screen_can,1)&0xff canbus_write(0,can_cmd_id,2,0,0,send_data_buffer) end end
电脑调试工具接收到can的数据,显示如下:
function on_canbus_recv (index,identifier,dlc,rtr,ide,data) if can_cmd_id == identifier then set_value(screen_can,5,rtr) if data[0] ~= nil and data[1] ~= nil then local show_value = (data[0]<<8) data[1] --将前两个字节合并显示 set_value(screen_can,2,show_value) canbus_write(0,can_cmd_id,dlc,0,0,data) end end end
当电脑通过can正确响应屏幕请求后,将信息显示在文本id2中。
5.2.2 核心api函数
1) canbus_open(index,baudrate,listen_mode,loop_back) --开启canbus 接口
- index-索引号0~1(0指的是第一路can接口,1表示第二路can接口,目前只支持一路)
- baudrate-波特率(单位k),可选125,250,500,1000
- listen_mode-只读模式
- loop_back-自发自收(环回/自测)
2) canbus_close(index) 关闭canbus 接口
- index-索引号0~1
3) canbus_write(index,identifier,dlc,rtr,ide,data) 发送can报文
- index--索引号0~1
- identifier--报文id(越小优先级越高)
- dlc--数据长度(0~8,最长8个字节)
- rtr--远程帧,0代表否,1代表是
- ide--扩展帧,0代表否,1代表是
- data--数据,table 格式
4) on_canbus_recv(index,identifier,dlc,rtr,ide,data) can 报文回调函数,收到报文后,系统自动调用
- index--索引号0~1
- identifier--报文id(越小优先级越高)
- dlc--数据长度(0~8,最长8个字节)
- rtr--远程帧,0代表否,1代表是
- ide--扩展帧,0代表否,1代表是
- data--数据,table 格式
基本思路:当按钮控件id4按下的时候,触发触摸控件回调函数on_control_notify(),再调用canbus_write ()向can总线发送报文。当can总线其他节点发送数据后屏幕会自动回调系统函数on_canbus_recv,通过判断对应的报文id编号,对屏幕的响应信息data进行提取。