戀夜直播app官方正版下载_戀夜直播高品质美女在线视频互动社区_戀夜直播官方版

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

LED顯示屏二次開發(fā)接口的設(shè)計(jì)(二)

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

2 關(guān)鍵功能的設(shè)計(jì)和實(shí)現(xiàn) 2.1 通信協(xié)議設(shè)計(jì) LED 顯示屏二次開發(fā)接口設(shè)計(jì)的首要工作是定義控制端與LED 顯示屏之間的通信協(xié)議。為了實(shí)現(xiàn)簡便并對用戶透明,這里所有通信方...

       2 關(guān)鍵功能的設(shè)計(jì)和實(shí)現(xiàn)

  2.1 通信協(xié)議設(shè)計(jì)

  LED 顯示屏二次開發(fā)接口設(shè)計(jì)的首要工作是定義控制端與LED 顯示屏之間的通信協(xié)議。為了實(shí)現(xiàn)簡便并對用戶透明,這里所有通信方式皆采用同一協(xié)議,每一個(gè)命令都成對出現(xiàn),對應(yīng)命令和返回命令,如表1 和表2 所示。

表1 命令格式

 %%%%%%%%%%2

表2 返回命令格式

 %%%%%%%%%%3

  各參數(shù)說明:

 ?。?)命令類型:標(biāo)注命令類型ID,如通信握手命令、文件傳輸以及其它控制指令等;

 ?。?)命令號:如果某一類型命令有多個(gè),不同的命令號表示該類不同的命令;

 ?。?)目標(biāo)ID:指顯示屏ID,默認(rèn)值為0x01;

 ?。?)源ID:指控制端ID,默認(rèn)為0x00;

 ?。?)長度:指具體命令實(shí)際數(shù)據(jù)長度;

  (6)數(shù)據(jù):具體命令的數(shù)據(jù)或返回結(jié)果;

  (7)校驗(yàn)和:除校驗(yàn)和外所有該協(xié)議數(shù)據(jù)的校驗(yàn)和數(shù)據(jù),一般使用算術(shù)和即可。

  命令傳輸邏輯如下:

  (1)發(fā)送方在發(fā)送具體的命令之前,先發(fā)送一個(gè)通信握手命令:

  控制源端- - - - - - - - - - 發(fā)送通信握手命令- - - - - - - - - - 》 顯示屏控制源端《- - - - - - - - - - 返回通信握手命令- - - - - - - - - - 顯示屏

  控制源端收到結(jié)果正確,則表示顯示屏已經(jīng)做好接收數(shù)據(jù)準(zhǔn)備,可以開始發(fā)送具體命令。如果收不到顯示屏的任何返回,需要檢查物理鏈路是否正常,串口的波特率設(shè)置是否正常等。

 ?。?) 發(fā)送方把具體命令數(shù)據(jù)按前面的格式進(jìn)行打包發(fā)送到顯示屏,顯示屏在收到數(shù)據(jù)包后會對數(shù)據(jù)進(jìn)行校驗(yàn)檢查。如果校驗(yàn)失敗,則請求重發(fā)。

 ?。?)發(fā)送方的命令成功發(fā)送到顯示屏后,顯示屏按協(xié)議包格式把控制卡執(zhí)行的結(jié)果反饋到發(fā)送方。如果校驗(yàn)失敗,請求顯示屏重發(fā)執(zhí)行結(jié)果數(shù)據(jù);否則發(fā)送結(jié)束結(jié)果給顯示屏,結(jié)束命令過程。

  (4) 如果(2)中指令是文件傳輸指令,則重復(fù)(2)、(3),直到文件傳輸結(jié)束。

  在通信過程中,發(fā)送方要強(qiáng)制結(jié)束發(fā)送過程,可以發(fā)送通信握手命令或強(qiáng)制中止通信進(jìn)行強(qiáng)制終止。

  2.2 通信通道接口

  在對LED 顯示屏進(jìn)行通信之前,必須先建立通信通道,而退出系統(tǒng)時(shí),則釋放通信通道資源。通信通道接口包括:

 ?。?)打開通信通道

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

  參數(shù)說明:

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

  返回值:

  ① 0:表示創(chuàng)建失??;② 其它值:表示設(shè)備通道值。

  功能描述:

  該函數(shù)用來建立一個(gè)通信通道,函數(shù)運(yùn)行一次即建立一個(gè)通道,建立成功就返回一個(gè)DWORD值,代表一個(gè)設(shè)備的句柄,用于區(qū)分不同的通道。該值供其它接口函數(shù)使用,以便對不同的顯示屏進(jìn)行控制。

  物理上支持串口通道、網(wǎng)絡(luò)通道,對于串口,設(shè)置串口號、波特率、接收/ 發(fā)送緩沖區(qū),然后打開串口;對于網(wǎng)絡(luò),設(shè)置本地IP、端口號、接收/ 發(fā)送緩沖區(qū),然后打開網(wǎng)口。這里需要特別強(qiáng)調(diào)的是,網(wǎng)絡(luò)采用UDP 方式,這主要是為了:

 ?、?在協(xié)議實(shí)現(xiàn)上與串口統(tǒng)一;② 只需一次創(chuàng)建;③ 提高網(wǎng)絡(luò)通信握手連接。

  因篇幅原因,以下函數(shù)將只列出函數(shù)格式和功能說明。

 ?。?)關(guān)閉通信通道

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

  該函數(shù)關(guān)閉已打開的通信通道(dwDev),釋放通信通道資源,一般在退出系統(tǒng)前使用。

 ?。?)強(qiáng)制中止通信

  函數(shù)格式:DWORD COMM_Break (DWORDdwDev);

  該函數(shù)中止當(dāng)前通信通道(dwDev)的通信。

     (4)通信握手

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

  BYte byDstNo/* 目標(biāo)顯示屏ID*/,

  char *chHost/* 網(wǎng)絡(luò)地址,串口時(shí)無效*/,

  WORD wPort/* 網(wǎng)絡(luò)端口號,串口時(shí)無效*/

  );

  該函數(shù)查詢顯示屏是否能夠通信,可在通信之前或監(jiān)控LED 顯示屏?xí)r使用。

  2.3 節(jié)目接口

  LED 顯示屏顯示的信息其實(shí)是一個(gè)個(gè)的節(jié)目文件,一般先在上位機(jī)控制系統(tǒng)中生成,然后發(fā)送到顯示屏上顯示。在設(shè)計(jì)節(jié)目接口時(shí),可能因節(jié)目結(jié)構(gòu)不同,細(xì)節(jié)上有些差別,本文根據(jù)如圖3 所示的樹形節(jié)目結(jié)構(gòu)設(shè)計(jì)一種節(jié)目接口。

 ?。?)節(jié)目初始化。

  函數(shù)格式:

  DWORD Program_Init (DWORD dwProgramType/* 節(jié)目類型*/,

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

  DWORD dwWidth/* 節(jié)目寬度*/,

  DWORD dwHeight/* 節(jié)目高度*/

 ?。?;

  該函數(shù)用于在計(jì)算機(jī)內(nèi)存開辟一塊內(nèi)存空間,或釋放上一次節(jié)目占用的資源,為節(jié)目生成做準(zhǔn)備。

 ?。?)添加區(qū)域

  函數(shù)格式:

  DWORD Program_AddArea (DWORD dwAreaType/* 區(qū)域類型*/,

  LPRECT rect/* 顯示區(qū)域*/,

  DWORD &dwAreaNO/* 區(qū)域號*/

 ?。?;

  在顯示屏頁面上,根據(jù)節(jié)目的要求,需要?jiǎng)澐植煌膮^(qū)域,設(shè)置其起點(diǎn)和寬高??墒褂迷摵瘮?shù)在當(dāng)前顯示頁面上創(chuàng)建一個(gè)個(gè)的區(qū)域,以放置具體的顯示對象,例如內(nèi)碼文字、時(shí)鐘等。

 ?。?)添加各種對象。

  在頁面的區(qū)域上,可添加單行文字、多行文字、內(nèi)碼文字、圖片、視頻動畫、WORD 文檔、Flash 動畫、表格、數(shù)字時(shí)鐘、模擬時(shí)鐘、倒計(jì)時(shí)等各種顯示對象,在實(shí)現(xiàn)時(shí),每一種對象對應(yīng)一個(gè)函數(shù)。這里列出常用的添加圖片的函數(shù):

  函數(shù)格式:

  DWORD Program_AddPicture(DWORD dwAreaNO/* 區(qū)域號*/,

  HDC dc/* 圖形dc*/,

  DWORD dwWidth/* 圖片寬*/,

  DWORD dwHeight/* 圖片高*/,

  LPRECT rect/* 顯示區(qū)域*/,

  DWORD dwAction/* 特效號*/,

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

  DWORD dwSpeed/* 顯示速度*/,

  DWORD dwTimecount/* 顯示時(shí)間*/,

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

  該函數(shù)在指定區(qū)域上添加一個(gè)圖片,顯示內(nèi)容來自于dc.

 ?。?)節(jié)目數(shù)據(jù)生成。

  函數(shù)格式:DWORD Program_MakeData()。

  該函數(shù)生成節(jié)目數(shù)據(jù), 以便使用LEDControl_SendToScreen 函數(shù)發(fā)送到不同的顯示屏。

  2.4 命令接口

  命令接口主要為控制、監(jiān)控和發(fā)送節(jié)目數(shù)據(jù)而設(shè)計(jì),例如,火車站或街頭的廣告屏,在夜間人少時(shí),廣告效果不明顯,同時(shí)也為了省電,可在指定夜間時(shí)間點(diǎn)關(guān)閉顯示屏,然后到早晨指定時(shí)間點(diǎn)自動打開顯示屏。經(jīng)過總結(jié),命令接口的命令包括:

 ?。?)重啟命令。

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

  該函數(shù)用來重啟指定的LED 顯示屏。

       (2)電源控制。

  函數(shù)格式:DWORD LEDControl_SetPower(DWORD dwDev, BYTE byDstNo, char chHost,WORD wPort, DWORD dwPower/* 開或關(guān)標(biāo)識*/);

  該函數(shù)打開或關(guān)閉顯示屏。

  (3)顯示屏亮度調(diào)節(jié)。

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

  該函數(shù)用于調(diào)節(jié)顯示屏亮度。

 ?。?)校時(shí)。

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

  該函數(shù)用于計(jì)算機(jī)時(shí)鐘校正顯示屏?xí)r鐘。

 ?。?)節(jié)目發(fā)送接口。

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

  該函數(shù)將Program_MakeData 生成的節(jié)目數(shù)據(jù)發(fā)送到顯示屏,最后返回狀態(tài)值,表示成功、失敗及其它狀態(tài),用戶根據(jù)狀態(tài)再進(jìn)行相應(yīng)的處理。

 ?。?)局部更新節(jié)目接口。

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

  該函數(shù)用來更新顯示屏局部內(nèi)容。對于一些信息發(fā)布,一般只需要更新局部的內(nèi)容,例如車站大廳信息發(fā)布,顯示屏劃分很多的區(qū)域,有數(shù)字時(shí)鐘、模擬時(shí)鐘、圖片、動畫和文字等不同的區(qū)域,一般往往只更新文字部分內(nèi)容,即可達(dá)到信息發(fā)布的目的,同時(shí)不用生成節(jié)目,節(jié)省了時(shí)間和提高了效率。

  3 二次開發(fā)接口的應(yīng)用

  二次開發(fā)接口一般都是以動態(tài)鏈接庫的形式提供給用戶,并提供主流開發(fā)語言的接口和例程,例如VC、C#、Delphi 和VB 等。一般的調(diào)用流程是:

  (1)載入動態(tài)鏈接庫;(2)建立通信通道;(3)進(jìn)行顯示屏控制、監(jiān)控操作;(4)進(jìn)行節(jié)目制做、發(fā)送和更新;(5)關(guān)閉通信通道;(6)釋放動態(tài)鏈接庫,完成二次開發(fā)接口的調(diào)用。

  4 結(jié)論

  本文針對LED 顯示屏工程應(yīng)用中對二次開發(fā)接口的需求,提出了一種LED 顯示屏二次開發(fā)接口的方法,將二次開發(fā)接口總結(jié)為通信通道、節(jié)目和命令三種接口,并在網(wǎng)絡(luò)先鋒控制卡系列產(chǎn)品中應(yīng)用。實(shí)踐證明,該方法可讓用戶在系統(tǒng)集成中,簡單、快速地實(shí)現(xiàn)其二次開發(fā)功能,同時(shí)降低系統(tǒng)集成的周期和代價(jià)。

 

轉(zhuǎn)載請注明出處。

暫無關(guān)鍵詞
免責(zé)聲明

① 凡本網(wǎng)未注明其他出處的作品,版權(quán)均屬于激光制造網(wǎng),未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用。獲本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使 用,并注明"來源:激光制造網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)責(zé)任。
② 凡本網(wǎng)注明其他來源的作品及圖片,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本媒贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé),版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系我們刪除。
③ 任何單位或個(gè)人認(rèn)為本網(wǎng)內(nèi)容可能涉嫌侵犯其合法權(quán)益,請及時(shí)向本網(wǎng)提出書面權(quán)利通知,并提供身份證明、權(quán)屬證明、具體鏈接(URL)及詳細(xì)侵權(quán)情況證明。本網(wǎng)在收到上述法律文件后,將會依法盡快移除相關(guān)涉嫌侵權(quán)的內(nèi)容。

網(wǎng)友點(diǎn)評
0相關(guān)評論
精彩導(dǎo)讀