CLOcx编程手册.docx
《CLOcx编程手册.docx》由会员分享,可在线阅读,更多相关《CLOcx编程手册.docx(28页珍藏版)》请在冰豆网上搜索。
CLOcx编程手册
CL2005Ocx编程手册
(V
1.2)
第一章简介
1.1调用顺序
本控件中函数的调用顺序如下:
步骤一:
通讯初始化,调用ComInitial、NetInitial或ModemInitial;
步骤二:
控制卡特性设置,调用SetCardProperty;
步骤三:
数据收发,调用数据收发函数;
步骤四:
关闭通讯,调用Close。
如果对联网控制的多个屏进行操作,则在步骤二和步骤三间进行循环。
1.2控制卡的工作模式
CL2005系列控制卡均提供两种工作模式:
图片模式和文字模式。
1.2.1图片模式
在图片模式下,图片数据发送完后,必须调用发送节目表的函数(SendProgList),显示屏才会播放节目。
图片模式中,所有节目均具备移动展开特效。
允许设计定时播放和安排计算安全天数计时等。
1.2.2文字模式
文字模式主要用于对实时显示要求比较高的场合。
此时,显示屏的作用类似于一个写字板,不具备任何定时和移动展开特效,只可以通过函数在显示屏的某个位置输出文字或画水平、垂直线,且文字的输出宽度不能大于显示屏的宽度。
控制卡上有两个显示缓冲区(Bank),可以在这两个显示缓冲区之间切换,即在显示0区的同时可以将输出定到1区,待要显示的内容输出完毕后再将1区切换到显示屏上真正显示出来,此时又可以在0区进行输出。
1.3语言说明
本控件使用VC++语言开发,因此所有涉及的字符串都是指8位以0结尾的字符串。
第二章数据结构
本控件涉及三类数据结构,它们是图片、节目表以及亮度表。
2.1图片的数据结构
C语法:
BYTEPictureBuff[512][256]
Delphi语法:
PictureBuff=Array[
0..511]OfArray[
0..255]OfBYTEBasic语法:
DimPictureBuff[
0..255,
0..511]AsByte
说明:
CL2005系列通讯屏控制卡最大控制宽度达2048列,1个位表示屏上1个点,则宽度使用256个8位的字节;最大控制高度为512行。
与显示屏对应的显示数据存储在数据缓冲区的左上角。
若是双色屏,则先按照显示屏的实际高度先存储红色数据,然后紧接着存储绿色数据。
例如,若显示屏的高度为128行,则PictureBuf[0]-PictureBuf[127]存储128行红色数据,PictureBuf[128]-PictureBuf[255]存储绿色数据。
2.2节目表
C语法:
structProgStruct{BYTEPictIndex;
BYTEEnter;
BYTELeave;
BYTESpeed;
BYTEStayTime;
BYTEbFollowPlay;
BYTEbShowTimer;
BYTEbTimerPlay;
BYTETimerMode;
BYTEWeekFlag;
BYTEStartHour;
BYTEStartMinute;
BYTEEndHour;
BYTEEndMinute;
BYTENotUsed0;
BYTENotUsed1;}Delphi语法:
ProgStruct=Record
PictIndex:
BYTE;
Enter:
BYTE;
Leave:
BYTE;
Speed:
BYTE;
StayTime:
BYTE;
bFollowFlag:
BYTE;
bShowTimer:
BYTE;
bTimerPlay:
BYTE;
TimerMode:
BYTE;
WeekFlag:
BYTE;
StartHour:
BYTE;
StartMinute:
BYTE;
EndHour
EndMinute
NotUsed0
NotUsed1
End;
Basic语法:
TypeProgStruct
PictIndex
Enter
Leave
Speed
StayTime
bFollowFlag
bShowTimer
bTimerPlay
TimerMode
WeekFlag
StartHour
StartMinute
EndHour
EndMinute
NotUsed0
NotUsed1
EndType
说明:
PictIndex
Enter
Leave
Speed
StayTime:
BYTE;:
BYTE;:
BYTE;:
BYTE;
AsByte
AsByte
AsByte
AsByte
AsByte
AsByte
AsByte
AsByte
AsByte
AsByte
AsByte
AsByte
AsByte
AsByte
AsByte
AsByte:
本节目项播出的图片索引;:
进入方式代码,参见第六章;:
退出方式代码,参见第六章;:
移动或展开、擦除的速度,0-15,15最快,0最慢;:
停留时间,0-126。
D7为单位,D7=0:
单位为秒,D7=1:
单位为分。
数据127表示静止;
bFollowFlag:
紧随前页连续播放标志,0:
不连续,1:
连续;
bShowTimer:
显示时钟标志。
0:
不显示,1:
显示;
bTimerPlay:
定时播出标志。
0:
常规播放,1:
定时播放;
TimerMode:
时钟显示方式,
0:
不显示,1:
单行居左,2:
单行居中,3:
单行居右4:
双行居左,5:
双行居中,6:
双行居右
WeekFlag:
周定时标志,D1-D7代表周一到周日,对应位=0则当日不播出,否则播出。
该属性级别高于下面的定时时间段;
StartHour:
定时播出的开始时间之小时;
StartMinute:
定时播出的开始时间之分;
EndHour:
定时播出的结束时间之小时;
EndMinute:
定时播出的结束时间之分;
NotUsed0:
保留;
NotUsed1:
保留
2.3亮度表
C语法:
structBrightnessItem{BYTEStartHour;
BYTEStartMinute;
BYTEEndHour;
BYTEEndMinute;
BYTEBrightValue;}Delphi语法:
BrightnessItem=Record
StartHour:
BYTE;
StartMinute:
BYTE;
EndHour:
BYTE;
EndMinute:
BYTE;
BrightValue:
BYTE;
End;
Basic语法:
TypePrightnessItem
StartHourAsByte
StartMinuteAsByte
EndHourAsByte
EndMinuteAsByte
BrightValueAsByte
EndType
说明:
每个亮度表项表明一个时间段内要设置的显示屏的亮度。
StartHour:
开始时间之小时;
StartMinute:
开始时间之分;
EndHour:
结束时间之小时;
EndMinute:
结束时间之分;
BrightValue:
上述时间段内的亮度
第三章系统功能函数
3.1初始化
C语法:
BOOLComInitial(shortComPort,longBaudRate,shortWaitTime);Delphi语法:
functionComInitial(ComPort:
Smallint;BaudRate:
Integer;WaitTime:
Smallint):
WordBool;
3.1.1串口通讯初始化
Basic语法:
FunctionComInitial(ComPortAsInteger,BaudRateAsLong,WaitTimeAsInteger)AsBoolean
功能:
初始化要的串行通讯口。
在使用RS232或RS422通讯模式时必须调用本函数对串口进行初始化。
xx:
ComPort:
16位有符号整型,串口号,有效范围1-8;
BaudRate:
32位有符号整型,速率,有效值
9600、19200、38400或57600,与控制卡上硬件设置有关;
WaitTime:
16位有符号整型,通讯等待延时,发出数据包后在等待本规定设置的延时后若没有收到应答,则视为通讯失败。
该延时从数据包开始发送即进行计时,一般至少设定为800以上。
出口:
布尔型,串口被占、串口号超出范围或波特率超出范围均返回假。
成功返回真。
3.1.2网络通讯初始化
C语法:
BOOLNetInitial(longRemoteIP,shortClientServerMode,shortWaitTime)
Delphi语法:
NetInitial(RemoteIP:
Integer;ClientServerMode:
Smallint;WaitTime:
Smallint):
WordBool
Basic语法:
FunctionNetInitial(RemoteIPAsLong,ClientServerModeAsInteger,
WaitTimeAsInteger)AsBoolean
功能:
初始化以太网通讯。
xx:
RemoteIP:
32位有符号整型,控制卡的IP地址;
ClientServerMode:
16位有符号整型,控制卡的客户机/服务器模式,0:
客户机,1:
服务器;
WaitTime:
定义同
3.1.1,在网络模式下一般给4000以上。
出口:
布尔型,与控制卡连接成功返回真,否则返回假。
3.1.3调制解调器初始化
C语法:
BOOLModemInitial(shortModemPort,shortWaitTime)
Delphi语法:
functionModemInitial(ModemPort:
Smallint;WaitTime:
Smallint):
WordBool
Basic语法:
FunctionModemInitial(ModemPortAsInteger,WaitTimeAsInteger)As
Boolean
功能:
初始化使用调制解调器通讯。
xx:
ModemPort:
16位有符号整型,Modem连接的串口号;
WaitTime:
定义同
3.1.1,在使用调制解调器通讯时一般给2000以上。
出口:
布尔型,Modem确实存在并有响应则返回真,否则返回假。
3.1.4设置控制卡属性
C语法:
BOOLSetLEDProperty(shortCardType,shortCardNum,shortWidth,
shortHeight,shortColor,shortLockHZLibFlag)
Delphi语法:
functionSetLEDProperty(CardType:
Smallint;CardNum:
Smallint;
Width:
Smallint;Height:
Smallint;Color:
Smallint;LockHZLibFlag:
Smallint):
WordBool
Basic语法:
FunctionSetLEDProperty(CardTypeAsInteger,CardNumAsInteger,
WidthAsInteger,HeightAsInteger,ColorAsInteger,LockHZLibFlagAsInteger)AsBoolean
功能:
设置控制卡属性。
这些属性将用于在本设定以后接收数据的控制卡编号、计算控制卡上存储每个图片画面需要的空间、控制卡上一共可存储的图片数量、计算单个图片的发送次数等。
xx:
CardType:
16位有符号整型,控制卡类型编号,从1开始。
1对应Ⅰ型卡、2对应Ⅱ型卡、3对应Ⅲ型卡、4对应Ⅳ型卡……,与实际的控制卡类型相关;CardNum:
16位有符号整型,控制卡编号,从0开始,最大不超过30。
与控制卡上的硬件设置有关;
Width:
16位有符号整型,显示屏的实际水平列点数;
Height:
16位有符号整型,显示屏的实际垂直行点数;
Color:
16位有符号整型,显示屏采用的模块。
0:
单色,1:
双色
LockHZLibFlag:
16位有符号整型,保护控制卡上已上载的汉字库标记。
0:
不保护,1:
保护。
选择保护汉字库空间后,上传的图片数量将减少一部分,且汉字库空间无法写入其他内容。
出口:
布尔型,入口各参数有效时返回真,否则返回假。
3.2关闭
3.2.1关闭通讯
C语法:
voidCloseCL2005(void)
Delphi语法:
procedureCloseCL2005
Basic语法:
SubCloseCL2005()
功能:
关闭通讯资源。
若此前使用ComInitial初始化,则释放串口;若是使用NetInitial初始化,则断开连接;若是使用ModemInitial初始化,则释放连接Modem的串口。
xx:
无出口:
无
3.3其他操作
3.3.1发送调制解调器命令
C语法:
BOOLSendModemCmd(longlpCmdStr,longlpRetStr);
Delphi语法:
functionSendModemCmd(lpCmdStr:
Integer;lpRetStr:
Integer):
WordBool;
Basic语法:
FunctionSendModemCmd(lpCmdStrAsLong,lpRetStrAsLong)As
Boolean
功能:
对Modem发送命令,如拨号、挂断等。
xx:
lpCmdStr:
命令串存储空间的32位地址;
lpRetStr:
返回串存储的32位地址。
出口:
布尔型,Modem有应答则返回真,否则返回假。
返回真时,在lpRetStr中有Modem返回的字符串,但控件自动滤掉了”OK”或回显的lpCmdStr。
3.3.2校准控制卡上的时钟
C语法:
BOOLCorrectTimer()
Delphi语法:
functionCorrectTimer:
WordBool;
Basic语法:
FunctionCorrectTimer()AsBoolean
功能:
同控制计算机的时间校准控制卡上的时间
xx:
无出口:
xx型,校准成功则返回真,否则返回假
3.3.3控制电源开关
C语法:
BOOLSetPowerRelay(shortOnOff)
Delphi语法:
functionSetPowerRelay(OnOff:
Smallint):
WordBool
Basic语法:
FunctionSetPowerRelay(OnOffAsInteger)AsBoolean
功能:
控制大屏的电源。
控制卡上有一个外部固态继电器的控制信号,可用来控制外部设备,如大屏显示部分的电源或其他设备。
本函数直接控制其开关动作。
xx:
OnOff:
16位有符号整型,0:
关,1:
开
出口:
xx型,执行成功后返回真,否则返回假
3.3.4设置自动开关时间
C语法:
BOOLSetAutoPower(shortOn_Hour,shortOn_Minute,shortOff_Hour,
shortOff_Minute)
Delphi语法:
functionSetAutoPower(On_Hour:
Smallint;On_Minute:
Smallint;
Off_Hour:
Smallint;Off_Minute:
Smallint):
WordBoolBasic语法:
FunctionSetBrightness(BrightnessAsInteger)AsBoolean功能:
设置自动开关屏时间。
需要外接电源开关。
本函数的级别低于SetPowerRelay。
xx:
On_Hour:
16位有符号整型,开屏时间之小时;
On_Minute:
16位有符号整型,开屏时间之分;
On_Hour:
16位有符号整型,关屏时间之小时;
On_Minute:
16位有符号整型,关屏时间之分;
出口:
xx型,执行成功后返回真,否则返回假
3.3.5设置亮度
C语法:
BOOLSetBrightness(shortBrightness)
Delphi语法:
functionSetBrightness(Brightness:
Smallint):
WordBoolBasic语法:
FunctionSetBrightness(BrightnessAsInteger)AsBoolean功能:
设定显示屏的亮度。
对于应用在户外的显示屏,其亮度必须可以调整。
本函数可在0-7级间调整,如果设定为8,则表示由控制卡自动调整显示屏的亮度,此时需要控制卡有亮度检测电路;如果设定为9,则表示根据自动亮度表按时间段调整亮度。
xx:
Brightness:
16位有符号整型,亮度值,0-7。
0最暗(
12.5%),7最亮(100%)。
出口:
xx型,执行成功后返回真,否则返回假
3.3.6发送自动亮度表
C语法:
BOOLSendBrightnessTable(shortlpBrightnessTable)
Delphi语法:
functionSendBrightnessTable(lpBrightnessTable:
Smallint):
WordBoolBasic语法:
FunctionSendBrightnessTable(lpBrightnessTableAsInteger)As
Boolean
功能:
上载4个时段的自动亮度调整表。
在这四个时段内,显示屏将设置为本函数发送的亮度值;不在这些时段内时,将自动设置为最大亮度。
本函数的级别低于SetBrightness;
xx:
lpBrightnessTable:
32位有符号整型,亮度表的存储地址。
一共4个亮度表。
亮度表的结构参见第二章
2.3;
出口:
xx型,执行成功后返回真,否则返回假
3.3.7发送静态数码管显示码
C语法:
BOOLSendDigitCode(longlpDigitCode)
Delphi语法:
functionSendDigitCode(lpDigitCode:
Integer):
WordBoolBasic语法:
FunctionSendDigitCode(lpDigitCodeAsLong)AsBoolean功能:
上载16个字节的数码管显示码及相关信息。
//DigitCode[0]-DigitCode[9]为数字
xx:
lpDigitCode:
32位有符号整型,数码管显示码表存储地址。
一共16个字节,其中第0-第9个字节:
0-9的显示码;
第10个字节:
数码管全灭的显示码;
第11个字节:
正号的显示码(可以与数码管全灭的显示码一致,即为正数时不显示符号)
第12个字节:
负号的显示码
第13个字节:
小数点的显示码
第14个字节:
高四位表示小数点显示码与数字显示码的运算关系。
0:
与,1:
或低四位表示小数点与数字显示码的归依关系。
0:
归依前一数字,1:
归依后一数字
出口:
xx型,执行成功后返回真,否则返回假
3.3.8获取数据包函数
C语法:
BOOLGetDataPackage(longlp16BitsBuff);
Delphi语法:
Integer):
WoodBool;Basic语法:
FunctionGetDataPackage(lp16BitsBuffAsLong)AsBoolean功能:
获取打包好的数据包。
用户可通过此函数,在每次调用控件中的功能函数后获得由控件封装好的数据,然后自行编写程序用其它方式将数据发送出去。
注意,在
1.1列明的步骤中,不执行步骤一,则调用控件中的功能函数后,控件不会将数据包发送出去,而是将数据包准备好等待用户调用本函数时取走数据。
xx:
lp16BitsBuff:
32位有符号整型,指向存储返回的数据包的空间。
该空间为至少2080个16位数。
出口:
布尔型,若控件有数据包返回则为真;若在调用本函数前调用的功能函数没有数据
包返回,或不支持返回数据包操作,则出口值为FALSE;返回的数据包排列规则如下:
XY0A0
A1......AnY1B0
B1......BmY2C0
C1......Cl......其中:
X表示缓冲区中共有几个独立的数据包(一个函数调用可能由几个数据包完成)Y0表示第1个数据包的长度,其后的A0-An为Y0个数据
Y1表示第2个数据包的长度,其后的B0-Bm为Y1个数据
Y2表示第3个数据包的长度,其后的C0-Cl为Y2个数据
…………………………
第四章图片及节目表的发送
4.1图片的发送
4.1.1获取控制卡可存储图片总数
C语法:
shortGetTotalPictureCount()
Delphi语法:
functionGetTotalPictureCount:
Smallint
Basic语法:
FunctionGetTotalPictureCount()AsInteger
功能:
获取控制卡上可存储图片的总数量。
该函数返回根据SetLEDProperty设置的参数计算出来可存储图片数。
入口:
无出口:
16位有符号整型,可存储图片数。
4.1.2发送图片
C语法:
BOOLSendPicture(shortPictureIndex,longlpPictureBuff)Delphi语法:
functionSendPicture(PictureIndex:
Smallint;lpPictureBuff:
Integer):
WordBool
Basic语法:
FunctionSendPicture(PictureIndexAsInteger,lpPictureBuffAsLong)
AsBoolean
功能:
发送一幅图片。
xx:
PictureIndex:
16位有符号整数,图片序号,在0到GetTotalPictureCount-1之间;
lpPictureBuff:
32位有符号整数,图片的存储地址。
图片存储格式参见第二章
2.1节
出口:
布尔型,图片发送成功时返回真,否则返回假。
4.2发送节目表
4.2.1发送节目表
C语法:
BOOLSendProgList(shortTotalProgCount,longlpProgList)Delphi语法:
functionSendProgList(TotalProgCount:
Smallint;lpProgList:
Integer):
WordBool
Basic语法:
FunctionSendProgL