wcs_server_kate_suzhou/Tools/LedSimple/LEDDLL.cs

844 lines
51 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Runtime.InteropServices;
namespace LedSimple;
public class Leddll
{
//颜色值 R 0x0000ff G 0x00ff00 B 0xff0000
public const int COLOR_RED = 0xff; //红色
public const int COLOR_GREEN = 0xff00; //绿色
public const int COLOR_YELLOW = 0xffff; //黄色
public const int ADDTYPE_STRING = 0; //添加类型为字符串
public const int ADDTYPE_FILE = 1; //添加类型为文件
public const int OK = 0;//函数返回成功
//******节目定时启用日期时间星期的标志宏***************************************************************************
public const int ENABLE_DATE = 0x01;
public const int ENABLE_TIME = 0x02;
public const int ENABLE_WEEK = 0x04;
//*****************************************************************************************************************
//******节目定时星期里某天启用宏***********************************************************
public const int WEEK_MON = 0x01;
public const int WEEK_TUES = 0x02;
public const int WEEK_WEN = 0x04;
public const int WEEK_THUR = 0x08;
public const int WEEK_FRI = 0x10;
public const int WEEK_SAT = 0x20;
public const int WEEK_SUN = 0x40;
//*****************************************************************************
//[StructLayout(LayoutKind.Sequential, Size = 8, CharSet = CharSet.Unicode, Pack = 1)]
//**通讯设置结构体*********************************************************
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct COMMUNICATIONINFO
{
public int LEDType; ////LED类型 0.6代T系A系XC系 1.6代E系 2.X1X2 3.7代C系
public int SendType; //通讯方式 0.为Tcp发送又称固定IP通讯, 1.广播发送(又称单机直连) 2.串口通讯 3.磁盘保存 4.广域网通讯
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string IpStr; //LED屏的IP地址只有通讯方式为0时才需赋值其它通讯方式无需赋值
public int Commport; //串口号只有通讯方式为2时才需赋值其它通讯方式无需赋值
public int Baud; //波特率只有通讯方式为2时才需赋值其它通讯方式无需赋值, 0.9600 1.57600 2.115200 直接赋值 9600192003840057600115200亦可
public int LedNumber; //LED的屏号只有通讯方式为2时且用485通讯时才需赋值其它通讯方式无需赋值
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string OutputDir; //磁盘保存的目录只有通讯方式为3时才需赋值其它通讯方式无需赋值
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 19)]
public string networkIdStr; //网络ID只有通讯方式为4时才需赋值其它通讯方式无需赋值
};
//***********************************************************************
//**区域坐标结构体*********************************************************
public struct AREARECT
{
public int left; //区域左上角横坐标
public int top; //区域左上角纵坐标
public int width; //区域的宽度
public int height; //区域的高度
};
//****************************************************************************
//***字体属性结构对**********************************************************
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct FONTPROP
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string FontName; //字体名
public int FontSize; //字号(单位磅)
public int FontColor; //字体颜色
public int FontBold; //是否加粗
public int FontItalic; //是否斜体
public int FontUnderLine; //时否下划线
};
//****************************************************************************
//**页面显示的属性结构体****************************************************
public struct PLAYPROP
{
public int InStyle; //入场特技值(取值范围 0-38
public int OutStyle; //退场特技值现无效预留置0
public int Speed; //特技显示速度(取值范围1-255) 值越大,速度越慢
public int DelayTime; //页面留停时间(1-65535) 注:当入场特技为连续左移、连续右移、连续上移、连续下移时,此参数无效
};
/* 特技值对应
0=立即显示
1=随机
2=左移
3=右移
4=上移
5=下移
6=连续左移
7=连续右移
8=连续上移
9=连续下移
10=闪烁
11=激光字(向上)
12=激光字(向下)
13=激光字(向左)
14=激光字(向右)
15=水平交叉拉幕
16=上下交叉拉幕
17=左右切入
18=上下切入
19=左覆盖
20=右覆盖
21=上覆盖
22=下覆盖
23=水平百叶(左右)
24=水平百叶(右左)
25=垂直百叶(上下)
26=垂直百叶(下上)
27=左右对开
28=上下对开
29=左右闭合
30=上下闭合
31=向左拉伸
32=向右拉伸
33=向上拉伸
34=向下拉伸
35=分散向左拉伸
36=分散向右拉伸
37=冒泡
38=下雪
*/
//*******************************************************************************
//**设置节目定时属性结构体****************************************************
public struct PROGRAMTIME
{
public int EnableFlag; //启用定时的标记ENABLE_DATE为启用日期,ENABLE_TIME为启用时间,ENABLE_WEEK为启用星期,可用或运算进行组合,如 ENABLE_DATE | ENABLE_TIME | ENABLE_WEEK
public int WeekValue; //启用星期后,选择要定时的星期里的某些天,用宏 WEEK_MON,WEEK_TUES,WEEK_WEN,WEEK_THUR,WEEK_FRI,WEEK_SAT,WEEK_SUN 通过或运算进行组合
public int StartYear; //起始年
public int StartMonth; //起始月
public int StartDay; //起始日
public int StartHour; //起姐时
public int StartMinute; //起始分
public int StartSecond; //起始秒
public int EndYear; //结束年
public int EndMonth; //结束月
public int EndDay; //结束日
public int EndHour; //结束时
public int EndMinute; //结束分
public int EndSecond; //结束秒
};
//**********************************************************************************
//数字时钟属性结构体*********************************************************************************
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DIGITALCLOCKAREAINFO
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string ShowStr; //自定义显示字符串
//[MarshalAs(UnmanagedType.Struct)]
public FONTPROP ShowStrFont; //自定义显示字符串以及日期星期时间的字体属性注意此字体属性里的FontColor只对自定义显示字体有效其它项的颜色有单独的颜色属性属性的赋值见FONTPROP结构体说明
public int TimeLagType; //时差类型 0为超前1为滞后
public int HourNum; //时差小时数
public int MiniteNum; //时差分钟数
public int DateFormat; //日期格式 0.YYYY年MM月DD日 1.YY年MM月DD日 2.MM/DD/YYYY 3.YYYY/MM/DD 4.YYYY-MM-DD 5.YYYY.MM.DD 6.MM.DD.YYYY 7.DD.MM.YYYY
public int DateColor; //日期字体颜色 格式是16进制 BBGGRR红色0xff 绿色0xff00 黄色0xffff
public int WeekFormat; //星期格式 0.星期X 1.Monday 2.Mon.
public int WeekColor; //星期字体颜色
public int TimeFormat; //时间格式 0.HH时mm分ss秒 1.HH時mm分ss秒 2.HH:mm:ss 3.上午 HH:mm:ss 4.AM HH:mm:ss 5.HH:mm:ss 上午 6.HH:mm:ss AM
public int TimeColor; //时间字体颜色
public int IsShowYear; //是否显示年 TRUE为显示 FALSE不显示 下同
public int IsShowWeek; //是否显示星期
public int IsShowMonth; //是否显示月
public int IsShowDay; //是否显示日
public int IsShowHour; //是否显示时
public int IsShowMinute; //是否显示分
public int IsShowSecond; //是否显示秒
public int IsMutleLineShow; //是否多行显示
};
//******************************************************************************
//**模拟时钟属性结构体*********************************************************
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CLOCKAREAINFO
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
public string ShowStr; //自定义显示字符串
public FONTPROP ShowStrFont; //自定义显示字符串字体属性
public int TimeLagType; //时差类型 0为超前1为滞后
public int HourNum; //时差小时数
public int MiniteNum; //时差分钟数
public int ClockType; //表盘类型 0.圆形 1.正方形
public int HourMarkColor; //时标颜色 格式是16进制 BBGGRR红色0xff 绿色0xff00 黄色0xffff
public int HourMarkType; //时标类型 0.圆形 1.正方形
public int HourMarkWidth; //时标宽度 1~16
public int MiniteMarkColor; //分标颜色
public int MiniteMarkType; //分标类型 0.圆形 1.正方形
public int MiniteMarkWidth; //分标宽度 1~16
public int HourPointerColor; //时针颜色
public int MinutePointerColor; //分针颜色
public int SecondPointerColor; //秒针颜色
public int HourPointerWidth; //时针的宽度 1~5
public int MinutePointerWidth; //分针的宽度 1~5
public int SecondPointerWidth; //秒针的宽度 1~5
public int IsShowDate; //是否显示日期
public int DateFormat; //日期格式 0.YYYY年MM月DD日 1.YY年MM月DD日 2.MM/DD/YYYY 3.YYYY/MM/DD 4.YYYY-MM-DD 5.YYYY.MM.DD 6.MM.DD.YYYY 7.DD.MM.YYYY
public FONTPROP DateFont; //日期字体属性
public int IsShowWeek; //是否显示星期
public int WeekFormat; //星期格式 0.星期X 1.Monday 2.Mon.
public FONTPROP WeekFont; //星期字体属性
};
//**************************************************************************************
//**计时属性结构体**********************************************************************
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct TIMEAREAINFO
{
public int ShowFormat; //显示格式 0.xx天xx时xx分xx秒 1.xx天xx時xx分xx秒 2.xxDayxxHourxxMinxxSec 3.XXdXXhXXmXXs 4.xx:xx:xx:xx
public int nYear; //结束年
public int nMonth; //结束月
public int nDay; //结束日
public int nHour; //结束时
public int nMinute; //结束分
public int nSecond; //结束秒
public int IsShowDay; //是否显示天
public int IsShowHour; //是否显示时
public int IsShowMinute; //是否显示分
public int IsShowSecond; //是否显示秒
public int IsMutleLineShow; //是否多行显示,指的是自定义文字与计时文字是否分行显示
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string ShowStr; //自定义文字字符串
public int TimeStrColor; //计时文字的颜色
public FONTPROP ShowFont; //自定义文字及计时文字颜色其中FontColor只对文定义文字有效计时文字颜色为TimeStrColor
};
//****************************************************************************************
//**LED通讯参数修改结构体*****************************************************************
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct LEDCOMMUNICATIONPARAMETER
{
public int dwMask; //要修改项的标记 0.修改网络通讯参数 1.修改串口通讯参数 2.修改网口和串口通讯参数
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string IpStr; //新的IP地址只有dwMask为0或2时才需赋值其它值无需赋值格式例如 192.168.1.100
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string NetMaskStr; //新的子网掩码只有dwMask为0或2时才需赋值其它值无需赋值格式例如 255.255.255.0
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string GatewayStr; //新的网关只有dwMask为0或2时才需赋值其它值无需赋值,格式例如 192.168.1.1
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]
public string MacStr; //新的MAC地址只有dwMask为0或2时才需赋值其它值无需赋值格式例如 12-34-56-78-9a-bc,如无需修改请设为 ff-ff-ff-ff-ff-ff
public int Baud; //波特率只有dwMask为1或2时才需赋值其它值无需赋值0.9600 1.57600 2.115200
public int LedNumber; //LED屏号 1~255,网络通讯和232通讯赋值 1 即可485必需和控制卡显示的屏号相同才可通讯
};
//*****************************************************************************************
//**流水边框属性结构体************************************************************************
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WATERBORDERINFO
{
public int Flag; //流水边框加载类型标志0.为动态库预置的边框 1.为从文件加载的边框
public int BorderType; //边框的类型Flag为0是有效0.单色边框 1.双基色边框 2.全彩边框
public int BorderValue; //边框的值Flag为0是有效单色边框取值范围是0~39,双基色边框取值范围是0~34,全彩边框取值范围是0~21
public int BorderColor; //边框线颜色,Flag为0并且BorderType为0是才有效
public int BorderStyle; //边框显示的样式 0.固定 1.顺时针 2.逆时针 3.闪烁
public int BorderSpeed;//边框流动的速度
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string WaterBorderBmpPath; //边框图片文件的路径注意只能是bmp图片图片大小必需是宽度为32点取高度小于等于8
};
//*********************************************************************************************
//**定时开关屏设置属性************************************************************************
public struct ONOFFTIMEINFO
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public int[] TimeFlag; //支持3个定时1代表打开 0关闭
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public int[] StartHour; //开始时钟
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public int[] StartMinute; //开始分钟
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public int[] EndHour; //结束时钟
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public int[] EndMinute; //结束分钟
};
//********************************************************************************************
//**定时亮度设置属性**************************************************************************
public struct BRIGHTNESSTIMEINFO
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public int[] TimeFlag; //支持3个定时1代表打开 0关闭
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public int[] StartHour; //开始时钟
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public int[] StartMinute; //开始分钟
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public int[] EndHour; //结束时钟
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public int[] EndMinute; //结束分钟
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public int[] BrightnessValue; //亮度值0~15
};
//*******************************************************************************************
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
public delegate int SERVERINFOCALLBACK(int Msg, int wParam, nint ptr);
public enum LV_MSG
{
LV_MSG_NONE,
LV_MSG_CARD_ONLINE,//上线通知通过CARD_INFO结构体指针获取详细上线信息
LV_MSG_CARD_OFFLINE,//下线通知通过CARD_INFO结构体指针获取详细下线信息
};
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CARD_INFO
{
public int port; //控制卡端口
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string ipStr; //控制卡IP
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 19)]
public string networkIdStr; //控制卡唯一网络ID每张卡都贴有唯一网络ID
};
/********************************************************************************************
* LV_InitLed 初始化屏的类型和颜色顺序(C卡)
* 当Led上显示的文字区域的颜色与下发的不一致, 请的确认Led 屏的RGB顺序,并调用此接口
* 参数说明
* nLedType 屏类型 0.6代T系A系XC系 1.6代E系 2.X1X2 3.7代C系 4: E5,E6
* nRgb 模组的RGB顺序,仅C卡有效,其他卡固定为0. C卡时, 0: R->G->B 1: G->R->B 2:R->B->G 3:B->R->G 4:B->G->R 5:G->B->R
* 返回值 无
*
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_InitLed", CharSet = CharSet.Unicode)]
public static extern void LV_InitLed(int nLedType, int nRgb);
/********************************************************************************************
* LV_CreateProgramEx 创建节目对象,返回类型为 HPROGRAM
*
* 参数说明
* LedWidth 屏的宽度
* LedHeight 屏的高度
* ColorType 屏的颜色 1.单色 2.双基色 3.三基色 注C卡全彩参数为3 X系列卡参数固定为 4
* GrayLevel 灰度等级 赋值 1-5对应的灰度等级分别为 无,4,8,16,32 注目前C系列的卡才支持其它型号T,A,U,XC,W,E,X参数必须为0
* SaveType 节目保存位置默认为0保存存为flash节目3保存为ram节目
* 注flash节目掉电不清除ram节目掉电清除。应用场景需要实时刷新的建议保存为ram节目, 目前仅C卡程序才支持切换,
* 其他卡默认出货为flash程序,如果需要RAM程序请联系业务或者在官网下载,然后使用Led Player对卡进行升级
* 返回值
* 0 创建节目对象失败
* 非0 创建节目对象成功
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_CreateProgramEx", CharSet = CharSet.Unicode)]
public static extern nint LV_CreateProgramEx(int LedWidth, int LedHeight, int ColorType, int GrayLevel, int SaveType);
/*********************************************************************************************
* LV_AddProgram 添加一个节目
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 取值范围0-255)从0开始
* ProgramTime 节目播放时长 0.节目播放时长 非0.指定播放时长
* LoopCount 循环播放次数 1-255
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_AddProgram", CharSet = CharSet.Unicode)]
public static extern int LV_AddProgram(nint hProgram, int ProgramNo, int ProgramTime, int LoopCount);
/*********************************************************************************************
* LV_SetProgramTime 设置节目定时
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 取值范围0-255)从0开始
* pProgramTime 节目定时属性设置方式见PROGRAMTIME结构体注示
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_SetProgramTime", CharSet = CharSet.Unicode)]
public static extern int LV_SetProgramTime(nint hProgram, int ProgramNo, ref PROGRAMTIME pProgramTime);
/*********************************************************************************************
* LV_AddImageTextArea 添加一个图文区域
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 取值范围0-255)从0开始
* AreaNo 区域号 取值范围1-255
* pAreaRect 区域坐标属性设置方式见AREARECT结构体注示
* nLayout 区域层号1.前景区(默认) 0.背景区 注除C系列其它默认为1
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_AddImageTextArea", CharSet = CharSet.Unicode)]
public static extern int LV_AddImageTextArea(nint hProgram, int ProgramNo, int AreaNo, ref AREARECT pAreaRect, int nLayout);
/*********************************************************************************************
* LV_AddFileToImageTextArea 添加一个文件到图文区
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 取值范围0-255)从0开始
* AreaNo 区域号 取值范围1-255
* FilePath 文件路径,支持的文件类型有 txt rtf bmp gif png jpg jpeg tiff
* pPlayProp 显示的属性设置方式见PLAYPROP结构体注示
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_AddFileToImageTextArea", CharSet = CharSet.Unicode)]
public static extern int LV_AddFileToImageTextArea(nint hProgram, int ProgramNo, int AreaNo, string FilePath, ref PLAYPROP pPlayProp);
/*********************************************************************************************
* LV_AddSingleLineTextToImageTextArea 添加一个单行文本到图文区
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 取值范围0-255)从0开始
* AreaNo 区域号 取值范围1-255
* AddType 添加的类型 0.为字符串 1.文件只支持txt和rtf文件
* AddStr AddType为0则为字符串数据,AddType为1则为文件路径
* pFontProp 如果AddType为字符串类型或AddType为文件类型且文件为txt则可传入以赋值的该结构体其它可赋NULL
* pPlayProp 显示的属性设置方式见PLAYPROP结构体注示
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_AddSingleLineTextToImageTextArea", CharSet = CharSet.Unicode)]
public static extern int LV_AddSingleLineTextToImageTextArea(nint hProgram, int ProgramNo, int AreaNo, int AddType, string AddStr, ref FONTPROP pFontProp, ref PLAYPROP pPlayProp);
/*********************************************************************************************
* LV_AddMultiLineTextToImageTextArea 添加一个多行文本到图文区
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 取值范围0-255)从0开始
* AreaNo 区域号 取值范围1-255
* AddType 添加的类型 0.为字符串 1.文件只支持txt和rtf文件
* AddStr AddType为0则为字符串数据,AddType为1则为文件路径 换行符(\n
* pFontProp 如果AddType为字符串类型或AddType为文件类型且文件为txt则可传入以赋值的该结构体其它可赋NULL
* pPlayProp 显示的属性设置方式见PLAYPROP结构体注示
* nAlignment 水平对齐样式0.左对齐 1.右对齐 2.水平居中 注意只对字符串和txt文件有效
* IsVCenter 是否垂直居中 0.置顶(默认) 1.垂直居中
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_AddMultiLineTextToImageTextArea", CharSet = CharSet.Unicode)]
public static extern int LV_AddMultiLineTextToImageTextArea(nint hProgram, int ProgramNo, int AreaNo, int AddType, string AddStr, ref FONTPROP pFontProp, ref PLAYPROP pPlayProp, int nAlignment, int IsVCenter);
/*********************************************************************************************
* LV_AddStaticTextToImageTextArea 添加一个静止文本到图文区
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 取值范围0-255)从0开始
* AreaNo 区域号 取值范围1-255
* AddType 添加的类型 0.为字符串 1.文件只支持txt和rtf文件
* AddStr AddType为0则为字符串数据,AddType为1则为文件路径
* pFontProp 如果AddType为字符串类型或AddType为文件类型且文件为txt则可传入以赋值的该结构体其它可赋NULL
* DelayTime 显示的时长 1~65535
* nAlignment 水平对齐样式0.左对齐 1.右对齐 2.水平居中 注意只对字符串和txt文件有效
* IsVCenter 是否垂直居中 0.置顶(默认) 1.垂直居中
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_AddStaticTextToImageTextArea", CharSet = CharSet.Unicode)]
public static extern int LV_AddStaticTextToImageTextArea(nint hProgram, int ProgramNo, int AreaNo, int AddType, string AddStr, ref FONTPROP pFontProp, int DelayTime, int nAlignment, int IsVCenter);
/*********************************************************************************************
* LV_QuickAddSingleLineTextArea 快速添加一个向左移的单行文本区域
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 取值范围0-255)从0开始
* AreaNo 区域号 取值范围1-255
* pAreaRect 区域坐标属性设置方式见AREARECT结构体注示
* AddType 添加的类型 0.为字符串 1.文件只支持txt和rtf文件
* AddStr AddType为0则为字符串数据,AddType为1则为文件路径
* pFontProp 如果AddType为字符串类型或AddType为文件类型且文件为txt则可传入以赋值的该结构体其它可赋NULL
* nSpeed 滚动速度 1~255
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_QuickAddSingleLineTextArea", CharSet = CharSet.Unicode)]
public static extern int LV_QuickAddSingleLineTextArea(nint hProgram, int ProgramNo, int AreaNo, ref AREARECT pAreaRect, int AddType, string AddStr, ref FONTPROP pFontProp, int nSpeed);
/*********************************************************************************************
* LV_AddDigitalClockArea 添加一个数字时钟区域
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 取值范围0-255)从0开始
* AreaNo 区域号 取值范围1-255
* pAreaRect 区域坐标属性设置方式见AREARECT结构体注示
* pDigitalClockAreaInfo 数字时钟属性见DIGITALCLOCKAREAINFO结构体注示
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_AddDigitalClockArea", CharSet = CharSet.Unicode)]
public static extern int LV_AddDigitalClockArea(nint hProgram, int ProgramNo, int AreaNo, ref AREARECT pAreaRect, ref DIGITALCLOCKAREAINFO pDigitalClockAreaInfo);
/*********************************************************************************************
* LV_AddTimeArea 添加一个计时区域
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号取值范围0-255)从0开始
* AreaNo 区域号 取值范围1-255
* pAreaRect 区域坐标属性设置方式见AREARECT结构体注示
* pTimeAreaInfo 计时属性见TIMEAREAINFO结构体注示
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_AddTimeArea", CharSet = CharSet.Unicode)]
public static extern int LV_AddTimeArea(nint hProgram, int ProgramNo, int AreaNo, ref AREARECT pAreaRect, ref TIMEAREAINFO pTimeAreaInfo);
/*********************************************************************************************
* LV_AddClockArea 添加一个模拟时钟区域
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 取值范围0-255)从0开始
* AreaNo 区域号 取值范围1-255
* pAreaRect 区域坐标属性设置方式见AREARECT结构体注示
* pClockAreaInfo 模拟时钟属性见CLOCKAREAINFO结构体注示
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_AddClockArea", CharSet = CharSet.Unicode)]
public static extern int LV_AddClockArea(nint hProgram, int ProgramNo, int AreaNo, ref AREARECT pAreaRect, ref CLOCKAREAINFO pClockAreaInfo);
/*********************************************************************************************
* LV_AddNeiMaArea 添加一个内码区域
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 从0开始(0-255)
* AreaNo 区域号 (1-255)
* pAreaRect 区域坐标属性设置方式见AREARECT结构体注示
* 除C卡外的其他卡,内码区域的起点X和Y坐标必须为8的整数倍,如0,8,16等, 宽高必须大于所用字体大小
* NeiMaStr 文本字符串 注字符串编码是GB2312
* FontSize 字体大小 16 24 32
* FontColor 文字颜色 格式BBGGRR 0xff 红色 0xff00 绿色 0xffff黄色
* pPlayProp 显示的属性设置方式见PLAYPROP结构体注示
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_AddNeiMaArea", CharSet = CharSet.Unicode)]
public static extern int LV_AddNeiMaArea(nint hProgram, int ProgramNo, int AreaNo, ref AREARECT pAreaRect, string NeiMaStr, int FontSize, int FontColor, ref PLAYPROP pPlayProp);
/*********************************************************************************************
* LV_RefreshNeiMaArea 刷新内码区域
*
* 参数说明
* pCommunicationInfo 通讯参数赋值方式见COMMUNICATIONINFO结构体注示
* NeiMaStr 刷新的数据字符串,格式可以查看<<内码区域局部更新协议>>文档
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_RefreshNeiMaArea", CharSet = CharSet.Unicode)]
public static extern int LV_RefreshNeiMaArea(ref COMMUNICATIONINFO pCommunicationInfo, string NeiMaStr);
/*********************************************************************************************
* LV_AddWaterBorder 添加一个流水边框区域
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 取值范围0-255)从0开始
* AreaNo 区域号 取值范围1-255
* pAreaRect 区域坐标属性设置方式见AREARECT结构体注示
* pWaterBorderInfo 流水边框属性见WATERBORDERINFO结构体注示
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_AddWaterBorder", CharSet = CharSet.Unicode)]
public static extern int LV_AddWaterBorder(nint hProgram, int ProgramNo, int AreaNo, ref AREARECT pAreaRect, ref WATERBORDERINFO pWaterBorderInfo);
/*********************************************************************************************
* LV_DeleteProgram 销毁节目对象(注意:如果此节目对象不再使用,请调用此函数销毁,否则会造成内存泄露)
*
* 参数说明
* hProgram 节目对象句柄
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_DeleteProgram", CharSet = CharSet.Unicode)]
public static extern void LV_DeleteProgram(nint hProgram);
/*********************************************************************************************
* LV_Send 发送节目,此发送为一对一发送
*
* 参数说明
* pCommunicationInfo 通讯参数赋值方式见COMMUNICATIONINFO结构体注示
* hProgram 节目对象句柄
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_Send", CharSet = CharSet.Unicode)]
public static extern int LV_Send(ref COMMUNICATIONINFO pCommunicationInfo, nint hProgram);
/*********************************************************************************************
* LV_TestOnline 测试LED屏是否可连接上
*
* 参数说明
* pCommunicationInfo 通讯参数赋值方式见COMMUNICATIONINFO结构体注示
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_TestOnline", CharSet = CharSet.Unicode)]
public static extern int LV_TestOnline(ref COMMUNICATIONINFO pCommunicationInfo);
/*********************************************************************************************
* LV_SetBasicInfoEx 设置基本屏参
*
* 参数说明
* pCommunicationInfo 通讯参数赋值方式见COMMUNICATIONINFO结构体注示
* ColorType 屏的颜色 1.单色 2.双基色 3.三基色 注C卡全彩参数为3 X系列卡参数固定为 4
* GrayLevel 灰度等级 赋值 1-5对应的灰度等级分别为 无,4,8,16,32 注目前C系列的卡才支持其它型号T,A,U,XC,W,E,X参数必须为0
* LedWidth 屏的宽度点数
* LedHeight 屏的高度点数
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_SetBasicInfoEx", CharSet = CharSet.Unicode)]
public static extern int LV_SetBasicInfoEx(ref COMMUNICATIONINFO pCommunicationInfo, int ColorType, int GrayLevel, int LedWidth, int LedHeight);
/*********************************************************************************************
* LV_SetOEDA 设置OE DA
*
* 参数说明
* pCommunicationInfo 通讯参数赋值方式见COMMUNICATIONINFO结构体注示
* Oe OE 0.低有效 1.高有效
* Da DA 0.负极性 1.正极性
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_SetOEDA", CharSet = CharSet.Unicode)]
public static extern int LV_SetOEDA(ref COMMUNICATIONINFO pCommunicationInfo, int Oe, int Da);
/*********************************************************************************************
* LV_AdjustTime 校时
*
* 参数说明
* pCommunicationInfo 通讯参数赋值方式见COMMUNICATIONINFO结构体注示
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_AdjustTime", CharSet = CharSet.Unicode)]
public static extern int LV_AdjustTime(ref COMMUNICATIONINFO pCommunicationInfo);
/*********************************************************************************************
* LV_PowerOnOff 开关屏
*
* 参数说明
* pCommunicationInfo 通讯参数赋值方式见COMMUNICATIONINFO结构体注示
* OnOff 开关值 0.开屏 1.关屏 2.重启(仅支持C卡)
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_PowerOnOff", CharSet = CharSet.Unicode)]
public static extern int LV_PowerOnOff(ref COMMUNICATIONINFO pCommunicationInfo, int OnOff);
/*********************************************************************************************
* LV_TimePowerOnOff 定时开关屏
*
* 参数说明
* pCommunicationInfo 通讯参数赋值方式见COMMUNICATIONINFO结构体注示
* pTimeInfo 定时开关屏属性详见ONOFFTIMEINFO结构体注示
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_TimePowerOnOff", CharSet = CharSet.Unicode)]
public static extern int LV_TimePowerOnOff(ref COMMUNICATIONINFO pCommunicationInfo, ref ONOFFTIMEINFO pTimeInfo);
/*********************************************************************************************
* LV_SetBrightness 设置亮度
*
* 参数说明
* pCommunicationInfo 通讯参数赋值方式见COMMUNICATIONINFO结构体注示
* BrightnessValue 亮度值 0~15
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_SetBrightness", CharSet = CharSet.Unicode)]
public static extern int LV_SetBrightness(ref COMMUNICATIONINFO pCommunicationInfo, int BrightnessValue);
/*********************************************************************************************
* LV_TimeBrightness 定时亮度
*
* 参数说明
* pCommunicationInfo 通讯参数赋值方式见COMMUNICATIONINFO结构体注示
* pBrightnessTimeInfo 定时亮度属性详见BRIGHTNESSTIMEINFO结构体注示
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_TimeBrightness", CharSet = CharSet.Unicode)]
public static extern int LV_TimeBrightness(ref COMMUNICATIONINFO pCommunicationInfo, ref BRIGHTNESSTIMEINFO pBrightnessTimeInfo);
/*********************************************************************************************
* LV_LedTest LED测试
*
* 参数说明
* pCommunicationInfo 通讯参数赋值方式见COMMUNICATIONINFO结构体注示
* TestValue 测试值
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_LedTest", CharSet = CharSet.Unicode)]
public static extern int LV_LedTest(ref COMMUNICATIONINFO pCommunicationInfo, int TestValue);
/*********************************************************************************************
* LV_TimeLocker LED定时锁屏
*
* 参数说明
* pCommunicationInfo 通讯参数赋值方式见COMMUNICATIONINFO结构体注示
* LockerYear 锁屏年
* LockerMonth 锁屏月
* LockerDay 锁屏日
* LockerHour 锁屏时
* LockerMinute 锁屏分
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_TimeLocker", CharSet = CharSet.Unicode)]
public static extern int LV_TimeLocker(ref COMMUNICATIONINFO pCommunicationInfo, int LockerYear, int LockerMonth, int LockerDay, int LockerHour, int LockerMinute);
/*********************************************************************************************
* LV_CancelLocker 取消定时锁屏
*
* 参数说明
* pCommunicationInfo 通讯参数赋值方式见COMMUNICATIONINFO结构体注示
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_CancelLocker", CharSet = CharSet.Unicode)]
public static extern int LV_CancelLocker(ref COMMUNICATIONINFO pCommunicationInfo);
/*********************************************************************************************
* LV_SetLedCommunicationParameter 设置LED通讯参数
*
* 参数说明
* pCommunicationInfo 通讯参数赋值方式见COMMUNICATIONINFO结构体注示
* pLedCommunicationParameter 详见LEDCOMMUNICATIONPARAMETER结构体注示
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_SetLedCommunicationParameter", CharSet = CharSet.Unicode)]
public static extern int LV_SetLedCommunicationParameter(ref COMMUNICATIONINFO pCommunicationInfo, ref LEDCOMMUNICATIONPARAMETER pLedCommunicationParameter);
/*********************************************************************************************
* LV_LedInitServer 启动控制卡心跳包服务 注C2M、C4M才支持
*
* 参数说明
* port 监听的端口
* 返回值
* 0 成功
* 非0 失败调用LV_GetError来获取错误信息
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_LedInitServer", CharSet = CharSet.Unicode)]
public static extern int LV_LedInitServer(int port);
/*********************************************************************************************
* LV_LedShudownServer 断开控制卡心跳包服务 注C2M、C4M才支持
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_LedShudownServer", CharSet = CharSet.Unicode)]
public static extern int LV_LedShudownServer();
/*********************************************************************************************
* LV_RegisterLedServerCallback 注册回调函数 注C2M、C4M才支持
*
* 参数说明
* serverCallback 回调函数
********************************************************************************************/
[DllImport("lv_led_64.dll", EntryPoint = "LV_RegisterLedServerCallback", CharSet = CharSet.Unicode)]
public static extern int LV_RegisterLedServerCallback(SERVERINFOCALLBACK serverCallback);
/*********************************************************************************************
* LV_GetError 获取错误信息(只支持中文)
*
* 参数说明
* nErrCode 函数执行返回的错误代码
* 返回值
* 错误信息字符串
********************************************************************************************/
public static string LS_GetError(int nErrCode)
{
string ErrStr = nErrCode switch
{
-1 => "无效的节目句柄。",
-2 => "节目已经存在。",
-3 => "指定的节目不存在。",
-4 => "定的区域不存在。",
-5 => "创建socket失败。",
-6 => "错误的回复包。",
-7 => "不支持的文件类型。",
-8 => "IP网关掩码或MAC字符串格式错误。",
-9 => "错误的波特率。",
-10 => "文件路径不存在。",
-11 => "区域重叠。",
-12 => "打开文件失败。",
-14 => "区域已存在。",
-15 => "无效的发送类型。",
-16 => "绘图失败。",
-17 => "创建文件夹失败。",
-30 => "打开串口失败。",
-31 => "设置串口超时失败。",
-32 => "设置串口缓冲区失败。",
-33 => "串口发送数据失败。",
-34 => "串口接收数据失败。",
-35 => "串口设置失败。",
-36 => "串口接收数据超时。",
-37 => "USB不支持群发。",
-38 => "发送取消。",
-100 => "网络连接失败。",
-101 => "网络发送失败。",
-102 => "网络接收数据失败。",
-103 => "bind失败。",
-104 => "无可用网卡。",
0xc140 => "Logo与参屏大小不适应。",
0xdaa3 => "控制器繁忙。",
0xd5b0 => "固件程序型号不匹配。",
0xd5b4 => "不是有效的固件程序。",
0xdab8 => "节目颜色或屏宽高与控制卡屏参设定值不一致。",
0xc1ba => "超出控制卡带载。",
0xdab5 => "节目数据大小超过允许的最大值。",
_ => "未定义错误。",
};
return ErrStr;
}
}