本文檔適合大彩帶 CAN接口的EW系列串口屏產(chǎn)品使用。
1. VisualTFT軟件版本:V3.0.1.1112及以上的版本。
版本查看:
1) 打開VisualTFT軟件啟動頁面如圖2-1軟件版本,右上角會顯示的軟件版本號;
圖2-1軟件版本
2) 打開VisualTFT,在軟件右下角可以查看軟件版本圖2-2軟件版本,最新版本可登錄http://gc086.com/進行下載。
圖2-2軟件版本
2. 串口屏硬件版本:EW系列固件 >= V7.0.863.0。
版本查看:
1) 查看屏幕背面版本號貼紙;
2) VisualTFT與屏幕聯(lián)機成功后,右下角顯示的版本號。
EW系列串口屏CAN總線接口的參數(shù)如下:
1. 波特率支持125k ~ 1M Bps;
2. 屏幕內(nèi)置128歐姆終端電阻;
3. 支持標準幀和擴展幀;
4. 遵循CAN2.0B協(xié)議。
1 《LUA 腳本API V1.4》可通過以下鏈接下載物聯(lián)型開發(fā)包獲取:
http:/gc086.com/index.php?s=/List/index/cid/19.html
2 《LUA基礎(chǔ)學習》可通過以下鏈接下載物聯(lián)型開發(fā)包獲取:
http:/gc086.com/index.php?s=/List/index/cid/19.html
3 LUA腳本初學者可以通過下面鏈接進行學習。
http://www.runoob.com/lua/lua-arrays.html
本文主要介紹屏幕CAN接口數(shù)據(jù)收發(fā),以及CAN相關(guān)API應用等,將以下2點進行說明:
1. 準備工程素材;
2. 配置串口屏工程;
在實現(xiàn)例程前需要作以下3個準備:
1. 硬件平臺;
2. 軟件平臺;
3. UI素材;
5.1.1 硬件平臺
該例程使用大彩物聯(lián)型7寸串口屏DC80480EW070為驗證開發(fā)平臺。如圖5-1所示;
圖5-1 EW系列7寸串口屏
其他尺寸EW型的串口屏帶CAN總線接口的產(chǎn)品均可借鑒此教程。
5.1.2 軟件平臺
使用大彩自主研發(fā)的上位機軟件VisualTFT配置工程,登錄http://gc086.com/下載。如圖5-2所示;
圖5-2 下載軟件
本文主要介紹以下2點:
(1) 發(fā)送數(shù)據(jù)
(2) 接收并顯示數(shù)據(jù)
5.2.1 CAN總線收發(fā)測試
本例程中使用電腦通過USB轉(zhuǎn)CAN的調(diào)試工具與EW070進行數(shù)據(jù)收發(fā)測試。
1. 畫面配置
在畫面ID0中,添加兩個文本控件(控件ID1、控件ID2)和一個按鈕控件(控件ID4),其中控件控件ID1顯示“需要發(fā)送的數(shù)據(jù)”、控件ID2顯示“CAN總線接收到的數(shù)據(jù)”。控件ID1為按鈕按下時候發(fā)出數(shù)據(jù)給CAN總線。如圖5-3所示:
圖5-3 畫面配置
2 LUA腳本編輯
在系統(tǒng)初始化函數(shù)中打開CAN bus 接口,代碼如所示;
--初始化函數(shù) function on_init() canbus_open(0,125,0,0) --打開CANBUS 接口,設(shè)備索引號0,波特率125kbps ,關(guān)閉只讀模式,關(guān)閉自收發(fā)測試 end
本例程中,用戶點擊按鈕控件ID4后,將向CAN總線發(fā)送控件1的值。代碼如程序清單 1所示:
程序清單 1 功能實現(xiàn)
--用戶通過觸摸修改控件后,執(zhí)行此回調(diào)函數(shù)。 --點擊按鈕控件,修改文本控件、修改滑動條都會觸發(fā)此事件。 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
電腦調(diào)試工具接收到CAN的數(shù)據(jù),顯示如下:
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] --將前兩個字節(jié)合并顯示 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函數(shù)
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-自發(fā)自收(環(huán)回/自測)
2) canbus_close(index) 關(guān)閉CANBUS 接口
- Index-索引號0~1
3) canbus_write(index,identifier,dlc,rtr,ide,data) 發(fā)送CAN報文
- index--索引號0~1
- identifier--報文ID(越小優(yōu)先級越高)
- dlc--數(shù)據(jù)長度(0~8,最長8個字節(jié))
- rtr--遠程幀,0代表否,1代表是
- ide--擴展幀,0代表否,1代表是
- data--數(shù)據(jù),table 格式
4) on_canbus_recv(index,identifier,dlc,rtr,ide,data) CAN 報文回調(diào)函數(shù),收到報文后,系統(tǒng)自動調(diào)用
- index--索引號0~1
- identifier--報文ID(越小優(yōu)先級越高)
- dlc--數(shù)據(jù)長度(0~8,最長8個字節(jié))
- rtr--遠程幀,0代表否,1代表是
- ide--擴展幀,0代表否,1代表是
- data--數(shù)據(jù),table 格式
基本思路:當按鈕控件ID4按下的時候,觸發(fā)觸摸控件回調(diào)函數(shù)on_control_notify(),再調(diào)用canbus_write ()向CAn總線發(fā)送報文。當CAN總線其他節(jié)點發(fā)送數(shù)據(jù)后屏幕會自動回調(diào)系統(tǒng)函數(shù)on_canbus_recv,通過判斷對應的報文ID編號,對屏幕的響應信息data進行提取。