大彩串口屏開發

參考

RGB顏色值與十六進制顏色碼轉換工具

固件更新

工程目錄下dciot_build\private文件夾複製到SD卡根目錄,重新上電自動更新,大改2min時間,
129

硬件調試環境

屏幕贈送一塊調試板,PC串口TXD接調試板TXD,RXD接RXD

軟件開發環境安裝

開發軟件都可以到大彩的官網下載,

  • VisualTFT_3.0.0.1075
  • VSPD

用虛擬串口屏來調試調試

VSPD新建一對虛擬串口,VisualTFT點擊調試 > 運行虛擬串口屏,分別用虛擬串口屏和串口助手打開兩個串口,
126

設計

界面上拖拉擺放即可。
127

小鍵盤設置加熱時間: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_typeNOTIFY_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_idcontrol_id可唯一定位一個控件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章