參考
固件更新
工程目錄下dciot_build\private
文件夾複製到SD卡根目錄,重新上電自動更新,大改2min時間,
硬件調試環境
屏幕贈送一塊調試板,PC串口TXD接調試板TXD,RXD接RXD
軟件開發環境安裝
開發軟件都可以到大彩的官網下載,
- VisualTFT_3.0.0.1075
- VSPD
用虛擬串口屏來調試調試
VSPD新建一對虛擬串口,VisualTFT點擊調試 > 運行虛擬串口屏
,分別用虛擬串口屏和串口助手打開兩個串口,
設計
界面上拖拉擺放即可。
小鍵盤設置加熱時間:EE B1 11 00 00 00 2C 11 31 30 30 2E 31 00 FF FC FF FF
小鍵盤設置加熱時間:EE B1 11 00 00 00 2C 11 31 30 30 2E 30 00 FF FC FF FF
小鍵盤設置保溫時間:EE B1 11 00 00 00 2D 11 31 30 30 2E 30 00 FF FC FF FF
小鍵盤設置冷卻時間:EE B1 11 00 00 00 2E 11 31 30 30 2E 30 00 FF FC FF FF
觸摸屏啓動按鍵:EE B1 11 00 00 00 18 10 01 01 FF FC FF FF EE B1 11 00 00 00 18 10 01 00 FF FC FF FF
觸摸屏復位按鍵:EE B1 11 00 00 00 17 10 01 01 FF FC FF FF EE B1 11 00 00 00 17 10 01 00 FF FC FF FF
觸摸屏模式按鍵:EE B1 11 00 00 00 19 10 01 01 FF FC FF FF EE B1 11 00 00 00 19 10 01 00 FF FC FF FF
觸摸屏設置按鍵:EE B1 11 00 00 00 16 10 01 01 FF FC FF FF EE B1 11 00 00 00 16 10 01 00 FF FC FF FF
觸摸屏確定按鍵:EE B1 11 00 00 00 3F 10 01 01 FF FC FF FF EE B1 11 00 00 00 3F 10 01 00 FF FC FF FF
單片機軟件Demo分析
屏幕刷新
if(timer_tick_count - timer_tick_last_update >= 200/*TIME_100MS*/)
{
timer_tick_last_update = timer_tick_count;
UpdateUI();
}
串口命令接收部分
首先查找幀頭0xee
,找到幀頭後查找幀尾0xfffcffff
,找到之後把中間的數據提取出來就是一條命令,下一步可選擇對命令進行CRC校驗,幀尾的前兩個字節爲CRC校驗值。
觸摸屏命令處理
命令的結構,
typedef struct
{
uint8 cmd_head; //幀頭
uint8 cmd_type; //命令類型(UPDATE_CONTROL)
uint8 ctrl_msg; //CtrlMsgType-指示消息的類型
uint16 screen_id; //產生消息的畫面ID
uint16 control_id; //產生消息的控件ID
uint8 control_type; //控件類型
uint8 param[256]; //可變長度參數,最多256個字節
uint8 cmd_tail[4]; //幀尾
}CTRL_MSG,*PCTRL_MSG;
cmd_type
有下面幾種,
#define NOTIFY_TOUCH_PRESS 0X01 //觸摸屏按下通知
#define NOTIFY_TOUCH_RELEASE 0X03 //觸摸屏鬆開通知
#define NOTIFY_WRITE_FLASH_OK 0X0C //寫FLASH成功
#define NOTIFY_WRITE_FLASH_FAILD 0X0D //寫FLASH失敗
#define NOTIFY_READ_FLASH_OK 0X0B //讀FLASH成功
#define NOTIFY_READ_FLASH_FAILD 0X0F //讀FLASH失敗
#define NOTIFY_MENU 0X14 //菜單事件通知
#define NOTIFY_TIMER 0X43 //定時器超時通知
#define NOTIFY_CONTROL 0XB1 //控件更新通知
#define NOTIFY_READ_RTC 0XF7 //讀取RTC時間
#define NOTIFY_HandShake 0X55 //握手通知
ctrl_msg
有下面幾種,只有當cmd_type
是NOTIFY_CONTROL
纔有,其它情況沒有這個字段,
#define MSG_GET_CURRENT_SCREEN 0X01 //畫面ID變化通知
#define MSG_GET_DATA 0X11 //控件數據通知
control_type
有下面幾種,只有當ctrl_msg
不是MSG_GET_CURRENT_SCREEN
纔有,其它情況沒有這個字段,不同control_type
對應的param
長度是不一樣的,
enum CtrlType
{
kCtrlUnknown=0x0,
kCtrlButton=0x10, //按鈕
kCtrlText, //文本
kCtrlProgress, //進度條
kCtrlSlider, //滑動條
kCtrlMeter, //儀表
kCtrlDropList, //下拉列表
kCtrlAnimation, //動畫
kCtrlRTC, //時間顯示
kCtrlGraph, //曲線圖控件
kCtrlTable, //表格控件
kCtrlMenu, //菜單控件
kCtrlSelector, //選擇控件
kCtrlQRCode, //二維碼
};
由screen_id
和control_id
可唯一定位一個控件。