大彩串口屏can总线数据收发应用说明-凯发k8一触即发

一、适合范围


本文档适合大彩带 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与屏幕联机成功后,右下角显示的版本号。





三、can功能概述


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. 配置串口屏工程;






5.1 准备工程素材

在实现例程前需要作以下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 下载软件






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进行提取。





网站地图