LED异步屏动态库使用说明V161.docx
《LED异步屏动态库使用说明V161.docx》由会员分享,可在线阅读,更多相关《LED异步屏动态库使用说明V161.docx(23页珍藏版)》请在冰豆网上搜索。
LED异步屏动态库使用说明V161
LED异步屏动态库使用说明
TYLED动态库提供了一组方便直观的操作函数,使用户能快速对TY-AS系统LED控制卡进行二次开发。
TYLED.dll采用标准DLL结构,可被各种语言调用。
TYLed.DLL支持一台电脑同时与多个显示屏建立连接,支持网络和串行通信接口的显示屏设备混合使用;对串行通信方式,支持多串口;支持后台线程发送,相容多任务程序设计和管理。
一、动态库使用方法和步骤
动态库TYLed.dll和各种开发语言的函数原型和常数定义放在“DLL及函数原型文件V1.xx”目录。
各语言的函数原型和常数定义文件:
VC6:
TYLedDLL.h,TYLedDLL2.h(用于DLL显式加载)
VB6:
TYLedDLL.bas
VB2010(VB.Net):
TYLedDLL.vb
VC#2010:
LedDLL.cs
Delphi7:
TYLedDLL.pas。
A、在VisualC++6.0下的使用步骤
1、将TYLed.DLL拷入到执行文件目录或Windows系统目录或Windows目录;
2、将头文件TYLedDLL.h和TYLed.lib拷入工程目录;
3、在ProjectSettings\Link\Object|LibraryModule中增加TYled.lib项,在需要调用库函数的源代码文件前加入#include“TYLedDLL.h”
如果使用显示加载动态库,则不需要TYLed.lib。
头文件用TYLedDLL2.h。
B、其它开发语言
1、将TYLed.DLL拷入到执行文件目录或Windows系统目录或Windows目录;
注:
一些开发语言如VB6,在IDE下启动程序时,执行文件目录认为是VB6.exe目录。
2、将相应语言的函数原型文件拷入到开发工程的项目目录下。
并在IDE中,将相应的函数原型文件作为公共模块加入到工程中。
如对VB6,选择“工程”-“添加模块”-“现存”-选TYLedDLL.bas,即将TYLedDLL.bas加入到公共模块。
对C#,选择“项目”-“添加现有项”,将LedDLL.cs加入。
对Delphi7,要在主程序的uses下加单元名TYLedDLL。
请参见相关语言DLL测试示例源代码。
C、扩展库的使用
扩展库TYLed_Ex.dll支持Word和Excel文件的显示,但库文件较大,使用的系统资源比TYLed.dll多。
如果需要使用TYLed_Ex.dll,将TYLed_Ex.dll和TYLed_Ex.lib(仅VC使用)分别改名为TYLed.dll和TYLed.lib,再按上述步骤操作即可。
二、LED显示屏基本编程步骤
A、单页方式
单页方式操作简单,能适应大部分应用,只有一个窗口,每次发送一幅画面到LED屏。
1、根据显示屏的通信接口调用相应的连接函数建立与LED显示屏的连接。
建立连接后会获得一个连接号,以后使用该连接号控制LED屏的操作。
建立连接后DLL会在内存中自动创建一个与显示屏对应的内存映象画面。
2、在内存画面上设置字体、书写文字、画线等;
3、将画面内容作为即时信息传送到LED显示屏,LED屏显示画面内容;
4、重复以上2和3步骤或者关闭连接退出。
注:
长时间不用的连接,宜先关断。
详见DLL测试程序中“发送画面(内容1)”和“发送画面(内容2)”按键的响应程序。
B、多节目多窗口多文件方式
多节目多窗口方式适应比较复杂的显示场合。
有二种方法支持此方式:
1、先用“LED节目编辑程序”编辑好LED播放文件(.aled),之后使用以这个.aled文件为模板,进行播放窗及显示项目及内容的编辑,以对显示屏进行控制。
2、在内存中动态创建播放文件,然后添加节目、播放窗和显示项。
方法1最直观,功能最全面,且可模拟显示效果。
基本步骤如下:
1、根据LED屏的通信接口调用相应的连接函数建立与LED显示屏的连接,连接建立后会获得一个连接号,以后使用该连接号控制LED屏的操作。
2、载入外部*.aled播放文件,或在内存中创建新的空的播放文件。
3、进行节目、播放窗和显示项目的增、删和修改。
应用最多的是对LED播放文件中某节目下的文档窗下面的显示文件项进行相关操作,如改变显示文件的内容,使用内存画面更新显示项,将内存画面作为显示项目插入到文档窗,更新文本文件的内容等。
4、调用SendToLED函数将LED播放文件作为即时信息发送到LED显示屏,LED屏将插播接受到的播放文件。
5、重复以上3和4步骤或者关闭连接退出。
详见DLL测试程序中“发送LED播放文(载入文件)”和“发送LED播放文(动态创建)”按键的响应程序。
播放文件(*.aled)简述:
播放文件(*.aled)由“LED节目编辑”程序编辑产生,它有点像批处理文件或开发语言中的工程文件。
播放文件包含节目、窗口和显示项的位置及控制信息,例如窗口大小、位置,显示文件的路径、显示方式等等。
除内置文本外,播放文件本身不包含显示内容,显示内容在显示文件中。
三、动态库中使用的结构
动态库程序使用如下结构。
各成员变量即含义如下:
typedefstruct
{
intiID;//LED设备连接号。
32位数
intiWidth;//显示屏宽度(象素点)。
32位数
intiHeight;//显示屏宽度(象素点)。
32位数
BYTEcScrType;//1=双基色屏(4色);2=单色屏。
8位无符号数
BYTEcScrNo;//屏号(屏地址)。
8位无符号数
BYTEcCard;//LED型号和状态。
8位无符号数
BYTEcRev1;
DWORDdwRev1;//保留1:
32位无符号数
DWORDdwRev2;//保留2:
32位无符号数
}LEDDEV;
当与LED显示屏建立连接时,使用此结构存放连接号和LED设备参数。
typedefstructtagDATE_ST
{
WORDwYear;//年。
16位无符号数
BYTEcMonth;//月。
8位无符号数
BYTEcDay;//日。
8位无符号数
}DATE_ST;
此结构用于日期计数和倒计数窗的设置起点或终至日期。
四、动态库函数说明
以下均以C语言函数原型格式进行说明,其它语言参见相应的函数原型文件。
1、建立连接函数
在控制LED显示前,要先与LED屏建立连接。
根据所用的通信接口,调用相应的连接函数。
(1)网络通信连接函数
intConnectToLED_TCPIP(BYTE*pIP,WORDwPortNo,UINTiConnectTimeOut,UINTiRvTimeOut,LEDDEV*pDev);
pIP:
指向4字节的IP地址的指针。
4个字节内容是显示屏的IP地址。
wPortNo:
端口号。
16位无符号数。
iConnectTimeOut:
与LED屏建立连接时的超时等待时间,单位:
毫秒ms。
例如,当显示屏没加电时,连接将失败,这个值决定最长等待时间。
应根据网络情况来设置这个时间值。
在网络响应慢或者跨网段控制时,该值要适当加大。
iConnectTimeOut是32位无符号数。
iRvTimeOut:
数据包发出后,等待响应的时间(单位:
毫秒ms),超过该时间没收到响应认为出错。
局域网可设置小一点,网络忙或互连网要适当加大。
示例程序设置为3300ms。
iRvTimeOut是32位无符号数。
pDev:
指向LEDDEV结构的指针(地址),用来接受LED连接号和屏参数。
函数成功将返回ERR_OK(0),否则返回一个错误代码,代码详见附一。
LEDDEV是设备结构,包括连接号iID、LED屏宽度、高度和类型等信息。
以后对该显示屏的操作均要使用这个连接号iID。
参见TYLedDLL.h。
对已连接的显示屏(IP和端口号相同),再调用此函数,将关闭之前的连接,重建连接。
(2)串行通信连接函数
对RS232和RS485通信,以及模拟串行口的一些无线模块通信,使用下面的函数与LED屏建立连接。
intConnectToLED_RS232(BYTEcScrNo,DWORDiCOMSNo,DWORDdwBaudNo,LEDDEV*pDev);
cScrNo:
显示屏的编号,用于多屏识别用。
8位无符号数。
iCOMSNo:
串口设备序号,1=COM1,2=COM…。
32位无符号数。
dwBaudNo:
波特率号。
0=9600,1=19200,2=38400,3=57600,4=115200。
32位无符号整数。
pDev:
指向LEDDEV结构的指针(地址),用来接受LED连接号和屏参数。
函数成功将返回ERR_OK(0),否则返回一个错误代码,代码详见附一。
LEDDEV是设备结构,包括连接号iID、LED屏宽度、高度和类型等信息。
以后对该显示屏的操作均要使用这个连接号iID。
参见TYLedDLL.h。
一个COM端口一次只能与一块显示屏建立连接,当调用此函数时,会关闭使用此端口的任何连接,再重新建立与指定显示屏的连接。
提示:
LED显示屏的屏号、波特率及屏类型和大小在加电时会在屏右上角上显示。
这些配置参数可由“LED节目编辑”程序设置。
2、关闭连接函数
BOOLCloseLEDConnect(intiID)
关闭连接号iID指定的连接,释放Socket或串口资源及其它相关的资源。
iID:
连接号,建立连接时获得。
32位整数。
函数成功将返回TRUE
(1),否则返回一个FALSE(0)。
失败的原因通常是iID不对。
3、发送函数
(1)发送内存画面函数
intSendImageToLED(intiID,BYTEcInMode,BYTEcInSpeed,WORDwStay,BYTEcOutMode,BYTEcOutSpeed,BYTEcPlayCon,WORDwTimeOrLoops,BOOLbWaitSend)
将当前内存画面的内容作为即时信息发送到LED屏上显示。
iID:
连接号,建立连接时获得。
32位整数。
cInMode:
画面进入方式,8位字节。
进入方式代码见附二。
cInSpeed:
画面进入速度,8位字节。
0最慢,16中速,32最快。
wStay:
画面静止不动的时间,单位是0.1秒。
16位无符号数。
cOutMode:
画面退出方式,8位字节。
退出方式代码见附二。
cOutSpeed:
画面退出速度,8位字节。
0最慢,16中速,32最快。
注:
每个画面都由进入、静止显示和退出三个阶段组成一个显示周期(1轮)。
因为这里只有单页画面,因此将不断重复这个过程。
如果不希望画面动作,可将进入方式设为1(直接显示),退出方式设为1(保持)。
cPlayCon:
播放控制。
0=循环显示;1=定时,显示wTimeOrLoops秒后返回去播放FLASH内容;2=按轮次,当显示wTimeOrLoops轮后返回去播放FLASH内容。
wTimeOrLoops:
cPlayCon为1或2时有效。
表示定时时间(秒)或显示多少轮次。
bWaitSend:
是否等待发送结束。
为TRUE则等待发送完成;为FALSE则立即返回,发送过程在后台进行。
32位Boolean值。
函数成功将返回ERR_OK(0),否则返回一个错误代码,代码详见附一。
发送内容不多时采用等待发送以减少程序管理难度。
使用后台发送,主程序不用等待,但程序管理难度大些。
主程序可通过GetSendStatus()了解发送进度及是否完成。
(2)发送.aled播放文件
intSendToLED(intiID,BYTEcPlayCon,WORDwTimeOrLoops,BOOLbWaitSend)
将当前内存中的LED播放文件及其包含的显示内容作为即时信息发送到LED屏并显示。
调用此函数前要保证已载入.aled播放文件或创建了内存播放文件。
iID:
连接号,建立连接时获得。
32位整数。
cPlayCon:
播放控制。
0=循环显示;1=定时,显示wTimeOrLoops秒后返回去播放FLASH内容;2=按轮次,当显示wTimeOrLoops轮后返回去播放FLASH内容。
注:
播放文件的1轮指播放文件的所有节目全部播放完成1次。
wTimeOrLoops:
cPlayCon为1或2时有效。
表示定时时间(秒)或显示多少轮次。
bWaitSend:
是否等待发送结束。
为TRUE则等待发送完成,为FALSE则立即返回,发送过程在后台进行。
32位Boolean值。
函数成功将返回ERR_OK(0),否则返回一个错误代码,代码详见附一。
发送内容很多时可采用后台发送,主程序不用等待,发送时可以做其它的事,但程序管理难度大些。
主程序可通过GetSendStatus()了解发送进度及是否完成。
(3)发送.aled播放文件到FLASH
intSendToFLASH(intiID,BOOLbWaitSend)
将当前内存中的LED播放文件及其包含的显示内容发送到LED屏并显示。
该函数将播放文件保存到LED的FLASH存贮器中。
调用此函数前要保证已载入.aled播放文件或创建了播放文件。
FLASH是LED屏上用来保持永久内容的存贮器,断电不消失,容量大,但有写次数寿命限制,如果频繁写入不要使用些函数。
通常内容多,不经常改动的信息使用FLASH。
iID:
连接号,建立连接时获得。
32位整数。
bWaitSend:
是否等待发送结束。
为TRUE则等待发送完成,为FALSE则立即返回,发送过程在后台进行。
32位Boolean值。
函数成功将返回ERR_OK(0),否则返回一个错误代码,代码详见附一。
发送内容很多时可采用后台发送,主程序不用等待,发送时可以做其它的事,但程序管理难度大些。
主程序可通过GetSendStatus()了解发送进度及是否完成。
4、播放控制及状态
(1)返回到FLASH播放函数
intReturnToFlashPlay(intiID)
该函数使得LED显示屏退出即时信息播放,返回去播放固化在FLASH中的播放文件。
iID:
连接号,建立连接时获得。
32位整数。
函数成功将返回ERR_OK(0),否则返回一个错误代码,代码详见附一。
注:
正在后台发送期间不要调用此函数。
(2)获得发送状态函数
intGetSendStatus(intiID);
获得发送状态。
仅当发送时选择后台发送(bWaitSend=FALSE)时才用此函数。
iID:
连接号,建立连接时获得。
32位整数。
返回值:
100表示发送成功完成;小于100表示正在发送的进度值(%);大于100表示出错,错误代码=(返回值-100)。
错误代码详见附一。
(3)停止发送函数
intStopSend(intiID);
停止在后台进行的发送。
仅当发送时选择后台发送(bWaitSend=FALSE)时才可用此函数。
iID:
连接号,建立连接时获得。
32位整数。
函数成功将返回ERR_OK(0),否则返回一个错误代码,代码详见附一。
5、内存画面操作函数
当与LED屏建立连接后,DLL会自动在电脑中创建与LED显示屏象素大小相同的内存映象画面。
可在画面上写文字、画线等,并可使用画面内容更新播放文件中的显示项。
(1)清画面内容
BOOLImage_Clear(intiID);
将画面内容擦掉。
重新写内容时,通常需要先清画面。
iID:
连接号,建立连接时获得。
32位整数。
函数成功返回TRUE
(1),失败返回FALSE(0)。
(2)设置内存画面字体
BOOLImage_SetFont(intiID,LPCSTRszFontName,intiCharWidth,intiCharHeight,BOOLbBold,BOOLbItalic)
设置画面写入文字时的字体。
字体设置后,之后的文字写入就使用该字体
iID:
连接号,建立连接时获得。
32位整数。
szFontName:
字体名称,如“宋体”等。
以0结尾的串。
iCharWidth:
英文字符宽(象素点),汉字宽度为英文字符的2倍。
32位整数。
iCharHeight:
字符高度(象素点),32位整数。
bBold:
为TRUE时文字加粗。
32位Boolean值。
bItalic:
为TRUE时文字倾斜。
32位Boolean值。
函数成功返回TRUE
(1),失败返回FALSE(0)。
Unicode版本程序调用:
BOOLImage_SetFontW()函数。
(3)在内存画面上写单行文字
BOOLImage_WriteText(intiID,LPCSTRszText,intiX,intiY,COLORREFiColorNo,intiCharSpacing,BOOLbTransparent,BOOLbRightToLeft)
在画面上写文字,此函数只支持单行文字的写入。
iID:
连接号,建立连接时获得。
32位整数。
szText:
要显示的文字串(单行)。
以0结尾的字符串,串长不要大于1024个字。
iX:
文字的写入起点x坐标。
32位整数。
iY:
文字的写入起点y坐标。
32位整数。
iColor:
文字的颜色。
常数RED,GREEN,YELLOW代表红、绿、黄。
32位整数。
iCharSpacing:
字符间距,单位:
象素点,可为负值。
32位整数。
bTransparent:
为TRUE透明写,为FALSE则覆盖。
32位Boolean值。
bRightToLeft:
为TRUE从右到左书写(中东风格)。
32位Boolean值。
函数成功返回TRUE
(1),失败返回FALSE(0)。
Unicode版本程序调用:
BOOLImage_WriteTextW()函数。
串长无限制。
(4)在内存画面上画线
BOOLImage_DrawLine(intiID,intiStartX,intiStartY,intiEndX,intiEndY,COLORREFiColor,BOOLbDashed);
iID:
连接号,建立连接时获得。
32位整数。
iStartX:
线的起点x坐标。
32位整数。
iStartY:
线的起点y坐标。
32位整数。
iEndX:
线的终点x坐标(不包括该点)。
32位整数。
iEndY:
线的终点y坐标(不包括该点)。
32位整数。
iColor:
线的颜色。
常数RED,GREEN,YELLOW代表红、绿、黄。
32位整数。
bDashed:
为TRUE虚线,否则是实线。
32位Boolean值。
函数成功返回TRUE
(1),失败返回FALSE(0)。
(5)在内存画面上画矩形框
BOOLImage_DrawRect(intiID,intiLeft,intiTop,intiRight,intiBottom,COLORREFiColor,BOOLbDashed)
iID:
连接号,建立连接时获得。
32位整数。
iLeft:
矩形的左上角x坐标。
32位整数。
iTop:
矩形的左上角y坐标。
32位整数。
iRight:
矩形的右下角x坐标(不包括该点)。
32位整数。
iBottom:
矩形的右下角y坐标(不包括该点)。
32位整数。
iColor:
线的颜色。
常数RED,GREEN,YELLOW代表红、绿、黄。
32位整数。
bDashed:
为TRUE虚线,否则是实线。
32位Boolean值。
函数成功返回TRUE
(1),失败返回FALSE(0)。
(6)在内存画面上显示图形文件
BOOLImage_DrawPicFile(intiID,LPCSTRszPicFile,intiX,intiY,BYTEcRGBMin)
将图形文件画在画面上(x,y)位置。
图象尺寸大于画面时,取左上角部分。
iID:
连接号,建立连接时获得。
32位整数。
szPicFile:
图形文件名,以0结尾的串。
支持BMP,GIF,JPG,PNG,ICO,PCX等几十种文件。
iX:
图形文件显示在画面上的起点x坐标。
32位整数。
iY:
图形文件显示在画面上的起点y坐标。
32位整数。
cRGBMin:
图象RGB过滤值,RGB大于些值才显示。
32位整数。
函数成功返回TRUE
(1),失败返回FALSE(0)。
Unicode版本程序调用:
BOOLImage_DrawPicFileW()函数。
(7)在内存画面上显示内存图形文件
BOOLImage_DrawMemPicFile(intiID,BYTE*pMemPicFile,UINTiFileSize,intiPicType,intiX,intiY,BYTEcRGBMin);
将图形文件画在画面上。
图象大于画面时,取左上角部分。
iID:
连接号,建立连接时获得。
32位整数。
pMemPicFile:
内存文件地址。
iFileSize:
内存文件长度。
32位无符号数。
iPicType:
图形文件类型。
1=BMP,2=GIF,3=JPG,4=PNG,5=ICO,6=TIF,7=TGA,8=PCX。
iX:
图形文件显示在画面上的起点x坐标。
32位整数。
iY:
图形文件显示在画面上的起点y坐标。
32位整数。
cRGBMin:
图象RGB过滤值,RGB大于些值才显示。
32位整数。
函数成功返回TRUE
(1),失败返回FALSE(0)。
(8)将内存画面保存为位图文件
BOOLImage_SaveAsBitmapFile(intiID,LPCSTRszBitmapFileName);
iID:
连接号,建立连接时获得。
32位整数。
szBitmapFileName:
要保存的位图文件名。
以0结尾的字符串。
函数成功返回TRUE
(1),失败返回FALSE(0)。
Unicode版本程序调用:
BOOLImage_SaveAsBitmapFileW()函数。
(9)将画面内容显示在MS-Window上
BOOLImage_DrawOnWindow(intiID,HWNDhWnd);
此函数将画面显示在电脑窗口上,可用于模拟或监控。
iID:
连接号,建立连接时获得。
32位整数。
hWnd:
MS-Window窗口句柄。
32位。
函数成功返回TRUE
(1),失败返回FALSE(0)。
6、LED播放文件操作函数
以下所有函数均没有对磁盘文件进行写入操作,因此不会改变磁盘文件的内容。
1个LED播放文件由1个或多个节目组成,1个节目由1个或多个播放窗组成,播放窗有多种类型,其中的文件窗用来显示文件或页面,1个文件窗可包含1个或多个显示项目(可以是文件,内置文本或页面)。
(1)载入LED播放文件
intLoadPlayFile(intiID,LPCSTRszPlayFile);
将磁盘上的LED播放文件(*.aled)载入到内存中。
之前载入或创建的播放文件资源释放。
iID:
连接号,建立连接时获得。
32位整数。
szPlayFile:
LED播放文件名(*.aled)。
以0结尾的字符串。
函数成功将返回ERR_OK(0),否则返回一个错误代码,代码详见附一。
Unicode版本程序调用:
BOOLLoadPlayFileW()函数。
(2)新建LED播放文件
intCreateNewPlayFile(intiID)
在内存中新