HMI指令集
1、 串口說明
1-1 串口工作模式
采用異步、全雙工串口(UART),每個數據傳送采用11個位:1個起始位,8個數據位(LSB),1個SPACE校位,1個停止位。波特率有兩種方式設置:
(1)、上電時,如果終端的I/O0引腳為高電平或者浮空狀態,波特率為用戶設置值,范圍1200-115200bps,具體設置方法參考0xE0指令。出廠默認為115200bps。
(2)、上電時,如果終端的I/O0引腳為低電平,波特率默認為921600bps,也可由0xE0指令設置為其它波特率。
注:上面兩種設置方式只是出廠未設置過波特率時默認值不一樣,設置保存后則上電時為設置過的波特率。
1-2 數據幀架構
串口數據幀由4個數據塊組成,如下表所述:
數據 |
1 |
2 |
3 |
4 |
5 |
舉例 |
0xAA |
0x70 |
0x01 |
Check_H:L(可選) |
0xCC 0x33 0xC3 0x3C |
說明 |
幀頭固定為0xAA |
指令 |
數據長度,最多248 |
2字節累加和校驗 |
幀結束符(幀尾) |
注:2字節累加和校驗:當PARA2.1=0(0xE0/E3指令或SD卡設置)時啟用,校驗和從指令開始計算,到最后一個數據結束,字節累加。
舉例:Para2.1=1 AA 70 01 CC33 C33C 未啟用幀累加和校驗
Para2.1 =0 AA 70 01 00 71 CC33 C33C 啟用了幀累加和校驗
1-3 通訊幀緩沖區(FIFO)
HMI有一個通訊緩沖區,通訊緩沖區為FIFO(先進先出)結構,只要通訊緩沖區不溢出,用戶就可以連續傳送數據給HMI。
硬件BUSY信號指示了通訊緩沖區的狀態,正常時,BUSY信號為高電平(RS232電平為負電壓),當通訊緩沖區滿時,BUSY信號會變成低電平(RS232電平為正電壓),用戶應停止發送數據,待BUSY恢復為高電平時再接著發送數據。
對于一般的應用,由于HMI的處理速度很快,用戶不必判斷BUSY信號狀態,但對于短時間需要傳送多個數據幀的應用,比如一次需要高速刷新上百個屏幕參數,建議使用BUSY信號來控制串口發送。
注:如果用戶使用HMI過程中,出現“丟幀”現象,即某些數據沒有顯示出來,則可能是緩沖區溢出了,這時就需要用示波器檢查BUSY信號是否有跳變,如果有跳變,則需要減慢發送速度,或者配合 BUSY信號來處理。
1-4 字節傳送順序
所有的指令或數據都是16進制(HEX)格式;對于字型(2字節)數據,總是采用高字節優先傳送(MSB)方式。如:x坐標為600,其HEX格式數據為0x0258,傳送順序為0x02 0x58。
1-5 傳送方向
傳送方向按照下面的規則定義:
(1).下行(Tx)用戶發送數據給HMI,數據從HMI用戶接口的 “DIN”或“RXD”引腳輸入。
(2).上行(Rx)HMI發送數據給用戶,數據從HMI用戶接口的 “DOUT”或“TXD”引腳輸出。
|
|
類別 |
指令 |
說明 |
握手 |
0x00 |
查看配置和版本信息 |
顯示參數配 |
0x40 |
設置調色板 |
0x41 |
設置字符顯示間距 |
|
0x42 |
取色到背景色調色板 |
|
0x43 |
取色到前景色調色板 |
|
0x44 |
設置光標顯示模式 |
|
文本顯示 |
0x53 |
8*8點陣ASCII字符 |
0x54 |
16*16點陣GBK擴展碼字符串顯示 |
|
0x55 |
32*32點陣GB2312內碼字符串顯示 |
|
0x6E |
12*12點陣GBK 擴展碼字符串顯示 |
|
0x6F |
24*24點陣GB2312內碼字符串顯示 |
|
0x98 |
任意點陣,任意編碼字符串顯示 |
|
0x45 |
開啟/關閉文本框限制 |
|
置點 |
0x50 |
背景色置多個點(刪除點) |
0x51 |
前景色置多個點 |
|
0x74 |
動態畫線快速置點 |
|
0x72 |
直接顯存操作 |
|
線段和多邊形 |
0x56 |
把指定點用前景色線段連接(顯示多邊形) |
0x5D |
把指定點用背景色線段連接(刪除多邊形) |
|
0x75 |
快速顯示連續的同底垂直線段(頻譜) |
|
0x76 |
快速顯示折線圖 |
|
0x78 |
偏移量連線 |
|
圓弧和圓域 |
0x57 |
反色/顯示 多個圓弧或圓域 |
矩形框 |
0x59 |
前景色顯示多個矩形框(顯示矩形框) |
0x69 |
背景色顯示多個矩形框(刪除矩形框) |
|
區域操作 |
0x73 |
雙色位圖填充指定區域 |
0x64 |
指定區域填充 |
|
0x52 |
清屏 |
|
0x5A |
多個指定區域清除 |
|
0x5B |
多個指定區域填充 |
|
0x5C |
多個指定區域反色 |
|
0x60 |
多個指定區域左環移 |
|
0x61 |
多個指定區域右環移 |
|
0x62 |
多個指定區域左移 |
|
0x63 |
多個指定區域右移 |
|
圖片/圖標顯示 |
0x70 |
顯示一幅全屏圖像 |
0x7B |
顯示一幅全屏圖像并計算CRC16校驗和 |
|
0x71 |
從指定圖片剪切圖標粘貼到當前顯示頁 |
|
0x9C |
從指定圖片剪切圖標濾除背景粘貼到當前顯示頁,粘貼前自動恢復原背景 |
|
0x9D |
從指定圖片剪切圖標濾除背景粘貼到當前顯示頁 |
|
0x9E |
從指定圖片剪切圖標,旋轉指定角度后粘貼到當前頁面顯示,背景濾除可選 |
|
0xE2 |
將當前顯示畫面保存到終端 |
|
0x97 |
ICON圖標顯示(最大尺寸255×255) |
|
0x99 |
用戶自定義圖標顯示 |
|
0xD0 |
強制刷新一次全屏顯示 |
|
動畫支持 |
0x9A |
關閉/打開自動執行用戶預先設置的指令組 |
暫存緩沖區操作 |
0xC0 |
寫數據到暫存緩沖區 |
0xC101 |
顯示暫存緩沖區的數據點 |
|
0xC102 |
顯示暫存緩沖區的數據線 |
|
0xC103 |
使用顯示暫存緩沖區的數據線(曲線動態縮放) |
|
0xC104 |
使用顯示暫存緩沖區的數據點高速無閃爍連線(示波器) |
|
0xC105 |
使用顯示暫存緩沖區數據縮放顯示折線圖 |
|
0xC106 |
使用顯示暫存緩沖區數據縮放顯示窗口限制雙向折線圖 |
|
0xC107 |
清空置點緩沖區 |
|
0xC107 |
在置點緩沖區置點 |
|
0xC107 |
恢復置點緩沖區到當前顯示頁面 |
|
0xC108 |
使用暫存緩沖區來顯示參數 |
|
0xC110 |
使用暫存緩沖區指令實現同步顯示 |
|
0xC2 |
從暫存緩沖區回讀數據 |
|
0xF2 |
下載字庫 |
|
0x90 |
寫數據到用戶數據庫 |
|
0x91 |
從用戶數據庫讀數據 |
|
0x71 |
鍵碼上傳 |
|
0xE5 |
配置鍵碼接口 |
|
0x72 |
觸摸屏松開后,最后一次上傳(可0xE0指令設置關閉) |
|
0x73 |
觸摸屏按下時,數據上傳(可0xE0指令設置只傳1次) |
|
0xE4 |
觸摸屏校準 |
|
0x78 |
觸摸界面自動切換模式下,觸摸屏松開時,預設鍵碼自動上傳 |
|
0x79 |
觸摸界面自動切換模式下,觸摸屏按下時,預設鍵碼自動上傳 |
|
0x7C01 |
觸摸界輸入ASCII字符串 |
|
0x7C02 |
觸摸界輸入中英文混合字符串 |
|
蜂鳴器控制 |
0x79 |
蜂鳴器鳴叫一聲 |
視頻切換 |
0x7A |
切換視頻和HMI功能 |
背光控制 |
0x5E |
關閉背光或設置觸摸(鍵控)背光模式 |
0x5F |
打背光或PWM方式調節背光亮度 |
|
時鐘操作 |
0x9B |
啟用/關閉時鐘自動疊加顯示,讀取當前時鐘 |
0xE7 |
設置時鐘 |
|
參數配置 |
0xE0 |
配置參數,掉電不保存 |
0xE3 |
配置參數,掉電保存 |
|
實用算法 |
0xB001 |
基于一級字庫的拼音輸入法 |
0xB002 |
計算(A*B+C)/D,E是4字節商,F是2字節余數 |
|
0xB003 |
無符號整數(2字節)數組排序 |
|
0xB004 |
基于GBK字庫的拼音輸入查詢 |
|
聲音操作 |
0x30 |
播放指定存儲位置的音樂 |
0x32 |
實時音量調節 |
|
0x33 |
立即停止播放 |
|
0x3F |
聲音操作指令應答 |