//=============================================================================== // // LabLed // 组件 -- LED显示屏 组件 // // ----- 用于对机房LED显示屏控制 // //=============================================================================== // // Copyright (C) 2002-2007 北京顶点时空软件工作室 // 保留所有的权利. // // 创建日期: 2007-12-10 // 创 建 者: Liushiying (lsy@sogou.com) // 创建说明: LED显示屏控制类 // 修改日期: 2007-12-10 // 修 改 者: Liushiying (lsy@sogou.com) // 修改说明: // //=============================================================================== namespace LabLed.Components { using System; using System.Diagnostics; using System.Runtime.InteropServices; /// /// LED显示屏控制类 /// public class LedCommon : IDisposable { #region 常量及枚举定义 /// /// 通讯方式常量 /// public enum eDevType { DEV_COM = 0, //串口通讯 0 DEV_UDP, //UDP通讯 1 DEV_MODEM //Modem通讯 2 } /// /// 端口常量 /// public enum eCommPort { Address = 0, //网络地址 ComPort = 4 //用COM4作为通讯端口 } /// /// 串行通讯速度 /// public enum eBaudRate { SBR_9600 = 0, //串口速率9600 0 SBR_14400, //串口速率14400 1 SBR_19200, //串口速率19200 2 SBR_38400, //串口速率38400 3 SBR_57600, //串口速率57600 4 SBR_115200 //串口速率115200 5 } /// /// 播放类型 /// public enum eRootType { ROOT_PLAY = 17, //下发节目为播放数据 17 ROOT_DOWNLOAD //下发节目为保存并播放 18 } /// /// 显示屏类型常量 /// public enum eScreenType { SCREEN_UNICOLOR = 1, //单色显示屏 SCREEN_COLOR, //双色显示屏 SCREEN_RGB, //无灰度全彩 SCREEN_FULL_4BIT, //16级灰度全彩 SCREEN_FULL_10BIT //1024级灰度全彩 } /// /// 响应消息常量 /// public enum eResponseMessage { LM_RX_COMPLETE = 1, //接收结束 1 LM_TX_COMPLETE, //发送结束 2 LM_RESPOND, //收到应答 3 LM_TIMEOUT, //超时 4 LM_NOTIFY, //通知消息 5 LM_PARAM, LM_TX_PROGRESS, //发送中 7 LM_RX_PROGRESS //接收中 8 } /// /// 电源状态常量 /// public enum ePowerStatus { LED_POWER_OFF = 0, //显示屏电源已关闭 0 LED_POWER_ON //显示屏电源打开 1 } //时间格式常量 public enum eTimeFormat { DF_YMD = 1, // 1 年月日 "2004年12月31日" DF_HN, // 2 时分 "19:20" DF_HNS, // 3 时分秒 "19:20:30" DF_Y, // 4 年 "2004" DF_M, // 5 月 "12" "01" 注意:始终显示两位数字 DF_D, // 6 日 DF_H, // 7 时 DF_N, // 8 分 DF_S, // 9 秒 DF_W // 10 星期 "星期三" } /// /// 正计时、倒计时format参数 /// public enum eCountType { CF_DAY = 0, // 0 天数 CF_HOUR, // 1 小时数 CF_HMS, // 2 时分秒 CF_HM, // 3 时分 CF_MS, // 4 分秒 CF_S // 5 秒 } public const int ETHER_ADDRESS_LENGTH = 6; public const int IP_ADDRESS_LENGTH = 4; public const int NOTIFY_NONE = 0; public const int NOTIFY_EVENT = 1; public const int NOTIFY_BLOCK = 2; public const int FONT_SET_16 = 0; //16点阵字符 public const int FONT_SET_24 = 1; //24点阵字符 public const int PKC_QUERY = 4; public const int PKC_ADJUST_TIME = 6; public const int PKC_GET_PARAM = 7; public const int PKC_SET_PARAM = 8; public const int PKC_GET_POWER = 9; public const int PKC_SET_POWER = 10; public const int PKC_GET_BRIGHT = 11; public const int PKC_SET_BRIGHT = 12; public const int PKC_SET_AUTO_POWER = 61; public const int PKC_GET_LEAF = 65; public const int PKC_SET_LEAF = 66; #endregion #region 结构体定义 /// /// 结构体定义 /// //设备定义 public struct DEVICEPARAM { public uint devType; //通讯设备类型 public uint Speed; //通讯速度(仅对串行通讯有用) public uint ComPort; public uint FlowCon; public uint locPort; //本地端口(对串行通讯为:串口号;对UDP通讯为:本地端口号,一般要大于1024) public uint rmtPort; //远程端口号(对UDP通讯有用,必须为6666) public uint memory; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public byte[] Phone; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] public uint[] Reserved; } //显示区域定义 public struct RECT { public int left; public int top; public int right; public int bottom; } public struct SYSTEMTIME { public ushort wYear; public ushort wMonth; public ushort wDayOfWeek; public ushort wDay; public ushort wHour; public ushort wMinute; public ushort wSecond; public ushort wMilliseconds; } public struct TIMESTAMP{ public int time; public int date; } public struct AUTOPOWERTIME { public uint enabled; public int opentime0_time; public int opentime0_date; public int opentime1_time; public int opentime1_date; public int opentime2_time; public int opentime2_date; public int opentime3_time; public int opentime3_date; public int opentime4_time; public int opentime4_date; public int opentime5_time; public int opentime5_date; public int opentime6_time; public int opentime6_date; public int closetime0_time; public int closetime0_date; public int closetime1_time; public int closetime1_date; public int closetime2_time; public int closetime2_date; public int closetime3_time; public int closetime3_date; public int closetime4_time; public int closetime4_date; public int closetime5_time; public int closetime5_date; public int closetime6_time; public int closetime6_date; } public struct NotifyMessage { public int Message; public int Command; public int Result; public int Status; public int Address; public int Size; public int Buffer; public DEVICEPARAM param; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)] public string Host; public int port; } public struct TDevInfo { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public char[] devName; //设备名称 public UInt32 devID; //设备标识 public UInt32 devIP; //设备IP地址 public UInt16 devAddr; //设备地址 public UInt16 devPort; //设备端口 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] public UInt32[] reserved; } public struct TDevReport { public TDevInfo devInfo; public double timeUpdate; } public struct TBoardParam { public UInt16 width; public UInt16 height; public UInt16 type; public UInt16 frequency; public UInt32 flag; public UInt32 uart; [MarshalAs(UnmanagedType.ByValArray, SizeConst = ETHER_ADDRESS_LENGTH)] public byte[] mac; [MarshalAs(UnmanagedType.ByValArray, SizeConst = IP_ADDRESS_LENGTH)] public byte[] ip; [MarshalAs(UnmanagedType.ByValArray, SizeConst = ETHER_ADDRESS_LENGTH)] public byte[] GateMAC; [MarshalAs(UnmanagedType.ByValArray, SizeConst = IP_ADDRESS_LENGTH)] public byte[] host; public UInt32 brightness; public UInt32 rom_size; public Int32 left; public Int32 top; public UInt16 scan_mode; public UInt16 remote_port; public UInt16 line_order; public UInt16 oe_time; public UInt16 shift_freq; public UInt16 refresh_freq; [MarshalAs(UnmanagedType.ByValArray, SizeConst = IP_ADDRESS_LENGTH)] public byte[] GateIP; [MarshalAs(UnmanagedType.ByValArray, SizeConst = IP_ADDRESS_LENGTH)] public byte[] ipMask; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public byte[] name; public UInt32 ident; public UInt32 address; } #endregion /// /// API封闭 /// public LedCommon() { // // TODO: 在此处添加构造函数逻辑 // } #region 获取当前系统时间 /// /// 获取当前系统时间,日期时间格式 /// [DllImport("kernel32.dll", EntryPoint="GetLocalTime")] public static extern void DLL_GetLocalTime(ref SYSTEMTIME lpSystemTime); /// /// 获取当前系统时间 /// /// 系统时间变量 /// public void GetLocalTime(ref SYSTEMTIME lpSystemTime) { DLL_GetLocalTime(ref lpSystemTime); } #endregion #region 函数 Dispose 释放资源 /// /// 释放资源 /// public void Dispose() { Dispose(true); GC.SuppressFinalize(true); } protected virtual void Dispose(bool disposing) { if (!disposing) return; } #endregion #region 打开通讯信道 //long (_stdcall *LED_Open)(const PDeviceParam param, long Notify, long Window, long Message); [DllImport("LEDSender.DLL", EntryPoint="LED_Open")] public static extern int DLL_LED_Open(ref DEVICEPARAM param,int Notify, int Window, int Message); /// /// 打开通讯信道 /// /// DEVICEPARAM结构的设备参数 /// 是否产生通知消息 0:不产生 1:产生 /// 接收通知消息的窗口句柄 /// 消息标识 /// public int LED_Open(ref DEVICEPARAM param, int Notify, int Window, int Message) { return DLL_LED_Open(ref param, Notify, Window, Message); } #endregion #region 关闭通讯信道 //void (_stdcall *LED_Close)(long dev); [DllImport("LEDSender.DLL", EntryPoint = "LED_Close")] public static extern void DLL_LED_Close(int dev); /// /// 关闭已打开的通讯设备 /// /// LED_Open函数的返回值 public void LED_Close(int dev) { System.Threading.Thread.Sleep(100); DLL_LED_Close(dev); } #endregion #region 关闭所有通讯信道 //void (_stdcall *LED_CloseAll)(); [DllImport("LEDSender.DLL", EntryPoint = "LED_CloseAll")] public static extern void DLL_LED_CloseAll(); /// /// 关闭已打开的通讯设备 /// public void LED_CloseAll() { System.Threading.Thread.Sleep(100); DLL_LED_CloseAll(); } #endregion #region 查询某个通讯信道的状态 //long (_stdcall *LED_GetDeviceStatus)(long dev); [DllImport("LEDSender.DLL", EntryPoint = "LED_GetDeviceStatus")] public static extern int DLL_LED_GetDeviceStatus(int dev); /// /// 查询某个通讯信道的状态 /// /// LED_Open函数的返回值 /// 通讯状态 0:该信道空闲,可以通讯 1:信道正在通讯中 -1:信道未打开或者打开错误 public int LED_GetDeviceStatus(int dev) { return DLL_LED_GetDeviceStatus(dev); } #endregion #region 创建在线监听显示屏服务 //void (_stdcall *LED_CreateReportServer)(WORD port); [DllImport("LEDSender.DLL", EntryPoint = "LED_CreateReportServer")] public static extern void DLL_LED_CreateReportServer(UInt16 port); /// /// 创建在线监听显示屏服务 /// public void LED_CreateReportServer(UInt16 port) { DLL_LED_CreateReportServer(port); } #endregion #region 释放在线监听显示屏服务 //void (_stdcall *LED_ReleaseReportServer)(void); [DllImport("LEDSender.DLL", EntryPoint = "LED_ReleaseReportServer")] public static extern void DLL_LED_ReleaseReportServer(); /// /// 释放在线监听显示屏服务 /// public void LED_ReleaseReportServer() { DLL_LED_ReleaseReportServer(); } #endregion #region 获取在线显示屏数量 //long (_stdcall *LED_GetOnlineCount)(void); [DllImport("LEDSender.DLL", EntryPoint = "LED_GetOnlineCount")] public static extern int DLL_LED_GetOnlineCount(); /// /// 获取在线显示屏数量 /// public int LED_GetOnlineCount() { return DLL_LED_GetOnlineCount(); } #endregion #region 获取在线显示屏列表 //long (_stdcall *LED_GetOnlineList2)(PDevice* obuffer); [DllImport("LEDSender.DLL", EntryPoint = "LED_GetOnlineList2")] public static extern int DLL_LED_GetOnlineList(ref TDevReport obuffer); /// /// 获取在线显示屏列表 /// public int LED_GetOnlineList(ref TDevReport obuffer) { return DLL_LED_GetOnlineList(ref obuffer); } #endregion #region 获取在线显示屏 //long (_stdcall *LED_GetOnlineItem2)(long index, PDevice* obuffer); [DllImport("LEDSender.DLL", EntryPoint = "LED_GetOnlineItem2")] public static extern int DLL_LED_GetOnlineItem(int index, ref TDevReport obuffer); /// /// 获取在线显示屏列表 /// public int LED_GetOnlineItem(int index, ref TDevReport obuffer) { return DLL_LED_GetOnlineItem(index, ref obuffer); } #endregion #region 获取在线显示屏数量 //long (_stdcall *LED_GetDeviceOnlineCount)(long dev); [DllImport("LEDSender.DLL", EntryPoint = "LED_GetDeviceOnlineCount")] public static extern int DLL_LED_GetDeviceOnlineCount(int dev); /// /// 获取在线显示屏数量 /// public int LED_GetDeviceOnlineCount(int dev) { return DLL_LED_GetDeviceOnlineCount(dev); } #endregion #region 获取在线显示屏 //long (_stdcall *LED_GetDeviceOnlineItem2)(long dev, long index, PDevice* obuffer); [DllImport("LEDSender.DLL", EntryPoint = "LED_GetDeviceOnlineItem2")] public static extern int DLL_LED_GetDeviceOnlineItem(int dev, int index, ref TDevReport obuffer); /// /// 获取在线显示屏列表 /// public int LED_GetDeviceOnlineItem(int dev, int index, ref TDevReport obuffer) { return DLL_LED_GetDeviceOnlineItem(dev, index, ref obuffer); } #endregion #region 查询显示屏是否能够通讯 //void (_stdcall *LED_Query)(long dev, BYTE Address, char *Host, WORD port); [DllImport("LEDSender.DLL", EntryPoint="LED_Query")] public static extern void DLL_LED_Query(int dev, byte Address, string Host, int port); /// /// 查询显示屏是否能够通讯 /// /// 该参数是LED_Open函数的返回值 /// /// 显示屏IP地址 (仅对UDP有效);串口通讯可以写任意地址或者空 /// 显示屏端口号(如果是UDP通讯,该端口为6666) public void LED_Query(int dev, byte Address, string Host, int port) { DLL_LED_Query(dev, Address, Host, port); } #endregion #region 用计算机时钟校正显示屏内时钟 //void (_stdcall *LED_AdjustTime)(long dev, BYTE Address, char *Host, WORD port); [DllImport("LEDSender.DLL", EntryPoint="LED_AdjustTime")] public static extern void DLL_LED_AdjustTime(int dev, byte Address, string Host, int port); /// /// 计算机时钟校正显示屏内时钟 /// /// /// /// /// public void LED_AdjustTime(int dev, byte Address, string Host, int port) { DLL_LED_AdjustTime(dev, Address, Host, port); } #endregion #region 设置自动开关屏时间 //void (_stdcall *LED_SetAutoPowerList)(long dev, BYTE Address, char *Host, long port, PAutoPowerTime value); [DllImport("LEDSender.DLL", EntryPoint = "LED_SetAutoPowerList")] public static extern void DLL_LED_SetAutoPowerList(int dev, byte Address, string Host, int port, ref AUTOPOWERTIME value); /// /// 计算机时钟校正显示屏内时钟 /// /// /// /// /// /// public void LED_SetAutoPowerList(int dev, byte Address, string Host, int port, ref AUTOPOWERTIME value) { DLL_LED_SetAutoPowerList(dev, Address, Host, port, ref value); } #endregion #region 保存节目数据到文件 //void (_stdcall *LED_SaveStreamToFile)(char *filename); [DllImport("LEDSender.DLL", EntryPoint = "LED_SaveStreamToFile")] public static extern void DLL_LED_SaveStreamToFile(string filename); /// /// 将形成的节目数据发送到显示屏 /// /// public void LED_SaveStreamToFile(string filename) { DLL_LED_SaveStreamToFile(filename); } #endregion #region 发送数据到显示屏 //void (_stdcall *LED_SendToScreen)(long dev, BYTE Address, char *Host, WORD port); [DllImport("LEDSender.DLL", EntryPoint="LED_SendToScreen")] public static extern void DLL_LED_SendToScreen(int dev, byte Address, string Host, int port); /// /// 将形成的节目数据发送到显示屏 /// /// /// /// /// public void LED_SendToScreen(int dev, byte Address, string Host, int port) { DLL_LED_SendToScreen(dev, Address, Host, port); } #endregion #region 发送数据到显示屏 //DWORD (_stdcall *LED_SendToScreenTest)(long dev, BYTE Address, char *Host, WORD port); [DllImport("LEDSender.DLL", EntryPoint = "LED_SendToScreenTest")] public static extern Int32 DLL_LED_SendToScreenTest(int dev, byte Address, string Host, int port); /// /// 将形成的节目数据发送到显示屏 /// /// /// /// /// public Int32 LED_SendToScreenTest(int dev, byte Address, string Host, int port) { return DLL_LED_SendToScreenTest(dev, Address, Host, port); } #endregion #region 获取当前页面 //void (_stdcall *LED_GetLeaf)(long dev, BYTE Address, char *Host, WORD port); [DllImport("LEDSender.DLL", EntryPoint = "LED_GetLeaf")] public static extern void DLL_LED_GetLeaf(int dev, byte Address, string Host, int port); /// /// 获取当前页面 /// /// /// /// /// public void LED_GetLeaf(int dev, byte Address, string Host, int port) { DLL_LED_GetLeaf(dev, Address, Host, port); } #endregion #region 设置当前页面 //void (_stdcall *LED_SetLeaf)(long dev, BYTE Address, char *Host, WORD port, DWORD Value); [DllImport("LEDSender.DLL", EntryPoint = "LED_SetLeaf")] public static extern void DLL_LED_SetLeaf(int dev, byte Address, string Host, int port, uint Value); /// /// 设置当前页面 /// /// /// /// /// /// 页面编号 public void LED_SetLeaf(int dev, byte Address, string Host, int port, uint Value) { DLL_LED_SetLeaf(dev, Address, Host, port, Value); } #endregion #region 读取控制卡参数设置 //long (_stdcall *LED_GetLEDParamDirect)(long dev, BYTE Address, char *Host, long port, PBoardParam param); [DllImport("LEDSender.DLL", EntryPoint = "LED_GetLEDParamDirect")] public static extern int DLL_LED_GetLEDParamDirect(int dev, byte Address, string Host, int port,ref TBoardParam param); /// /// 获取电源状态 /// /// /// /// /// public int LED_GetLEDParamDirect(int dev, byte Address, string Host, int port, ref TBoardParam param) { return DLL_LED_GetLEDParamDirect(dev, Address, Host, port, ref param); } #endregion #region 保存控制卡参数设置 //void (_stdcall *LED_SetLEDParam)(long dev, BYTE Address, char *Host, long port, PBoardParam param); [DllImport("LEDSender.DLL", EntryPoint = "LED_SetLEDParam")] public static extern void DLL_LED_SetLEDParam(int dev, byte Address, string Host, int port, ref TBoardParam param); /// /// 获取电源状态 /// /// /// /// /// public void LED_SetLEDParam(int dev, byte Address, string Host, int port, ref TBoardParam param) { DLL_LED_SetLEDParam(dev, Address, Host, port, ref param); } #endregion #region 获取电源状态 //void (_stdcall *LED_GetPower)(long dev, BYTE Address, char *Host, WORD port); [DllImport("LEDSender.DLL", EntryPoint="LED_GetPower")] public static extern void DLL_LED_GetPower(int dev, byte Address, string Host, int port); /// /// 获取电源状态 /// /// /// /// /// public void LED_GetPower(int dev, byte Address, string Host, int port) { DLL_LED_GetPower(dev, Address, Host, port); } #endregion #region 设置显示屏电源 //void (_stdcall *LED_SetPower)(long dev, BYTE Address, char *Host, WORD port, DWORD Power); [DllImport("LEDSender.DLL", EntryPoint = "LED_SetPower")] public static extern void DLL_LED_SetPower(int dev, byte Address, string Host, int port, uint Power); /// /// 打开或关闭显示屏电源 /// /// /// /// /// /// LED_POWER_ON 打开电源, LED_POWER_OFF 关闭电源 public void LED_SetPower(int dev, byte Address, string Host, int port, ePowerStatus Power) { DLL_LED_SetPower(dev, Address ,Host ,port , (uint)Power); } #endregion #region 获取显示屏亮度 //void (_stdcall *LED_GetBrightness)(long dev, BYTE Address, char *Host, WORD port); [DllImport("LEDSender.DLL", EntryPoint = "LED_GetBrightness")] public static extern void DLL_LED_GetBrightness(int dev, byte Address, string Host, int port); /// /// 获取显示屏亮度 /// /// /// /// /// public void LED_GetBrightness(int dev, byte Address, string Host, int port) { DLL_LED_GetBrightness(dev, Address ,Host ,port); } #endregion #region 设置显示屏亮度 //void (_stdcall *LED_SetBrightness)(long dev, BYTE Address, char *Host, WORD port, int Brightness); [DllImport("LEDSender.DLL", EntryPoint = "LED_SetBrightness")] public static extern void DLL_LED_SetBrightness(int dev, byte Address, string Host, int port, int Brightness); /// /// 设置显示屏亮度 /// /// /// /// /// /// public void LED_SetBrightness(int dev, byte Address, string Host, int port, int Brightness) { DLL_LED_SetBrightness(dev, Address ,Host ,port, Brightness); } #endregion #region 获取消息 //void (_stdcall *LED_GetNotifyMessage)(PNotifyMessage Notify); [DllImport("LEDSender.DLL", EntryPoint = "LED_GetNotifyMessage")] public static extern void DLL_LED_GetNotifyMessage(ref NotifyMessage Notify); public void LED_GetNotifyMessage(ref NotifyMessage Notify) { DLL_LED_GetNotifyMessage(ref Notify); } #endregion #region 获取某个设备的消息 //long (_stdcall *LED_GetDeviceNotifyMessage)(long dev, PNotifyMessage Notify); [DllImport("LEDSender.DLL", EntryPoint = "LED_GetDeviceNotifyMessage")] public static extern int DLL_LED_GetDeviceNotifyMessage(int dev, ref NotifyMessage Notify); public int LED_GetDeviceNotifyMessage(int dev, ref NotifyMessage Notify) { return DLL_LED_GetDeviceNotifyMessage(dev, ref Notify); } #endregion #region 得取选项 //long (_stdcall *LED_GetOption)(int Index) [DllImport("LEDSender.DLL", EntryPoint = "LED_GetOption")] public static extern int DLL_LED_GetOption(int Index); public void LED_GetOption(int Index) { DLL_LED_GetOption(Index); } #endregion #region 设置选项 //long (_stdcall *LED_SetOption)(int Index, DWORD Value); [DllImport("LEDSender.DLL", EntryPoint = "LED_SetOption")] public static extern int DLL_LED_SetOption(int Index, uint Value); public void LED_SetOption(int Index, uint Value) { DLL_LED_SetOption(Index, Value); } #endregion #region 开始形成显示屏数据 //long (_stdcall *MakeRoot)(long RootType, long ScreenType); [DllImport("LEDSender.DLL", EntryPoint="MakeRoot")] public static extern int DLL_MakeRoot(int RootType, int ScreenType); /// /// 开始形成显示屏数据 /// /// ROOT_PLAY 仅用于播放, ROOT_DOWNLOAD 下载并播放,无特殊必要,请不要使用下载 /// 显示屏类型 SCREEN_UNICOLOR 单色显示屏, SCREEN_COLOR 双色显示屏 /// public int MakeRoot(eRootType RootType, eScreenType ScreenType) { return DLL_MakeRoot((int)RootType, (int)ScreenType); } #endregion #region 开始形成显示屏数据 //long (_stdcall *MakeRootEx)(long RootType, long ScreenType, long survive); [DllImport("LEDSender.DLL", EntryPoint = "MakeRootEx")] public static extern int DLL_MakeRootEx(int RootType, int ScreenType, int Survive); /// /// 开始形成显示屏数据 /// /// ROOT_PLAY 仅用于播放, ROOT_DOWNLOAD 下载并播放,无特殊必要,请不要使用下载 /// 显示屏类型 SCREEN_UNICOLOR 单色显示屏, SCREEN_COLOR 双色显示屏 /// 节目显示的有效时间,到时间后,会恢复显示原来内置下载的节目 /// public int MakeRootEx(eRootType RootType, eScreenType ScreenType, int Survive) { return DLL_MakeRootEx((int)RootType, (int)ScreenType, Survive); } #endregion #region 增加页面,并指定显示时间 //long (_stdcall *AddLeaf)(long DisplayTime); [DllImport("LEDSender.DLL", EntryPoint="AddLeaf")] public static extern int DLL_AddLeaf(int DisplayTime); /// /// 增加页面,并指定显示时间 /// /// 页面显示时间,单位为毫秒(ms) /// public int AddLeaf(int DisplayTime) { return DLL_AddLeaf(DisplayTime); } #endregion #region 在当前显示页面上创建一个显示区域,显示内容来自于dc //long (_stdcall *AddWindow)(HDC dc,short width, short height, LPRECT rect, long method, long speed, long transparent); [DllImport("LEDSender.DLL", EntryPoint="AddWindow")] public static extern int DLL_AddWindow(int dc, short width, short height, ref RECT rect, int method, int speed,int transparent); /// /// 在当前显示页面上创建一个显示区域,显示内容来自于dc /// /// 设备句柄 /// 截取的宽度 /// 截取的高度 /// 显示区域 /// 显示方式 /// 显示速度 /// 是否透明 /// public int AddWindow(int dc, short width, short height, ref RECT rect, int method, int speed,int transparent) { return DLL_AddWindow(dc, width, height, ref rect, method, speed,transparent); } #endregion #region 在当前显示页面上创建一个显示区域,显示内容来自于图片文件 //long (_stdcall *AddPicture)(char *filename, LPRECT rect, long method, long speed, long transparent, long stretch); [DllImport("LEDSender.DLL", EntryPoint = "AddPicture")] public static extern int DLL_AddPicture(string filename, ref RECT rect, int method, int speed, int transparent, int stretch); /// /// 在当前显示页面上创建一个显示区域,显示内容来自于dc /// /// 图片文件名 /// 显示区域 /// 显示方式 /// 显示速度 /// 是否透明 /// 是否按照显示区域拉伸 /// public int AddPicture(string filename, ref RECT rect, int method, int speed, int transparent, int stretch) { return DLL_AddPicture(filename, ref rect, method, speed, transparent, stretch); } #endregion #region 在当前页面创建一个数字时钟 //long (_stdcall *AddDateTime)(LPRECT rect, long transparent, char *fontname, long fontsize, long fontcolor, long format, long fontstyle); [DllImport("LEDSender.DLL", EntryPoint="AddDateTime")] public static extern int DLL_AddDateTime(ref RECT rect, int transparent, string fontname, int fontsize, int fontcolor, int format, int fontstyle); /// /// 在当前页面创建一个数字时钟 /// /// 显示区域 /// 是否透明 /// 字体名 /// 字体大小 /// 字体颜色 /// 时钟格式 /// public int AddDateTime(ref RECT rect, int transparent, string fontname, int fontsize, int fontcolor, eTimeFormat format, int fontstyle) { return DLL_AddDateTime(ref rect, transparent, fontname, fontsize, fontcolor, (int)format, fontstyle); } #endregion #region 显示内码汉字 //long (_stdcall *AddString)(char *str, LPRECT rect, long method, long speed, long transparent, long fontset, long fontcolor); [DllImport("LEDSender.DLL", EntryPoint="AddString")] public static extern int DLL_AddString(string str, ref RECT rect, int method, int speed, int transparent,int fontset, int fontcolor); public int AddString(string str, ref RECT rect, int method, int speed, int transparent,int fontset, int fontcolor) { return DLL_AddString(str, ref rect, method, speed, transparent, fontset, fontcolor); } #endregion #region 显示windows汉字 //long (_stdcall *AddText)(char *str, LPRECT rect, long method, long speed, long transparent, char *fontname, long fontsize, long fontcolor, long fontstyle = 0); [DllImport("LEDSender.DLL", EntryPoint="AddText")] public static extern int DLL_AddText(string str, ref RECT rect, int method, int speed, int transparent,string fontname, int fontsize, int fontcolor, int fontstyle); public int AddText(string str, ref RECT rect, int method, int speed, int transparent,string fontname, int fontsize, int fontcolor, int fontstyle) { return DLL_AddText(str, ref rect, method, speed, transparent,fontname, fontsize, fontcolor, fontstyle); } #endregion #region 显示windows汉字,多行文字 //long (_stdcall *AddTextEx)(char *str, LPRECT rect, long method, long speed, long transparent, char *fontname, long fontsize, long fontcolor, long fontstyle = 0, long wordwrap = 0); [DllImport("LEDSender.DLL", EntryPoint = "AddTextEx")] public static extern int DLL_AddTextEx(string str, ref RECT rect, int method, int speed, int transparent, string fontname, int fontsize, int fontcolor, int fontstyle, int wordwrap); public int AddTextEx(string str, ref RECT rect, int method, int speed, int transparent, string fontname, int fontsize, int fontcolor, int fontstyle, int wordwrap) { return DLL_AddTextEx(str, ref rect, method, speed, transparent, fontname, fontsize, fontcolor, fontstyle, wordwrap); } #endregion #region 显示动画 //long (_stdcall *AddMovie)(char *filename, LPRECT rect, long stretch); [DllImport("LEDSender.DLL", EntryPoint="AddMovie")] public static extern int DLL_AddMovie(string filename, ref RECT rect, int stretch); public int AddMovie(string filename, ref RECT rect, int stretch) { return DLL_AddMovie(filename, ref rect, stretch); } #endregion #region 当前页面创建一个正计时显示区域 //long (_stdcall *AddCountUp)(LPRECT rect, long transparent, char *fontname, long fontsize, long fontcolor, long format, LPSYSTEMTIME starttime, long fontstyle); [DllImport("LEDSender.DLL", EntryPoint="AddCountUp")] public static extern int DLL_AddCountUp(ref RECT rect, int transparent, string fontname, int fontsize, int fontcolor, int format, ref SYSTEMTIME starttime, int fontstyle); public int AddCountUp(ref RECT rect, int transparent, string fontname, int fontsize, int fontcolor, eCountType format, ref SYSTEMTIME starttime, int fontstyle) { return DLL_AddCountUp(ref rect, transparent, fontname, fontsize, fontcolor, (int)format, ref starttime, fontstyle); } #endregion #region 在当前显示页面创建一个倒计时显示区域 //long (_stdcall *AddCountDown)(LPRECT rect,long transparent, char *fontname, long fontsize, long fontcolor, long format, LPSYSTEMTIME endtime, long fontstyle); [DllImport("LEDSender.DLL", EntryPoint="AddCountDown")] public static extern int DLL_AddCountDown(ref RECT rect, int transparent, string fontname, int fontsize, int fontcolor, int format, ref SYSTEMTIME endtime, int fontstyle); public int AddCountDown(ref RECT rect, int transparent, string fontname, int fontsize, int fontcolor, eCountType format, ref SYSTEMTIME endtime, int fontstyle) { return DLL_AddCountDown(ref rect, transparent, fontname, fontsize, fontcolor, (int)format, ref endtime, fontstyle); } #endregion #region 在当前显示页面创建一个温度显示区域 //Function AddTemperature(ARect: PRect; Transparent: Integer; FontName: PChar; FontSize: Integer; FontColor: Integer; FontStyle: Integer = 0): Integer; Stdcall; [DllImport("LEDSender.DLL", EntryPoint = "AddTemperature")] public static extern int DLL_AddTemperature(ref RECT rect, int transparent, string fontname, int fontsize, int fontcolor, int fontstyle); public int AddTemperature(ref RECT rect, int transparent, string fontname, int fontsize, int fontcolor, int fontstyle) { return DLL_AddTemperature(ref rect, transparent, fontname, fontsize, fontcolor, fontstyle); } #endregion #region 在当前显示页面创建一个湿度显示区域 //Function AddHumidity(ARect: PRect; Transparent: Integer; FontName: PChar; FontSize: Integer; FontColor: Integer; FontStyle: Integer = 0): Integer; Stdcall; [DllImport("LEDSender.DLL", EntryPoint = "AddHumidity")] public static extern int DLL_AddHumidity(ref RECT rect, int transparent, string fontname, int fontsize, int fontcolor, int fontstyle); public int AddHumidity(ref RECT rect, int transparent, string fontname, int fontsize, int fontcolor, int fontstyle) { return DLL_AddHumidity(ref rect, transparent, fontname, fontsize, fontcolor, fontstyle); } #endregion #region 在当前显示页面创建一个模拟时钟 //long (_stdcall *AddClock)(LPRECT rect, long transparent, long WidthH, long WidthM, long DotH, long DotM, DWORD ColorH, DWORD ColorM, DWORD ColorS, DWORD ColorD, DWORD ColorN); [DllImport("LEDSender.DLL", EntryPoint = "AddClock")] public static extern int DLL_AddClock(ref RECT rect, int transparent, int WidthH, int WidthM, int DotH, int DotM, uint ColorH, uint ColorM, uint ColorS, uint ColorD, uint ColorN); /// /// 在当前显示页面上创建一个显示区域,显示内容来自于dc /// /// 显示区域 /// 是否透明 /// 整点半径 /// 3,6,9点半径 /// 小时指针颜色 /// 分钟指针颜色 /// 秒指针颜色 /// 3,6,9点颜色 /// 整点颜色 /// 小时指针宽度 /// 分钟指针宽度 /// public int AddClock(ref RECT rect, int transparent, int WidthH, int WidthM, int DotH, int DotM, uint ColorH, uint ColorM, uint ColorS, uint ColorD, uint ColorN) { return DLL_AddClock(ref rect, transparent, WidthH, WidthM, DotH, DotM, ColorH, ColorM, ColorS, ColorD, ColorN); } #endregion #region 获取起始包的数据,以16进制保存到指定文本文件中 //long (_stdcall *LED_ExportBeginPacket)(char *filename, long address); [DllImport("LEDSender.DLL", EntryPoint="LED_ExportBeginPacket")] public static extern int DLL_LED_ExportBeginPacket(string filename, int address); public int LED_ExportBeginPacket(string filename, int address) { return DLL_LED_ExportBeginPacket(filename, address); } #endregion #region 获取数据包的数量 //long (_stdcall *LED_GetDataPacketCount)(); [DllImport("LEDSender.DLL", EntryPoint = "LED_GetDataPacketCount")] public static extern int DLL_LED_GetDataPacketCount(); public int LED_GetDataPacketCount() { return DLL_LED_GetDataPacketCount(); } #endregion #region 获取数据包的数据,以16进制保存到指定文本文件中 //long (_stdcall *LED_ExportDataPacket)(char *filename, long address, long serialno); [DllImport("LEDSender.DLL", EntryPoint = "LED_ExportDataPacket")] public static extern int DLL_LED_ExportDataPacket(string filename, int address, int serialno); public int LED_ExportDataPacket(string filename, int address, int serialno) { return DLL_LED_ExportDataPacket(filename, address, serialno); } #endregion #region 获取结束包的数据,以16进制保存到指定文本文件中 //long (_stdcall *LED_ExportEndPacket)(char *filename, long address, long serialno); [DllImport("LEDSender.DLL", EntryPoint = "LED_ExportEndPacket")] public static extern int DLL_LED_ExportEndPacket(string filename, int address, int serialno); public int LED_ExportEndPacket(string filename, int address, int serialno) { return DLL_LED_ExportEndPacket(filename, address, serialno); } #endregion #region 获取设置电源状态的数据包,以16进制保存到指定文本文件中 //long (_stdcall *LED_ExportSetPowerPacket)(char *filename, long address, long value); [DllImport("LEDSender.DLL", EntryPoint = "LED_ExportSetPowerPacket")] public static extern int DLL_LED_ExportSetPowerPacket(string filename, int address, int value); public int LED_ExportSetPowerPacket(string filename, int address, int value) { return DLL_LED_ExportSetPowerPacket(filename, address, value); } #endregion #region 获取设置亮度的数据包,以16进制保存到指定文本文件中 //long (_stdcall *LED_ExportSetBrightPacket)(char *filename, long address, long value); [DllImport("LEDSender.DLL", EntryPoint = "LED_ExportSetBrightPacket")] public static extern int DLL_LED_ExportSetBrightPacket(string filename, int address, int value); public int LED_ExportSetBrightPacket(string filename, int address, int value) { return DLL_LED_ExportSetBrightPacket(filename, address, value); } #endregion #region 初始化绘图环境 //function UserCanvas_Init(AWidth: Integer; AHeight: Integer): Integer; stdcall; [DllImport("LEDSender.DLL", EntryPoint = "UserCanvas_Init")] public static extern int DLL_UserCanvas_Init(int width, int height); public int UserCanvas_Init(int width, int height) { return DLL_UserCanvas_Init(width, height); } #endregion #region 绘制直线 //function UserCanvas_Draw_Line(X, Y, X1, Y1: Integer; ALineWidth: Integer; AColor: Integer): Integer; stdcall; [DllImport("LEDSender.DLL", EntryPoint = "UserCanvas_Draw_Line")] public static extern int DLL_UserCanvas_Draw_Line(int x, int y, int x1, int y1, int linewidth, int color); public int UserCanvas_Draw_Line(int x, int y, int x1, int y1, int linewidth, int color) { return DLL_UserCanvas_Draw_Line(x, y, x1, y1, linewidth, color); } #endregion #region 绘制矩形 //function UserCanvas_Draw_Rectangle(X, Y, X1, Y1: Integer; ALineWidth: Integer; AColor: Integer; AFillColor: Integer): Integer; stdcall; [DllImport("LEDSender.DLL", EntryPoint = "UserCanvas_Draw_Rectangle")] public static extern int DLL_UserCanvas_Draw_Rectangle(int x, int y, int x1, int y1, int linewidth, int color, int fillcolor); public int UserCanvas_Draw_Rectangle(int x, int y, int x1, int y1, int linewidth, int color, int fillcolor) { return DLL_UserCanvas_Draw_Rectangle(x, y, x1, y1, linewidth, color, fillcolor); } #endregion #region 绘制椭圆、圆形 //function UserCanvas_Draw_Ellipse(X, Y, X1, Y1: Integer; ALineWidth: Integer; AColor: Integer; AFillColor: Integer): Integer; stdcall; [DllImport("LEDSender.DLL", EntryPoint = "UserCanvas_Draw_Ellipse")] public static extern int DLL_UserCanvas_Draw_Ellipse(int x, int y, int x1, int y1, int linewidth, int color, int fillcolor); public int UserCanvas_Draw_Ellipse(int x, int y, int x1, int y1, int linewidth, int color, int fillcolor) { return DLL_UserCanvas_Draw_Ellipse(x, y, x1, y1, linewidth, color, fillcolor); } #endregion #region 绘制圆角矩形 //function UserCanvas_Draw_RoundRect(X, Y, X1, Y1: Integer; ALineWidth: Integer; AColor: Integer; AFillColor: Integer; ARoundX, ARoundY: Integer): Integer; stdcall; [DllImport("LEDSender.DLL", EntryPoint = "UserCanvas_Draw_RoundRect")] public static extern int DLL_UserCanvas_Draw_RoundRect(int x, int y, int x1, int y1, int linewidth, int color, int fillcolor, int roundx, int roundy); public int UserCanvas_Draw_RoundRect(int x, int y, int x1, int y1, int linewidth, int color, int fillcolor, int roundx, int roundy) { return DLL_UserCanvas_Draw_RoundRect(x, y, x1, y1, linewidth, color, fillcolor, roundx, roundy); } #endregion #region 绘制文字 //function UserCanvas_Draw_Text(X, Y, CX, CY: Integer; Str: PChar; FontName: PChar; FontSize, FontColor, FontStyle: Integer; Alignment: Integer): Integer; stdcall; [DllImport("LEDSender.DLL", EntryPoint = "UserCanvas_Draw_Text")] public static extern int DLL_UserCanvas_Draw_Text(int x, int y, int x1, int y1, string str, string fontname, int fontsize, int fontcolor, int fontstyle, int alignment); public int UserCanvas_Draw_Text(int x, int y, int x1, int y1, string str, string fontname, int fontsize, int fontcolor, int fontstyle, int alignment) { return DLL_UserCanvas_Draw_Text(x, y, x1, y1, str, fontname, fontsize, fontcolor, fontstyle,alignment); } #endregion #region 将绘制的图片添加到显示屏数据中 //function AddUserCanvas(ARect: PRect; Method, Speed, Transparent: Integer): Integer; stdcall; [DllImport("LEDSender.DLL", EntryPoint = "AddUserCanvas")] public static extern int DLL_AddUserCanvas(ref RECT rect, int method, int speed, int transparent); public int AddUserCanvas(ref RECT rect, int method, int speed, int transparent) { return DLL_AddUserCanvas(ref rect, method, speed, transparent); } #endregion } }