閱讀 | 訂閱
閱讀 | 訂閱
芯片/顯示

LED顯示屏二次開發接口的設計(二)

星之球激光 來源:21ic2012-08-03 我要評論(0 )   

2 關(guan) 鍵功能的設計和實現 2.1 通信協議設計 LED 顯示屏二次開發接口設計的首要工作是定義(yi) 控製端與(yu) LED 顯示屏之間的通信協議。為(wei) 了實現簡便並對用戶透明,這裏所有通信方...

       2 關(guan) 鍵功能的設計和實現

  2.1 通信協議設計

  LED 顯示屏二次開發接口設計的首要工作是定義(yi) 控製端與(yu) LED 顯示屏之間的通信協議。為(wei) 了實現簡便並對用戶透明,這裏所有通信方式皆采用同一協議,每一個(ge) 命令都成對出現,對應命令和返回命令,如表1 和表2 所示。

表1 命令格式

 %%%%%%%%%%2

表2 返回命令格式

 %%%%%%%%%%3

  各參數說明:

  (1)命令類型:標注命令類型ID,如通信握手命令、文件傳(chuan) 輸以及其它控製指令等;

  (2)命令號:如果某一類型命令有多個(ge) ,不同的命令號表示該類不同的命令;

  (3)目標ID:指顯示屏ID,默認值為(wei) 0x01;

  (4)源ID:指控製端ID,默認為(wei) 0x00;

  (5)長度:指具體(ti) 命令實際數據長度;

  (6)數據:具體(ti) 命令的數據或返回結果;

  (7)校驗和:除校驗和外所有該協議數據的校驗和數據,一般使用算術和即可。

  命令傳(chuan) 輸邏輯如下:

  (1)發送方在發送具體(ti) 的命令之前,先發送一個(ge) 通信握手命令:

  控製源端- - - - - - - - - - 發送通信握手命令- - - - - - - - - - 》 顯示屏控製源端《- - - - - - - - - - 返回通信握手命令- - - - - - - - - - 顯示屏

  控製源端收到結果正確,則表示顯示屏已經做好接收數據準備,可以開始發送具體(ti) 命令。如果收不到顯示屏的任何返回,需要檢查物理鏈路是否正常,串口的波特率設置是否正常等。

  (2) 發送方把具體(ti) 命令數據按前麵的格式進行打包發送到顯示屏,顯示屏在收到數據包後會(hui) 對數據進行校驗檢查。如果校驗失敗,則請求重發。

  (3)發送方的命令成功發送到顯示屏後,顯示屏按協議包格式把控製卡執行的結果反饋到發送方。如果校驗失敗,請求顯示屏重發執行結果數據;否則發送結束結果給顯示屏,結束命令過程。

  (4) 如果(2)中指令是文件傳(chuan) 輸指令,則重複(2)、(3),直到文件傳(chuan) 輸結束。

  在通信過程中,發送方要強製結束發送過程,可以發送通信握手命令或強製中止通信進行強製終止。

  2.2 通信通道接口

  在對LED 顯示屏進行通信之前,必須先建立通信通道,而退出係統時,則釋放通信通道資源。通信通道接口包括:

  (1)打開通信通道

  函數格式:DWORD COMM_Open (constPDeviceParam pDevParam, DWORD dwNotify,DWORD dwWindws , DWORD dwMsg);

  參數說明:

  ① pDevParam:表示指定設備的參數,例如串口的波特率、串口號,以及網絡本地IP 地址、端口號等參數;② dwNotify:表示當LED 顯示屏有返回值時是否通知,0 代表不通知,1 表示通知;③ dwWindws :表示消息通知的窗體(ti) 句柄;④ dwMsg:用戶定義(yi) 的消息號。

  返回值:

  ① 0:表示創建失敗;② 其它值:表示設備通道值。

  功能描述:

  該函數用來建立一個(ge) 通信通道,函數運行一次即建立一個(ge) 通道,建立成功就返回一個(ge) DWORD值,代表一個(ge) 設備的句柄,用於(yu) 區分不同的通道。該值供其它接口函數使用,以便對不同的顯示屏進行控製。

  物理上支持串口通道、網絡通道,對於(yu) 串口,設置串口號、波特率、接收/ 發送緩衝(chong) 區,然後打開串口;對於(yu) 網絡,設置本地IP、端口號、接收/ 發送緩衝(chong) 區,然後打開網口。這裏需要特別強調的是,網絡采用UDP 方式,這主要是為(wei) 了:

  ① 在協議實現上與(yu) 串口統一;② 隻需一次創建;③ 提高網絡通信握手連接。

  因篇幅原因,以下函數將隻列出函數格式和功能說明。

  (2)關(guan) 閉通信通道

  函數格式:DWORD COMM_Close (DWORDdwDev/* 通信設備通道*/);

  該函數關(guan) 閉已打開的通信通道(dwDev),釋放通信通道資源,一般在退出係統前使用。

  (3)強製中止通信

  函數格式:DWORD COMM_Break (DWORDdwDev);

  該函數中止當前通信通道(dwDev)的通信。

     (4)通信握手

  函數格式:DWORD COMM_Link (DWORD dwDev/* 通信設備通道*/,

  BYte byDstNo/* 目標顯示屏ID*/,

  char *chHost/* 網絡地址,串口時無效*/,

  WORD wPort/* 網絡端口號,串口時無效*/

  );

  該函數查詢顯示屏是否能夠通信,可在通信之前或監控LED 顯示屏時使用。

  2.3 節目接口

  LED 顯示屏顯示的信息其實是一個(ge) 個(ge) 的節目文件,一般先在上位機控製係統中生成,然後發送到顯示屏上顯示。在設計節目接口時,可能因節目結構不同,細節上有些差別,本文根據如圖3 所示的樹形節目結構設計一種節目接口。

  (1)節目初始化。

  函數格式:

  DWORD Program_Init (DWORD dwProgramType/* 節目類型*/,

  DWORD dwScreenType/* 顯示屏類型*/,

  DWORD dwWidth/* 節目寬度*/,

  DWORD dwHeight/* 節目高度*/

  );

  該函數用於(yu) 在計算機內(nei) 存開辟一塊內(nei) 存空間,或釋放上一次節目占用的資源,為(wei) 節目生成做準備。

  (2)添加區域

  函數格式:

  DWORD Program_AddArea (DWORD dwAreaType/* 區域類型*/,

  LPRECT rect/* 顯示區域*/,

  DWORD &dwAreaNO/* 區域號*/

  );

  在顯示屏頁麵上,根據節目的要求,需要劃分不同的區域,設置其起點和寬高。可使用該函數在當前顯示頁麵上創建一個(ge) 個(ge) 的區域,以放置具體(ti) 的顯示對象,例如內(nei) 碼文字、時鍾等。

  (3)添加各種對象。

  在頁麵的區域上,可添加單行文字、多行文字、內(nei) 碼文字、圖片、視頻動畫、WORD 文檔、Flash 動畫、表格、數字時鍾、模擬時鍾、倒計時等各種顯示對象,在實現時,每一種對象對應一個(ge) 函數。這裏列出常用的添加圖片的函數:

  函數格式:

  DWORD Program_AddPicture(DWORD dwAreaNO/* 區域號*/,

  HDC dc/* 圖形dc*/,

  DWORD dwWidth/* 圖片寬*/,

  DWORD dwHeight/* 圖片高*/,

  LPRECT rect/* 顯示區域*/,

  DWORD dwAction/* 特效號*/,

  DWORD dwExitAction/* 退出特效號*/,

  DWORD dwSpeed/* 顯示速度*/,

  DWORD dwTimecount/* 顯示時間*/,

  DWORD dwTransparent/* 透明與(yu) 否*/);

  該函數在指定區域上添加一個(ge) 圖片,顯示內(nei) 容來自於(yu) dc.

  (4)節目數據生成。

  函數格式:DWORD Program_MakeData()。

  該函數生成節目數據, 以便使用LEDControl_SendToScreen 函數發送到不同的顯示屏。

  2.4 命令接口

  命令接口主要為(wei) 控製、監控和發送節目數據而設計,例如,火車站或街頭的廣告屏,在夜間人少時,廣告效果不明顯,同時也為(wei) 了省電,可在指定夜間時間點關(guan) 閉顯示屏,然後到早晨指定時間點自動打開顯示屏。經過總結,命令接口的命令包括:

  (1)重啟命令。

  函數格式:DWORD LEDControl_Reboot(DWORD dwDev, BYTE byDstNo, char *chHost,WORD wPort);

  該函數用來重啟指定的LED 顯示屏。

       (2)電源控製。

  函數格式:DWORD LEDControl_SetPower(DWORD dwDev, BYTE byDstNo, char chHost,WORD wPort, DWORD dwPower/* 開或關(guan) 標識*/);

  該函數打開或關(guan) 閉顯示屏。

  (3)顯示屏亮度調節。

  函數格式:DWORD LEDControl_SetBrightness(DWORD dwDev, BYTE byDstNo, char *chHost,WORD wPort, BYTE byBrightness/* 亮度*/);

  該函數用於(yu) 調節顯示屏亮度。

  (4)校時。

  函數格式:DWORD LEDControl_AdjustTime(DWORD dwDev, BYTE byDstNo, char *chHost,WORD wPort);

  該函數用於(yu) 計算機時鍾校正顯示屏時鍾。

  (5)節目發送接口。

  函數格式:DWORD LEDControl_SendToScreen(DWORD dwDev, BYTE byDstNo, char *chHost,WORD wPort);

  該函數將Program_MakeData 生成的節目數據發送到顯示屏,最後返回狀態值,表示成功、失敗及其它狀態,用戶根據狀態再進行相應的處理。

  (6)局部更新節目接口。

  函數格式:DWORDLEDControl_UpdateCodeText (DWORD dwDev,BYTE byDstNo, char *chHost, WORD wPort,char *chCodeText/* 字符串緩衝(chong) 區*/, int iLen/*字符串長度*/);

  該函數用來更新顯示屏局部內(nei) 容。對於(yu) 一些信息發布,一般隻需要更新局部的內(nei) 容,例如車站大廳信息發布,顯示屏劃分很多的區域,有數字時鍾、模擬時鍾、圖片、動畫和文字等不同的區域,一般往往隻更新文字部分內(nei) 容,即可達到信息發布的目的,同時不用生成節目,節省了時間和提高了效率。

  3 二次開發接口的應用

  二次開發接口一般都是以動態鏈接庫的形式提供給用戶,並提供主流開發語言的接口和例程,例如VC、C#、Delphi 和VB 等。一般的調用流程是:

  (1)載入動態鏈接庫;(2)建立通信通道;(3)進行顯示屏控製、監控操作;(4)進行節目製做、發送和更新;(5)關(guan) 閉通信通道;(6)釋放動態鏈接庫,完成二次開發接口的調用。

  4 結論

  本文針對LED 顯示屏工程應用中對二次開發接口的需求,提出了一種LED 顯示屏二次開發接口的方法,將二次開發接口總結為(wei) 通信通道、節目和命令三種接口,並在網絡先鋒控製卡係列產(chan) 品中應用。實踐證明,該方法可讓用戶在係統集成中,簡單、快速地實現其二次開發功能,同時降低係統集成的周期和代價(jia) 。

轉載請注明出處。

免責聲明

① 凡本網未注明其他出處的作品,版權均屬於(yu) fun88网页下载,未經本網授權不得轉載、摘編或利用其它方式使用。獲本網授權使用作品的,應在授權範圍內(nei) 使 用,並注明"來源:fun88网页下载”。違反上述聲明者,本網將追究其相關(guan) 責任。
② 凡本網注明其他來源的作品及圖片,均轉載自其它媒體(ti) ,轉載目的在於(yu) 傳(chuan) 遞更多信息,並不代表本媒讚同其觀點和對其真實性負責,版權歸原作者所有,如有侵權請聯係我們(men) 刪除。
③ 任何單位或個(ge) 人認為(wei) 本網內(nei) 容可能涉嫌侵犯其合法權益,請及時向本網提出書(shu) 麵權利通知,並提供身份證明、權屬證明、具體(ti) 鏈接(URL)及詳細侵權情況證明。本網在收到上述法律文件後,將會(hui) 依法盡快移除相關(guan) 涉嫌侵權的內(nei) 容。

網友點評
0相關評論
精彩導讀