二次开发包 6系列控制器 版本号:V20200720
支持6系列控制器
1. 支持静态区域的二次开发
2. 静态区和动态区提供C# 、JAVA 、VB、C++整套的开发工具
3. JAVA开发包支持windows, linux, android
4.Java开发包支持语音功能(必须控制卡也支持语音功能)
+++++++++++++++++++++++++++++++++++++++++++++++++++++
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace LedSDKDemo_CSharp
{
public class bxdualsdk
{
public enum E_ScreenColor_G56
{
eSCREEN_COLOR_SINGLE = 1, //单基色
eSCREEN_COLOR_DOUBLE, //双基色
eSCREEN_COLOR_THREE, //七彩色
eSCREEN_COLOR_FULLCOLOR, //全彩色
}
public enum E_DoubleColorPixel_G56 : int
{
eDOUBLE_COLOR_PIXTYPE_1 = 1, //双基色1:G+R
eDOUBLE_COLOR_PIXTYPE_2, //双基色2:R+G
}
public enum E_arrMode : int
{
eSINGLELINE, //单行
eMULTILINE, //多行
}
public enum E_DateStyle : int
{
eYYYY_MM_DD_MINUS, //YYYY-MM-DD
eYYYY_MM_DD_VIRGURE, //YYYY/MM/DD
eDD_MM_YYYY_MINUS, //DD-MM-YYYY
eDD_MM_YYYY_VIRGURE, //DD/MM/YYYY
eMM_DD_MINUS, //MM-DD
eMM_DD_VIRGURE, //MM/DD
eMM_DD_CHS, //MM月DD日
eYYYY_MM_DD_CHS, //YYYY年MM月DD日
}
public enum E_TimeStyle : int
{
eHH_MM_SS_COLON, //HH:MM:SS
eHH_MM_SS_CHS, //HH时MM分SS秒
eHH_MM_COLON, //HH:MM
eHH_MM_CHS, //HH时MM分
eAM_HH_MM, //AM HH:MM
eHH_MM_AM, //HH:MM AM
};
public enum E_WeekStyle : int
{
eMonday = 1, //Monday
eMon, //Mon.
eMonday_CHS, //星期一
}
public enum E_Color_G56
{
eBLACK, //黑色
eRED, //红色
eGREEN, //绿色
eYELLOW, //黄色
eBLUE,//蓝色
eMAGENTA,//品红/洋红
eCYAN,//青色
eWHITE,//白色
} //5代时间区只支持四种颜色
public enum E_ClockStyle
{
eLINE, //线形
eSQUARE, //方形
eCIRCLE, //圆形
};//表盘样式
public enum E_txtDirection
{
pNORMAL, //正常
pROTATERIGHT, //向右旋转
pMIRROR, //镜像
pROTATELEFT, //向左旋转
};//图文区文字方向---暂不支持
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct ConfigFile
{
public byte FileType; //文件类型
public byte[] ControllerName; // 控制器名称
ushort Address; //控制器地址
public byte Baudrate; /* 串口波特率
0x00 –保持原有波特率不变
0x01 –强制设置为 9600
0x02 –强制设置为 57600*/
ushort ScreenWidth; //显示屏宽度
ushort ScreenHeight; // 显示屏高度
public byte Color; /* 显示屏颜色定义 Bit0 表示红, bit1 表示绿, bit2 表示
蓝, 对于每一个 Bit, 0 表示灭, 1 表示亮*/
public byte MirrorMode; // 0x00 –无镜向 0x01 –镜向
public byte OEPol; //OE 极性,0x00 – OE 低有效 0x01 – OE 高有效
public byte DAPol; // 数据极性, 0x00 –数据低有效, 0x01 –数据高有效
public byte RowOrder; /*行序模式, 该值范围为 0-31
0-15 代表正序
0 代表从第 0 行开始顺序扫描
1 代表从第 1 行开始顺序扫描
.....
16-31 代表逆序
0 代表从第 0 行开始逆序扫描
1 代表从第 1 行开始逆序扫描*/
public byte FreqPar; /*CLK 分频倍数
注意: 针对于 AX 系列, 为后级分频
数值为 0~15, 共 16 个等级。*/
public byte OEWidth; // OE 宽度
public byte OEAngle; // OE 提前角
public byte FaultProcessMode; /*控制器的错误处理模式
0x00 –自动处理
0x01 –手动处理(此模式仅供调试人员
使用)*/
public byte CommTimeoutValue; /*通讯超时设置(单位秒)
建议值:
串口– 2S
TCP/IP – 6S
GPRS – 30S*/
public byte RunningMode; /*控制器运行模式, 具体定义如下:
0x00 –正常模式
0x01 –调试模式*/
public byte LoggingMode; /*日志记录模式
0x00 –无日志
0x01 –只对控制器错误及对错误进行
的错误进行记录
0x02 –对控制器的所有操作进行记
录, 包括: 控制器接收的各条指令、
发生的错误及错误处理*/
public byte GrayFlag; /*灰度标志(仅 5Q 卡时有该字节)
0x00–无灰度
0x01–灰度*/
public byte CascadeMode; /*级联模式: (仅 5Q 卡时有该字节)
0x00–非级联模式
0x01–级联模式*/
public byte Default_brightness; /*AX 系列控制器专用, 表示上电时, 默
认的亮度等级值。 根据不同的屏幕类
型有所不同。*/
public byte HUBConfig; /*HUB 板设置(仅 6E 控制器支持)
0x00–HUB512 默认项
0x01–HUB256*/
public byte Language; /*控制器多语言显示区。
0x00 ----简体中文显示。
0x01 ----非中文显示, 控制器显示图
形加英文字符。
其他值保留。*/
public byte Backup; // 备用字节
ushort CRC16; //整个文件的 CRC16 校验
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct ConfigFile_G6
{
public byte FileType; //文件类型
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public byte[] ControllerName; // 控制器名称
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
byte[] ScreenAddress; //屏幕安装地址限制为 24个字节长度
ushort Address; //控制器地址
public byte Baudrate; /* 串口波特率
0x00 –保持原有波特率不变
0x01 –强制设置为 9600
0x02 –强制设置为 57600*/
ushort ScreenWidth; //显示屏宽度
ushort ScreenHeight; // 显示屏高度
public byte Color; /* 显示屏颜色定义 Bit0 表示红, bit1 表示绿, bit2 表示
蓝, 对于每一个 Bit, 0 表示灭, 1 表示亮*/
public byte modeofdisp; // 6Q 系列显示模式: 0为888, 1为565,对其余控制卡该字节为0
public byte TipLanguage; //0 表示上位机软件是中文版,底层固件在显示提示信息时需调用内置的中文提示信息
//1 表示上位机软件是英文版,底层固件在显示提示信息时需调用内置的英文提示信息
//255 表示上位机软件是其他语言版,底层固件在显示提示信息时需调用自定义提示信息
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
public byte[] Reserved; // 5个备用字节
public byte FaultProcessMode; /*控制器的错误处理模式
0x00 –自动处理
0x01 –手动处理(此模式仅供调试人员使用)*/
public byte CommTimeoutValue; /*通讯超时设置(单位秒)
建议值:
串口– 2S
TCP/IP – 6S
GPRS – 30S*/
public byte RunningMode; /* 控制器运行模式,具体定义如下:
0x00 –正常模式
0x01 –调试模式*/
public byte LoggingMode; /*日志记录模式
0x00 –无日志
0x01 –只对控制器错误及对错误进行
的错误进行记录
0x02 –对控制器的所有操作进行记
录, 包括: 控制器接收的各条指令、
发生的错误及错误处理*/
public byte DevideScreenMode; /*针对 6Q2 卡的分屏模式
对其余的卡为保留字节 0*/
public byte Reserved2; //备用字节
public byte Default_brightness; /*AX 系列控制器专用,表示上电时,默
认的亮度等级值。其余的控制卡该字
节为保留字 0*/
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
public byte[] Backup; // 备用值字节
public ushort CRC16; //整个文件的 CRC16 校验
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct Ping_data
{
// 控制器类型
//小端存储低位在前高位在后, 比如 0x254 反着取,低位表示系列,高位编号 [0x54, 0x02] 【系列,编号】
public ushort ControllerType;
// 固件版本号
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public byte[] FirmwareVersion;
// 控制器参数文件状态 0x00 –控制器中没有参数配置文件,以下返回的是控制器的默认参数。 此时, PC 软件应提示用户必须先加载屏参。0x01 –控制器中有参数配置文件
public byte ScreenParaStatus;
// 控制器地址
public ushort uAddress;
// 波特率
public byte Baudrate;
// 屏宽
public ushort ScreenWidth;
// 屏高
public ushort ScreenHeight;
// 显示屏颜色定义
public byte Color;
//当前亮度值 整数1-16
public byte CurrentBrigtness;
// 控制器开关机状态 0 关机 1开机?
public byte CurrentOnOffStatus;
// 扫描配置编号
public ushort ScanConfNumber;
// 第一个自己一路数据代几行,其他基本用不上,如有需要可参考协议取相应的字节
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 9)]
public byte[] reversed;
// 控制器ip地址
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public byte[] ipAdder;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct heartbeatData
{
public string password; //密码
public string ip; //控制器IP地址
public string subNetMask; // 子网掩码
public string gate; // 网关
public short port; // 端口
public string mac; // MAC地址
public string netID; // 控制器网络ID
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct NetSearchCmdRet
{
//Oint8 CmdGroup;//1 0xA4 命令组 //public byte Cmd;//1 0x83 命令编号 //public ushort Status;//2 控制器状态//public ushort Error;//2 错误状态寄存器//public ushort DataLen;//2 0xA4 数据长度
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public byte[] Mac;//6 Mac 地址
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] IP;//4 控制器 IP 地址
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] SubNetMask;//4 子网掩码
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] Gate;//4 网关
//[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public ushort Port;//2 端口
public byte IPMode;//1 1 表示 DHCP 2 表示手动设置
public byte IPStatus;//1 0 表示 IP 设置失败 1 表示 IP 设置成功
public byte ServerMode;//1 0 Bit[0]表示服务器模式是否使能:1 –使能,0 –禁止 Bit[1]表示服务器模式:1 –web 模式,0 –普通模式
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] ServerIPAddress;// 4 服务器 IP 地址
public ushort ServerPort;//2 服务器端口号
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public byte[] ServerAccessPassword;//8 服务器访问密码
public ushort HeartBeatInterval;//2 20S 心跳时间间隔(单位:秒)
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
public byte[] CustomID;//12 用户自定义 ID,作为网络 ID 的前半部分,便于用户识别其控制卡
//Web 模式下参见下面的数据结构:NetSearchCmdRet_Web 返回下述 5 项的实际值,否则不上传下述 5 项
//public byte WebUserID[128];//128 0 WEB 平台用户 id//Oint32 GroupNum;//4 0 屏幕组号//public byte DomainFlag;//1 0 域名标志 0 - 无域名,1—域名//public byte DomainName[128];//128 域名名称 当 DomainFlag 为 1 时下发//public byte WebControllerName[128];// 128 LED00001 WEB 平台控制器名称
//Web 模式下返回结束 ==================================================
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public byte[] BarCode;//16 条形码,作为网络 ID 的后半部分,用以实现网络 ID 的唯一性
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] ControllerType;//2 其中低位字节表示设备系列,而高位字节表示设备编号,例如 BX - 6Q2 应表示为[0x66, 0x02],其它型号依此类推。
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public byte[] FirmwareVersion;// 8 Firmware 版本号
public byte ScreenParaStatus;//1 控制器参数文件状态 0x00 –控制器中没有参数配置文件,以下返回的是控制器的默认参数。此时,PC软件应提示用户必须先加载屏参。0x01 –控制器中有参数配置文件
public ushort Address;//2 0x0001 控制器地址控制器出厂默认地址为 0x0001(0x0000 地址将保留)控制除了对发送给自身地址的数据包进行处理外,还需对广播数据包进行处理。
public byte Baudrate;//1 0x00 波特率 0x00 –保持原有波特率不变 0x01 –强制设置为 9600 0x02 –强制设置为 57600
public ushort ScreenWidth;//2 192 显示屏宽度
public ushort ScreenHeight;//2 96 显示屏高度
public byte Color;//1 0x01 对于无灰度系统,单色时返回 1,双色时返回 3,三色时返回 7;对于有灰度系统,返回 255
public byte BrightnessAdjMode;// 1 调亮模式 0x00 –手动调亮 0x01 –定时调亮 0x02 –自动调亮
public byte CurrentBrigtness;// 1 当前亮度值
public byte TimingOnOff;//1 Bit0 –定时开关机状态,0 表示无定时开关机,1 表示有定时开关机
public byte CurrentOnOffStatus;//1 开关机状态
public ushort ScanConfNumber;//2 扫描配置编号
public byte RowsPerChanel;//1 一路数据带几行
public byte GrayFlag;//1 对于无灰度系统,返回 0;对于有灰度系
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] UnitWidth;//2 最小单元宽度
public byte modeofdisp;//1 6Q 显示模式 : 0 为 888, 1 为 565,其余卡为 0
public byte NetTranMode;//1 当该字节为 0 时,网口通讯使用老的模式,即 UDP 和 TCP 均根据下面的PackageMode 字节确定包长,并且 UDP通讯时,将大包分为小包,每发送一小包做一下延时当该字节不为 0 时,网口通讯使用新的模式,即 UDP 的包长等于UDPPackageMode * 8KBYTE,且不再分为小包,将整包数据丢给协议栈TCP 的包长等于 PackageMode * 16KBYTE
public byte PackageMode;//1 包模式。0 小包模式,分包 600 byte。1 大包模式,分包 16K byte。
public byte BarcodeFlag;//1 是否设置了条码 ID如果设置了,该字节第 0 位为 1,否则为0
public ushort ProgramNumber;//2 控制器上已有节目个数
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] CurrentProgram;//4 当前节目名
public byte ScreenLockStatus;//1 Bit0 –是否屏幕锁定,1b’0 –无屏幕锁定,1b’1 –屏幕锁定
public byte ProgramLockStatus;//1 Bit0 –是否节目锁定,1b’0 –无节目锁定,1’b1 –节目锁定
public byte RunningMode;//1 控制器运行模式
public byte RTCStatus;//1 RTC 状态 0x00 – RTC 异常 0x01 – RTC 正常
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] RTCYear;//2 年
public byte RTCMonth;//1 月
public byte RTCDate;//1 日
public byte RTCHour;//1 小时
public byte RTCMinute;//1 分钟
public byte RTCSecond;//1 秒
public byte RTCWeek;//1 星期,范围为 1~7,7 表示周日
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public byte[] Temperature1;//3 温度传感器当前值
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public byte[] Temperature2;//3 温度传感器当前值
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] Humidity;//2 湿度传感器当前值
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] Noise;//2 噪声传感器当前值(除以 10 为当前值)针对 BX - ZS(485) 0xffff 时无效
public byte Reserved;//1 保留字节
public byte LogoFlag;//1 0:表示未设置 Logo 节目 1:表示设置了 Logo 节目
public ushort PowerOnDelay;//2 0:未设置开机延时 1:开机延时时长
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] WindSpeed;//2 风速(除以 10 为当前值) 0xfffff 时无效
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] WindDirction;//2 风向(当前值) 0xfffff 时无效
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] PM2_5;//2 PM2.5 值(当前值)0xfffff 时无效
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] PM10; //2 PM10 值(当前值)0xfffff 时无效
//[MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
//public byte[] Reserved2;//24 保留字
public ushort ExtendParaLen;// 2 0x40 扩展参数长度
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public byte[] ControllerName;// 16 LEDCON01 控制器名称限制为 16 个字节长度(全是 0x00 表示屏参丢失,参数无效,上位机空白显示)
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 44)]
public byte[] ScreenLocation;// 44 0 屏幕安装地址限制为 44 个字节长度(全是 0x00 表示屏参丢失,参数无效,上位机空白显示)
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] NameLocalationCRC32;// 4 控制器和屏幕安装地址共 60 个字节的CRC32 校验值,该值是为了便于上位机区分此处 64 个字节是表示控制器名称还是用来表示控制器名称和屏幕安装地址,进而采取不同的处理策略为了保持兼容,下位机不对该值进行验证
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] PM100;//2 风向(当前值) 0xfffff 时无效
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] AtmosphericPressure ;//2 PM2.5 值(当前值)0xfffff 时无效
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] illumination; //2 PM10 值(当前值)0xfffff 时无效
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct NetSearchCmdRet_Web
{
//byte CmdGroup;//1 0xA4 命令组 //byte Cmd;//1 0x83 命令编号 //Oint16 Status;//2 控制器状态//Oint16 Error;//2 错误状态寄存器//Oint16 DataLen;//2 0xA4 数据长度
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
// byte Mac[6]; //6 Mac 地址
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
// Ouint8 IP[4]; //4 控制器 IP 地址
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
// Ouint8 SubNetMask[4]; //4 子网掩码
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
// Ouint8 Gate[4]; //4 网关
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
// Ouint8 Port[2]; //2 端口
//byte IPMode; //1 1 表示 DHCP 2 表示手动设置
//byte IPStatus; //1 0 表示 IP 设置失败 1 表示 IP 设置成功
//byte ServerMode; //1 0 Bit[0]表示服务器模式是否使能:1 –使能,0 –禁止 Bit[1]表示服务器模式:1 –web 模式,0 –普通模式
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
// Ouint8 ServerIPAddress[4];// 4 服务器 IP 地址
// Oint16 ServerPort; //2 服务器端口号
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
// byte ServerAccessPassword[8];//8 服务器访问密码
// public ushort HeartBeatInterval;//2 20S 心跳时间间隔(单位:秒)
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
// byte CustomID[12]; //12 用户自定义 ID,作为网络 ID 的前半部分,便于用户识别其控制卡
// //Web 模式下返回下述 5 项的实际值,否则不上传下述 5 项
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
// byte WebUserID[128]; //128 0 WEB 平台用户 id
// public int GroupNum; //4 0 屏幕组号
//byte DomainFlag; //1 0 域名标志 0 - 无域名,1—域名
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
// byte DomainName[128]; //128 域名名称 当 DomainFlag 为 1 时下发
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
// byte WebControllerName[128];// 128 LED00001 WEB 平台控制器名称
// //Web 模式下返回下述 5 项 结束 ###################
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
// byte BarCode[16]; //16 条形码,作为网络 ID 的后半部分,用以实现网络 ID 的唯一性
//Oint16 ControllerType; //2 其中低位字节表示设备系列,而高位字节表示设备编号,例如 BX - 6Q2 应表示为[0x66, 0x02],其它型号依此类推。
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
// byte FirmwareVersion[8];// 8 Firmware 版本号
//byte ScreenParaStatus; //1 控制器参数文件状态 0x00 –控制器中没有参数配置文件,以下返回的是控制器的默认参数。此时,PC软件应提示用户必须先加载屏参。0x01 –控制器中有参数配置文件
//Oint16 Address; //2 0x0001 控制器地址控制器出厂默认地址为 0x0001(0x0000 地址将保留)控制除了对发送给自身地址的数据包进行处理外,还需对广播数据包进行处理。
//byte Baudrate; //1 0x00 波特率 0x00 –保持原有波特率不变 0x01 –强制设置为 9600 0x02 –强制设置为 57600
//Oint16 ScreenWidth; //2 192 显示屏宽度
//Oint16 ScreenHeight; //2 96 显示屏高度
//byte Color; //1 0x01 对于无灰度系统,单色时返回 1,双色时返回 3,三色时返回 7;对于有灰度系统,返回 255
//byte BrightnessAdjMode;//1 调亮模式 0x00 –手动调亮 0x01 –定时调亮 0x02 –自动调亮
//byte CurrentBrigtness; //1 当前亮度值
//byte TimingOnOff; //1 Bit0 –定时开关机状态,0 表示无定时开关机,1 表示有定时开关机
//byte CurrentOnOffStatus;//1 开关机状态
//Oint16 ScanConfNumber; //2 扫描配置编号
//byte RowsPerChanel; //1 一路数据带几行
//byte GrayFlag; //1 对于无灰度系统,返回 0;对于有灰度系
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
// byte UnitWidth[2]; //2 最小单元宽度
//byte modeofdisp; //1 6Q 显示模式 : 0 为 888, 1 为 565,其余卡为 0
//byte NetTranMode; //1 当该字节为 0 时,网口通讯使用老的模式,即 UDP 和 TCP 均根据下面的PackageMode 字节确定包长,并且 UDP通讯时,将大包分为小包,每发送一小包做一下延时当该字节不为 0 时,网口通讯使用新的模式,即 UDP 的包长等于UDPPackageMode * 8KBYTE,且不再分为小包,将整包数据丢给协议栈TCP 的包长等于 PackageMode * 16KBYTE
//byte PackageMode; //1 包模式。0 小包模式,分包 600 byte。1 大包模式,分包 16K byte。
//byte BarcodeFlag; //1 是否设置了条码 ID如果设置了,该字节第 0 位为 1,否则为0
//Oint16 ProgramNumber; //2 控制器上已有节目个数
//int CurrentProgram; //4 当前节目名
//byte ScreenLockStatus; //1 Bit0 –是否屏幕锁定,1b’0 –无屏幕锁定,1b’1 –屏幕锁定
//byte ProgramLockStatus;//1 Bit0 –是否节目锁定,1b’0 –无节目锁定,1’b1 –节目锁定
//byte RunningMode; //1 控制器运行模式
//byte RTCStatus; //1 RTC 状态 0x00 – RTC 异常 0x01 – RTC 正常
//Oint16 RTCYear; //2 年
//byte RTCMonth; //1 月
//byte RTCDate; //1 日
//byte RTCHour; //1 小时
//byte RTCMinute; //1 分钟
//byte RTCSecond; //1 秒
//byte RTCWeek; //1 星期,范围为 1~7,7 表示周日
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
// byte Temperature1[3]; //3 温度传感器当前值
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
// byte Temperature2[3]; //3 温度传感器当前值
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
// byte Humidity[2]; //2 湿度传感器当前值
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
// byte Noise[2]; //2 噪声传感器当前值(除以 10 为当前值)针对 BX - ZS(485) 0xffff 时无效
//byte Reserved; //1 保留字节
//byte LogoFlag; //1 0:表示未设置 Logo 节目 1:表示设置了 Logo 节目
//Oint16 PowerOnDelay; //2 0:未设置开机延时 1:开机延时时长
//Oint16 WindSpeed; //2 风速(除以 10 为当前值) 0xfffff 时无效
//Oint16 WindDirction; //2 风向(当前值) 0xfffff 时无效
//Oint16 PM2_5; //2 PM2.5 值(当前值)0xfffff 时无效
//Oint16 PM10; //2 PM10 值(当前值)0xfffff 时无效
// //byte Reserved2[24];//24 保留字
//Oint16 ExtendParaLen; // 2 0x40 扩展参数长度
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
// byte ControllerName[16]; // 16 LEDCON01 控制器名称限制为 16 个字节长度(全是 0x00 表示屏参丢失,参数无效,上位机空白显示)
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 44)]
// byte ScreenLocation[44]; // 44 0 屏幕安装地址限制为 44 个字节长度(全是 0x00 表示屏参丢失,参数无效,上位机空白显示)
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
// byte NameLocalationCRC32[4];// 4 控制器和屏幕安装地址共 60 个字节的CRC32 校验值,该值是为了便于上位机区分此处 64 个字节是表示控制器名称还是用来表示控制器名称和屏幕安装地址,进而采取不同的处理策略为了保持兼容,下位机不对该值进行验证
};
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct TimingOnOff
{
public byte onHour; // 开机小时
public byte onMinute; // 开机分钟
public byte offHour; // 关机小时
public byte offMinute; // 关机分钟
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct Brightness
{
/*
0x00 –手动调亮
0x01 –定时调亮 注:以下的亮度值表,在定时调亮和手 动调亮时控制器才需处理。但在协议上 不论什么模式,此表都需要发送给控制 器
0x00 –手动调亮
0x01 –定时调亮 注:以下的亮度值表,在定时调亮和手 动调亮时控制器才需处理。但在协议上 不论什么模式,此表都需要发送给控制 器
*/
public byte BrightnessMode;
//00:00 – 00:29 的亮度值, 0x00 – 0x0f
public byte HalfHourValue0;
public byte HalfHourValue1;
public byte HalfHourValue2;
public byte HalfHourValue3;
public byte HalfHourValue4;
public byte HalfHourValue5;
public byte HalfHourValue6;
public byte HalfHourValue7;
public byte HalfHourValue8;
public byte HalfHourValue9;
public byte HalfHourValue10;
public byte HalfHourValue11;
public byte HalfHourValue12;
public byte HalfHourValue13;
public byte HalfHourValue14;
public byte HalfHourValue15;
public byte HalfHourValue16;
public byte HalfHourValue17;
public byte HalfHourValue18;
public byte HalfHourValue19;
public byte HalfHourValue20;
public byte HalfHourValue21;
public byte HalfHourValue22;
public byte HalfHourValue23;
public byte HalfHourValue24;
public byte HalfHourValue25;
public byte HalfHourValue26;
public byte HalfHourValue27;
public byte HalfHourValue28;
public byte HalfHourValue29;
public byte HalfHourValue30;
public byte HalfHourValue31;
public byte HalfHourValue32;
public byte HalfHourValue33;
public byte HalfHourValue34;
public byte HalfHourValue35;
public byte HalfHourValue36;
public byte HalfHourValue37;
public byte HalfHourValue38;
public byte HalfHourValue39;
public byte HalfHourValue40;
public byte HalfHourValue41;
public byte HalfHourValue42;
public byte HalfHourValue43;
public byte HalfHourValue44;
public byte HalfHourValue45;
public byte HalfHourValue46;
public byte HalfHourValue47;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct ControllerStatus_G56
{
public byte onoffStatus; // 开关机状态 Bit 0 –开机/关机, 0 表示关机, 1 表示开机
public byte timingOnOff; // 定时开关机状态 0 表示无定时开关机, 1 表示有定时开关机
public byte brightnessAdjMode; //亮度模式 0x00 –手动调亮 0x01 –定时调亮 0x02 –自动调亮
public byte brightness;// 当前亮度值
public short programeNumber;// 控制器上已有节目个数
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] currentProgram;//当前节目名
public byte screenLockStatus;//是否屏幕锁定,0 –无屏幕锁定, 1 –屏幕锁定
public byte programLockStatus; //是否节目锁定, 0 –无节目锁定,1 –节目锁定
public byte runningMode;//控制器运行模式
public byte RTCStatus;//RTC 状态0x00 – RTC 异常 0x01 – RTC 正常
public short RTCYear;//年
public byte RTCMonth;//月
public byte RTCDate;//日
public byte RTCHour;//时
public byte RTCMinute;//分
public byte RTCSecond;//秒
public byte RTCWeek;//星期 1--7
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public byte[] temperature1;//温度1传感器当前值
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public byte[] temperature2;//温度2传感器当前值
public short humidity;//湿度传感器当前值
public short noise;//噪声传感器当前值
public byte switchStatus; //测试按钮状态 0 –打开 1 –闭合
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
public byte[] CustomID; //用户自定义 ID,作为网络 ID 的前半部分,便于用户识别其控制卡
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public byte[] BarCode; //条形码,作为网络 ID 的后半部分,用以实现网络 ID 的唯一性
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct TimingReset
{
public byte rstMode; //复位模式 0x00 –取消定时复位功能 0x01 –周期复位, 此时 RstInterval 字段有效 0x02 –只在指定时间复位
uint RstInterval;//复位周期, 单位: 分钟如此字段为 0, 不进行复位操作
public byte rstHour1; //小时 0Xff–表示此组无效, 下同
public byte rstMin1;
public byte rstHour2;
public byte rstMin2;
public byte rstHour3;
public byte rstMin3;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct BattleTime
{
public short BattleRTCYear; //年
public byte BattleRTCMonth;//月
public byte BattleRTCDate;//日
public byte BattleRTCHour;//时
public byte BattleRTCMinute;//分
public byte BattleRTCSecond;//秒
public byte BattleRTCWeek;//星期
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQprogrampTime_G56
{
public byte StartHour;
public byte StartMinute;
public byte StartSecond;
public byte EndHour;
public byte EndMinute;
public byte EndSecond;
};//节目的播放时段
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQprogramppGrp_G56
{
public byte playTimeGrpNum; //播放时间有效组数 0 没有播放时段全天播放 最大值8
public EQprogrampTime_G56 timeGrp0;
public EQprogrampTime_G56 timeGrp1;
public EQprogrampTime_G56 timeGrp2;
public EQprogrampTime_G56 timeGrp3;
public EQprogrampTime_G56 timeGrp4;
public EQprogrampTime_G56 timeGrp5;
public EQprogrampTime_G56 timeGrp6;
public EQprogrampTime_G56 timeGrp7;
};//播放时段共有8组
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQprogramHeader
{
/*
默认:0x00
LOGO文件:0x08
扫描配置文件:0x02
日志文件:0x06
字库文件:0x05
提示信息库文件: 0x07
*/
public byte FileType; //文件类型
public uint ProgramID;//节目ID
/*
Bit0 –全局节目标志位
Bit1 –动态节目标志位
Bit2 –屏保节目标志位
*/
public byte ProgramStyle;//节目类型
//注:带播放时段的节目优先级为 1,不 带播放时段的节目优先级为 0
public byte ProgramPriority; //节目等级
public byte ProgramPlayTimes;//节目重播放次数
public ushort ProgramTimeSpan; //播放的方式
public byte ProgramWeek; //节目星期属性
public ushort ProgramLifeSpan_sy;//年
public byte ProgramLifeSpan_sm;//月
public byte ProgramLifeSpan_sd;//日
public ushort ProgramLifeSpan_ey;//结束年
public byte ProgramLifeSpan_em;//结束日
public byte ProgramLifeSpan_ed;//结束天
//public byte PlayPeriodGrpNum;//播放时段的组数
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQscreenframeHeader
{
public byte FrameDispFlag;
public byte FrameDispStyle;
public byte FrameDispSpeed;
public byte FrameMoveStep;
public byte FrameWidth;
public ushort FrameBackup;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQareaframeHeader
{
public byte AreaFFlag;
public byte AreaFDispStyle;
public byte AreaFDispSpeed;
public byte AreaFMoveStep;
public byte AreaFWidth;
public ushort AreaFBackup;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQareaHeader
{
/*
字库区域:0x01
透明文本:0x06
时间区:0x02
图文字幕:0x00
战斗时间:0x09
噪声区:0x05
温度区:0x03
霓虹区:0x08
湿度区:0x04
*/
public byte AreaType; //区域类型
public ushort AreaX; //区域X坐标
public ushort AreaY; //区域Y坐标
public ushort AreaWidth; //区域宽
public ushort AreaHeight;//区域高
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQpageHeader
{
//请参考协议 图文字幕区数据格式
public byte PageStyle; //数据页类型
public byte DisplayMode; //显示方式 (特效)
public byte ClearMode; // 退出方式/清屏方式
public byte Speed; // 速度等级/背景速度等级
public ushort StayTime; // 停留时间, 单位为 10ms
public byte RepeatTime;//重复次数/背景拼接步长(左右拼接下为宽度, 上下拼接为高度)
public ushort ValidLen; //用法比较复杂请参考协议
public E_arrMode arrMode; //排列方式--单行多行
public ushort fontSize; //字体大小
public uint color;//字体颜色
public byte fontBold; //是否为粗体
public byte fontItalic;//是否为斜体
public E_txtDirection tdirection;//文字方向
public ushort txtSpace; //文字间隔
public byte Valign;
public byte Halign;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQprogram
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] fileName; //文件名
public byte fileType; //文件类型
public uint fileLen; //文件长度
public IntPtr fileAddre; // 文件所在的缓存地址
public uint fileCRC32; //文件CRC32校验码
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct getPageData
{
ushort allPageNub;
uint pageLen;
public byte[] fileAddre;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQunitHeader
{
ushort UnitX;
ushort UnitY;
public byte UnitType;
public byte Align;
public byte UnitColor;
public byte UnitMode;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQtimeAreaData_G56
{
public E_arrMode linestyle;//排列方式,单行还是多行
public uint color;//字体颜色
public string fontName; //字体名字
public ushort fontSize; //字体大小
public byte fontBold; //字体加粗
public byte fontItalic; //斜体
public byte fontUnderline; //字体加下划线
public byte fontAlign; //对齐方式--多行有效
public byte date_enable; //是否添加日期
public E_DateStyle datestyle;//日期格式
public byte time_enable; //是否添加时间---默认添加
public E_TimeStyle timestyle;//时间格式
public byte week_enable; //是否添加星期
public E_WeekStyle weekstyle;//星期格式
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQAnalogClockHeader_G56
{
public ushort OrignPointX; //原点横坐标
public ushort OrignPointY; //原点纵坐标
public byte UnitMode; //表针模式
public byte HourHandWidth; //时针宽度
public byte HourHandLen; //时针长度
public uint HourHandColor; //时针颜色
public byte MinHandWidth; //分针宽度
public byte MinHandLen; //分针长度
public uint MinHandColor; //分针颜色
public byte SecHandWidth; //秒针宽度
public byte SecHandLen; //秒针长度
public uint SecHandColor; //秒针颜色
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQprogramHeader_G6
{
/*
默认:0x00
LOGO文件:0x08
扫描配置文件:0x02
日志文件:0x06
字库文件:0x05
提示信息库文件: 0x07
*/
public byte FileType; //文件类型
public uint ProgramID;//节目ID
/*
Bit0 –全局节目标志位
Bit1 –动态节目标志位
Bit2 –屏保节目标志位
*/
public byte ProgramStyle;//节目类型
//注:带播放时段的节目优先级为 1,不带播放时段的节目优先级为 0
public byte ProgramPriority;//节目等级
public byte ProgramPlayTimes;//节目重播放次数
public ushort ProgramTimeSpan;//播放的方式
public byte SpecialFlag;//特殊节目标
public byte CommExtendParaLen;//扩展参数长度,默认为0x00
public ushort ScheduNum;//节目调度
public ushort LoopValue;//调度规则循环次数
public byte Intergrate;//调度相关
public byte TimeAttributeNum;//时间属性组数
public ushort TimeAttribute0Offset; //第一组时间属性偏移量--目前只支持一组
public byte ProgramWeek;//节目星期属性
public ushort ProgramLifeSpan_sy;//年
public byte ProgramLifeSpan_sm;//月
public byte ProgramLifeSpan_sd;//日
public ushort ProgramLifeSpan_ey;//结束年
public byte ProgramLifeSpan_em;//结束日
public byte ProgramLifeSpan_ed;//结束天
public byte PlayPeriodGrpNum;//播放时段的组数
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQscreenframeHeader_G6
{
public byte FrameDispStype; //边框显示方式
public byte FrameDispSpeed; //边框显示速度
public byte FrameMoveStep; //边框移动步长
public byte FrameUnitLength; //边框组元长度
public byte FrameUnitWidth; //边框组元宽度
public byte FrameDirectDispBit;//上下左右边框显示标志位,目前只支持6QX-M卡
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQSound_6G
{
public byte SoundFlag;//1 0x00 是否使能语音播放;0 表示不使能语音; 1 表示播放下文中 SoundData 部分内容;
//SoundData 部分内容---------------------------------------------------------------------------------------------------------------------------------------------------
public byte SoundPerson;//1 0x00 发音人 该值范围是 0 - 5,共 6 种选择只有 SoundFlag(是否使能语音播放)为 1 时才发送该字节,否则不发送该值默认为 0
public byte SoundVolum;//1 0x05 音量该值范围是 0~10,共 11 种,0表示静音只有 SoundFlag(是否使能语音播放)为 1 时才发送该字节,否则不发送该值默认为 5
public byte SoundSpeed;//1 0x05 语速该值范围是 0~10,共 11 种只有 SoundFlag(是否使能语音播放)为 1 时才发送该字节,否则不发送该值默认为 5
public byte SoundDataMode;//1 0x00 SoundData 的编码格式:该值意义如下:0x00 GB2312; 0x01 GBK; 0x02 BIG5; 0x03 UNICODE只有 SoundFlag(是否使能语音播放)为 1 时才发送该字节,否则不发送
public int SoundReplayTimes;// 4 0x00000000 重播次数该值为 0,表示播放 1 次该值为 1,表示播放 2 次
//......
//该值为 0xffffffff,表示播放无限次只有 SoundFlag(是否使能语播放)为 1 时才发送该字节,否则不发送该值默认为 0
public int SoundReplayDelay;// 4 0x00000000 重播时间间隔该值表示两次播放语音的时间间隔,单位为 10ms只有 SoundFlag(是否使能语音播放)为 1 时才发送该字节,否则不发送该值默认为 0
public byte SoundReservedParaLen;// 1 0x03 语音参数保留参数长度
public byte Soundnumdeal;// 1 0 0:自动判断1:数字作号码处理 2:数字作数值处理只有当 SoundFlag 为 1 且SoundReservedParaLen不为 0才发送此参数
public byte Soundlanguages;// 1 0 0:自动判断语种1:阿拉伯数字、度量单位、特殊符号等合成为中文2:阿拉伯数字、度量单位、特殊符号等合成为英文只有当 SoundFlag 为 1 且 SoundReservedParaLen不为 0才发送此参数(目前只支持中英文)
public byte Soundwordstyle;// 1 0 0:自动判断发音方式1:字母发音方式2:单词发音方式;只有当 SoundFlag 为 1 且SoundReservedParaLen不为 0才发送此参数
public int SoundDataLen;// 4 语音数据长度; 只有 SoundFlag(是否使能语音播放)为 1 时才发送该字节,否则不发送
public IntPtr SoundData;// N 语音数据只有 SoundFlag(是否使能语音播放)为 1 时才发送该字节,否则不发送
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct ClockColor_G56
{
public uint Color369; //369点颜色
public uint ColorDot; //点颜色
public uint ColorBG; //表盘外圈颜色 模式没有圈泽此颜色无效
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQareaHeader_G6
{
public byte AreaType;//区域类型
public ushort AreaX;//区域左上角横坐标
public ushort AreaY;//区域左上角纵坐标
public ushort AreaWidth;//区域宽度
public ushort AreaHeight;//区域高度
public byte BackGroundFlag; //是否有背景
public byte Transparency; //透明度
public byte AreaEqual; //前景、背景区域大小是否相同
//语音内容
//使用语音功能时:部分卡需要配置串口为语音模式!!!
public EQSound_6G stSoundData;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQPicAreaSoundHeader_G6
{
public byte SoundPerson; //发音人,范围0~5,共6种选择
public byte SoundVolum; //音量,范围0~10
public byte SoundSpeed; //语速,范围0~10
public byte SoundDataMode; //语音数据的编码格式
public uint SoundReplayTimes; //重播次数
public uint SoundReplayDelay; //重播时间间隔
public byte SoundReservedParaLen; //语音参数保留参数长度,默认0x03
public byte Soundnumdeal; //详情见协议
public byte Soundlanguages; //详情见协议
public byte Soundwordstyle; //详情见协议
}//图文分区播放语音
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQTimeAreaBattle_G6
{
public ushort BattleStartYear; //起始年份(BCD格式,下同)
public byte BattleStartMonth; //起始月份
public byte BattleStartDate; //起始日期
public byte BattleStartHour; //起始小时
public byte BattleStartMinute; //起始分钟
public byte BattleStartSecond; //起始秒钟
public byte BattleStartWeek; //起始星期值
public byte StartUpMode; //启动模式
} //时间分区战斗时间
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQpageHeader_G6
{
public byte PageStyle;//数据页类型
public byte DisplayMode;//显示方式
public byte ClearMode;//退出方式/清屏方式
public byte Speed;//速度等级
public ushort StayTime;//停留时间
public byte RepeatTime;//重复次数
public ushort ValidLen;//此字段只在左移右移方式下有效
public byte CartoonFrameRate; //特技为动画方式时,该值代表其帧率
public byte BackNotValidFlag; //背景无效标志
public E_arrMode arrMode;//排列方式--单行多行
public ushort fontSize;//字体大小
public uint color;//字体颜色
public byte fontBold;//是否为粗体 0:false 1:true
public byte fontItalic;//是否为斜体
public E_txtDirection tdirection;//文字方向
public ushort txtSpace;//文字间隔
public byte Valign;
public byte Halign;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQprogram_G6
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] fileName; //节目参数文件名
public byte fileType; //文件类型
public uint fileLen; //参数文件长度
public IntPtr fileAddre; //文件所在的缓存地址
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] dfileName;//节目数据文件名
public byte dfileType; //节目数据文件类型
public uint dfileLen; //数据文件长度
public IntPtr dfileAddre; //数据文件缓存地址
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct GetDirBlock_G56
{
public byte fileType; //要获取的文件类型
public ushort fileNumber; //返回有多少个文件
public IntPtr dataAddre; //返回文件列表地址
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct FileAttribute_G56
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] fileName; //文件名
public byte fileType; //文件类型
public int fileLen; //文件长度
public int fileCRC; //文件CRC校验
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQdynamicHeader
{
public byte RunMode;
ushort Timeout;
public byte ImmePlay;
public byte AreaType;
ushort AreaX;
ushort AreaY;
ushort AreaWidth;
ushort AreaHeight;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct EQSoundDepend_6G
{
public byte VoiceID;// 1 1 语音队列中每个语音的 ID,从 0 开始
public EQSound_6G stSound;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct FileCRC16_G56
{
IntPtr fileAddre; //文件地址指針
ushort fileLen; //文件长度
ushort fileCRC16; //文件CRC16校验
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct FileCRC32_G56
{
IntPtr fileAddre; //文件地址指針
ushort fileLen; //文件长度
ushort fileCRC32; //文件CRC32校验
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct DynamicAreaParams
{
public byte uAreaId;
public bxdualsdk.EQareaHeader_G6 oAreaHeader_G6;
public bxdualsdk.EQpageHeader_G6 stPageHeader;
public IntPtr fontName;
public IntPtr strAreaTxtContent;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct BxAreaFrmae_Dynamic_G6
{
public byte AreaFFlag; // 1 0x00 区域边框标志位;
public EQscreenframeHeader_G6 oAreaFrame;
public byte[] pStrFramePathFile;
};
/// <summary>
/// windows平台需要初始化SDK(默认如果没有初始化会自动初始化)
/// </summary>
/// <returns></returns>
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_InitSdk();
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern void bxDual_ReleaseSdk();
/// <summary>
/// 设置目标地址,即设置屏号/设置屏地址/设置控制器的屏号
/// </summary>
/// <param name="usDstAddr">2个字节长度,默认值0xfffe 为地址通配符</param>
/// <returns></returns>
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_set_screenNum_G56(ushort usDstAddr);
/// <summary>
/// 用于设置控制各种通讯方式每一包最大长度
/// 注:5E,6E,6Q系列最大数据长途64K(建议最大不要超过63*1024) 其他系列最大长度1K(1204)
/// </summary>
/// <param name="packetLen">数据包长度</param>
/// <returns></returns>
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_set_packetLen(ushort packetLen);
/// <summary>
/// 搜索控制器命令
/// </summary>
/// <param name="retData">请参考结构体Ping_data 所有回读参数都会通过结构体回调</param>
/// <returns></returns>
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_searchController(ref Ping_data retData);
/// <summary>
/// 搜索控制器命令-串口
/// </summary>
/// <param name="retData">请参考结构体Ping_data 所有回读参数都会通过结构体回调</param>
/// <param name="uartPort">串口号</param>
/// <returns></returns>
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_searchController(ref Ping_data retData, byte[] uartPort);
/*! ***********************************************************************************************************************
* 函数名:cmd_uart_search_Net_6G()
* 参数名:
* uartPort 端口号,如:"COM3"
* nBaudRateType 1:9600; 2:57600;
* 命令结果放在了 retData 中;NetSearchCmdRet:参考结构体声明中的注释;
* 返回值:0 成功, 其他值为错误号
* 功 能: 网络搜索命令,返回:温度传感器,空气,PM2.5等信息,详见 NetSearchCmdRet:参考结构体声明中的注释;
* 注: 针对 6代卡 的网络搜索命令
***************************************************************************************************************************/
/// <summary>
/// 网络搜索命令,返回:温度传感器,空气,PM2.5等信息,详见 NetSearchCmdRet:参考结构体声明中的注释;
/// 针对 6代卡 的网络搜索命令
/// </summary>
/// <param name="retData">NetSearchCmdRet:参考结构体声明中的注释;</param>
/// <param name="uartPort">串口号,如:"COM3"</param>
/// <param name="nBaudRateType">1:9600; 2:57600;</param>
/// <returns></returns>
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_search_Net_6G(ref NetSearchCmdRet retData, byte[] uartPort, ushort nBaudRateType);
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_search_Net_6G_Web(ref NetSearchCmdRet_Web retData, byte[] uartPort, ushort nBaudRateType);
/*! ***************************************************************
* 函数名: bxDual_cmd_uart_ofsFormat()
* 参数名:uartPort:串口端口号, baudRate:波特率
* 返回值:0 成功, 其他值为错误号
* 功 能:文件系统格式化
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_ofsFormat(byte[] uartPort, byte baudRate);
/*! ***************************************************************
* 函数名: bxDual_cmd_uart_ofsStartFileTransf()
* 参数名:uartPort:串口端口号, baudRate:波特率
* 返回值:0 成功, 其他值为错误号
* 功 能:开始批量写文件
* 注:
* 发送节目前调用
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_ofsStartFileTransf(byte[] uartPort, byte baudRate);
/*! ***************************************************************
* 函数名: bxDual_cmd_uart_ofsEndFileTransf()
* 参数名:uartPort:串口端口号, baudRate:波特率
* 返回值:0 成功, 其他值为错误号
* 功 能:写文件结束
* 注:
* 发送节目后调用
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_ofsEndFileTransf(byte[] uartPort, byte baudRate);
/*! ***************************************************************
* 函数名: bxDual_cmd_uart_ofsDeleteFormatFile()
* 参数名:uartPort:串口端口号, baudRate:波特率
*fileNub:要删除的文件个数
*fileName:要删除的文件名
* 返回值:0 成功, 其他值为错误号
* 功 能:删除文件
* 注:
* fileName是4个字节 fileNub值为N就要把N个fileName拼接 fileName大小 = fileName(4byte)*N
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_ofsDeleteFormatFile(byte[] uartPort, byte baudRate, short fileNub, byte[] fileName);
/*! ***************************************************************
* 函数名: bxDual_cmd_uart_confDeleteFormatFile()
* 参数名:uartPort:串口端口号, baudRate:波特率
*fileNub:要删除的文件个数
*fileName:要删除的文件名
* 返回值:0 成功, 其他值为错误号
* 功 能:删除文件
* 注:此函数用于对存储在固定位置的文件进行处理, 例
如: Firmware 文件、 控制器参数配置文件、 扫描配置文件等。
* fileName是4个字节 fileNub值为N就要把N个fileName拼接 fileName大小 = fileName(4byte)*N
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_confDeleteFormatFile(byte[] uartPort, byte baudRate, short fileNub, byte[] fileName);
/*! ***************************************************************
* 函数名: bxDual_cmd_uart_ofsGetMemoryVolume()
* 参数名:uartPort:串口端口号, baudRate:波特率
*totalMemVolume:全部空间大小
*availableMemVolume:剩余空间大小
* 返回值:0 成功, 其他值为错误号
* 功 能:获取控制空间大小和剩余空间
* 注:
* 发节目前需要查询防止空间不够用
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_ofsGetMemoryVolume(byte[] uartPort, byte baudRate, int[] totalMemVolume, int[] availableMemVolume);
/*! ***************************************************************
* 函数名: bxDual_cmd_uart_ofsWriteFile()
* 参数名:uartPort:串口端口号, baudRate:波特率
*fileName:文件名
*fileType:文件类型
*fileLen:文件长度
*fileAddre:文件所在的缓存地址
*overwrite:是否覆盖控制上的文件 1覆盖 0不覆盖 建议发1
* 返回值:0 成功, 其他值为错误号
* 功 能:写文件到控制
* 注:用于对存储在 OFS 中的文件的处理, 例如: 节目文件, 字库文件、 播放列表文件等
* 内部包含多条命令注意返回状态方便查找问题
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_ofsWriteFile(byte[] uartPort, byte baudRate, byte[] fileName, byte fileType, uint fileLen, byte overwrite, IntPtr fileAddre);
/*! ***************************************************************
* 函数名: bxDual_cmd_uart_confWriteFile()
* 参数名:uartPort:串口端口号, baudRate:波特率
*fileName:文件名
*fileType:文件类型
*fileLen:文件长度
*fileAddre:文件所在的缓存地址
*overwrite:是否覆盖控制上的文件 1覆盖 0不覆盖 建议发1
* 返回值:0 成功, 其他值为错误号
* 功 能:写文件到控制
* 注:此函数用于对存储在固定位置的文件进行处理, 例
如: Firmware 文件、 控制器参数配置文件、 扫描配置文件等。
* 内部包含多条命令注意返回状态方便查找问题
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_confWriteFile(byte[] uartPort, byte baudRate, byte[] fileName, byte fileType, int fileLen, byte overwrite, byte[] fileAddre);
/*! ***************************************************************
* 函数名: bxDual_cmd_ofsStartReedFile()
* 参数名:ip:控制器IP, port:控制器端口
*fileName:需要读取的文件名
*fileSize:回读文件大小
*fileCrc:回读的文件CRC
* 返回值:0 成功, 其他值为错误号
* 功 能:开始读文件
* 注:
*
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_ofsStartReedFile(byte[] uartPort, byte baudRate, byte[] fileName, int[] fileSize, int[] fileCrc);
/*! ***************************************************************
* 函数名: bxDual_cmd_uart_confStartReedFile()
* 参数名:uartPort:串口端口号, baudRate:波特率
*fileName:需要读取的文件名
*fileSize:回读文件大小
*fileCrc:回读的文件CRC
* 返回值:0 成功, 其他值为错误号
* 功 能:开始读文件
* 注:此函数用于对存储在固定位置的文件进行处理, 例
如: Firmware 文件、 控制器参数配置文件、 扫描配置文件等。
*
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_confStartReedFile(byte[] uartPort, byte baudRate, byte[] fileName, int[] fileSize, int[] fileCrc);
/*! ***************************************************************
* 函数名: bxDual_cmd_uart_ofsReedFileBlock()
* 参数名:uartPort:串口端口号, baudRate:波特率
*fileName:需要读取的文件名
*fileAddre:传入读文件写的位置
* 返回值:0 成功, 其他值为错误号
* 功 能:读文件
* 注:用于对存储在 OFS 中的文件的处理, 例如: 节目文件, 字库文件、 播放列表文件等
* fileAddre大小根据cmd_ofsStartReedFile函数回调值确定
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_ofsReedFileBlock(byte[] uartPort, byte baudRate, byte[] fileName, byte[] fileAddre);
/*! ***************************************************************
* 函数名: bxDual_cmd_uart_confReedFileBlock()
* 参数名:uartPort:串口端口号, baudRate:波特率
*fileName:需要读取的文件名
*fileAddre:传入读文件写的位置
* 返回值:0 成功, 其他值为错误号
* 功 能:读文件
* 注:此函数用于对存储在固定位置的文件进行处理, 例
如: Firmware 文件、 控制器参数配置文件、 扫描配置文件等。
* fileAddre大小根据cmd_ofsStartReedFile函数回调值确定
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_confReedFileBlock(byte[] uartPort, byte baudRate, byte[] fileName, byte[] fileAddre);
/*! ***************************************************************
* 函数名: bxDual_cmd_uart_ofsReedDirBlock()
* 参数名:uartPort:串口端口号, baudRate:波特率
*fileName:需要读取的文件名
*fileAddre:传入读文件写的位置
* 返回值:0 成功, 其他值为错误号
* 功 能:下面两条命令搭配使用可以获取所有文件名
* 注:
* 下面两条命令用法比较复杂请配合协议使用不做嗷述
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_ofsReedDirBlock(byte[] uartPort, byte baudRate, ref GetDirBlock_G56 dirBlock);
/*! ***************************************************************
* 函数名: bxDual_cmd_ofs_freeDirBlock()
* 参数名:
*dirBlock: 上述两条命令所有使用的结构体
* 返回值:0 成功, 其他值为错误号
* 功 能:释放cmd_ofsReedDirBlock所创建的节目列表dirBlock
* 注:
* dirBlock 上述两条命令调用完成后dirBlock不再使用时用此函数释放文件列表
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_ofsFreeDirBlock(ref GetDirBlock_G56 dirBlock);
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_ofsGetTransStatus(byte[] uartPort, byte baudRate, byte[] r_w, byte[] fileName, int[] fileCrc, int[] fileOffset);
/*! ***************************************************************
* 函数名: bxDual_cmd_uart_sendConfigFile()
* 参数名:uartPort:串口端口号, baudRate:波特率
configData 请参考结构体ConfigFile
* 返回值:0 成功, 其他值为错误号
* 功 能:发送配置文件到控制器
* 注:
*
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_sendConfigFile(byte[] uartPort, byte baudRate, ref ConfigFile configData);
/*! ***************************************************************
* 函数名: bxDual_cmd_uart_programLock()
* 参数名:uartPort:串口端口号, baudRate:波特率
* nonvolatile: 状态是否掉电保存 0x00 –掉电不保存 0x01 –掉电保存
* lock:0x00 –解锁 0x01 –锁定
* name: 节目名称4(byte)个字节
* lockDuration: 节目锁定时间长度, 单位为 10 毫秒, 例
* 如当该值为 100 时表示锁定节目 1 秒.注意: 当该值为 0xffffffff 时表示节目锁定无时间长度限制
* 返回值:0 成功, 其他值为错误号
* 功 能:节目锁定
* 注:
* 具体使用方法参考协议
******************************************************************/
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_programLock(byte[] uartPort, byte baudRate, byte nonvolatile, byte locked, byte[] name, int lockDuration);
[DllImport("bx_sdk_dual_server.dll", CharSet = CharSet.Unicode)]
public static extern int bxDual_cmd_uart_programLock_6G(byte[] uartPort, byte baudRate, byte nonvolatile, byte locked, byte[] name, int lockDuration);
/*! ***************************************************************
** 串口通讯命令 end **
/*! ***************************************************************/