bll
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using ZK.Common; using ZK.HardWareSDK; namespace ZK.HardWareBLL {
//Onbon6E1XCardNewBLL public class Onbon6E1XCardNewBLL {
static OnbonBx_sdk_dualNewSDK.EQareaHeader_G6 aheader; static OnbonBx_sdk_dualNewSDK.EQSound_6G stSoundData = new OnbonBx_sdk_dualNewSDK.EQSound_6G(); static OnbonBx_sdk_dualNewSDK.EQpageHeader_G6 pheader; static OnbonBx_sdk_dualNewSDK.DynamicAreaParams[] Params = new OnbonBx_sdk_dualNewSDK.DynamicAreaParams[1]; static Models.TerminalM terminalM; public static int InitSdk(Models.TerminalM terminal) {
if (terminal == null) {
DelegateHelper.InfoMessageEvent?.Invoke("led不存在数据模型"); return 1;
}
terminalM = terminal;
{
aheader.AreaType = 0x00;
aheader.AreaX = 0;
aheader.AreaY = 0;
aheader.AreaWidth = (ushort)terminal.width;
aheader.AreaHeight = (ushort)terminal.height;
aheader.BackGroundFlag = 0x00;
aheader.Transparency = 101;
aheader.AreaEqual = 0x00;
}
{
stSoundData.SoundFlag = 0;
stSoundData.SoundVolum = 0;
stSoundData.SoundSpeed = 0;
stSoundData.SoundDataMode = 0;
stSoundData.SoundReplayTimes = 0;
stSoundData.SoundReplayDelay = 0;
stSoundData.SoundReservedParaLen = 0;
stSoundData.Soundnumdeal = 0;
stSoundData.Soundlanguages = 0;
stSoundData.Soundwordstyle = 0;
stSoundData.SoundDataLen = 0;
byte[] t = new byte[1];
t[0] = 0;
stSoundData.SoundData = t;
}
{
pheader.PageStyle = 0x00;
pheader.DisplayMode = 0x02;
pheader.ClearMode = 0x01;
pheader.Speed = 15;
pheader.StayTime = 500;
pheader.RepeatTime = 1;
pheader.ValidLen = 0;
pheader.CartoonFrameRate = 0x00;
pheader.BackNotValidFlag = 0x00;
pheader.arrMode = OnbonBx_sdk_dualNewSDK.E_arrMode.eMULTILINE;
pheader.fontSize = 9;
pheader.color = (uint)0x01;
pheader.fontBold = 1;
pheader.fontItalic = 0;
pheader.tdirection = OnbonBx_sdk_dualNewSDK.E_txtDirection.pNORMAL;
pheader.txtSpace = 0;
pheader.Valign = 2;
pheader.Halign = 2;
}
return OnbonBx_sdk_dualNewSDK.bxDual_InitSdk();
}
/// <summary>
/// 更新动态区
/// </summary>
/// <param name="msg"></param>
/// <param name="ipStr"></param>
public static void sendMessage(string msg)
{
try
{
string ipStr = terminalM.ip;
int err = 0;
//Console.Write("输入IP:");
//byte[] ip = Encoding.Default.GetBytes(Console.ReadLine());
byte[] ip = Encoding.Default.GetBytes(ipStr);
// byte[] img = Encoding.Default.GetBytes("32.png");
byte[] str = Encoding.Default.GetBytes(msg);
byte[] font = Encoding.Default.GetBytes("黑体");
//OnbonBx_sdk_dualNewSDK.EQareaHeader_G6 aheader;
//aheader.AreaType = 0x00;
//aheader.AreaX = 0;
//aheader.AreaY = 0;
//aheader.AreaWidth = 96;
//aheader.AreaHeight = 48;
//aheader.BackGroundFlag = 0x00;
//aheader.Transparency = 101;
//aheader.AreaEqual = 0x00;
//OnbonBx_sdk_dualNewSDK.EQareaHeader_G6 aheader1;
//aheader1.AreaType = 0x10;
//aheader1.AreaX = 48;
//aheader1.AreaY = 0;
//aheader1.AreaWidth = 32;
//aheader1.AreaHeight = 32;
//aheader1.BackGroundFlag = 0x00;
//aheader1.Transparency = 101;
//aheader1.AreaEqual = 0x00;
// OnbonBx_sdk_dualNewSDK.EQSound_6G stSoundData = new OnbonBx_sdk_dualNewSDK.EQSound_6G();
//stSoundData.SoundFlag = 0;
//stSoundData.SoundVolum = 0;
//stSoundData.SoundSpeed = 0;
//stSoundData.SoundDataMode = 0;
//stSoundData.SoundReplayTimes = 0;
//stSoundData.SoundReplayDelay = 0;
//stSoundData.SoundReservedParaLen = 0;
//stSoundData.Soundnumdeal = 0;
//stSoundData.Soundlanguages = 0;
//stSoundData.Soundwordstyle = 0;
//stSoundData.SoundDataLen = 0;
//byte[] t = new byte[1];
//t[0] = 0;
//stSoundData.SoundData = t;
aheader.stSoundData = stSoundData;
//aheader1.stSoundData = stSoundData;
//string str = "Hello,LED789";
// OnbonBx_sdk_dualNewSDK.EQpageHeader_G6 pheader;
//pheader.PageStyle = 0x00;
//pheader.DisplayMode = 0x02;
//pheader.ClearMode = 0x01;
//pheader.Speed = 15;
//pheader.StayTime = 500;
//pheader.RepeatTime = 1;
//pheader.ValidLen = 0;
//pheader.CartoonFrameRate = 0x00;
//pheader.BackNotValidFlag = 0x00;
//pheader.arrMode = OnbonBx_sdk_dualNewSDK.E_arrMode.eMULTILINE;
//pheader.fontSize = 12;
//pheader.color = (uint)0x01;
//pheader.fontBold = 1;
//pheader.fontItalic = 0;
//pheader.tdirection = OnbonBx_sdk_dualNewSDK.E_txtDirection.pNORMAL;
//pheader.txtSpace = 0;
//pheader.Valign = 2;
//pheader.Halign = 2;
IntPtr aa = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(OnbonBx_sdk_dualNewSDK.EQareaHeader_G6)));
Marshal.StructureToPtr(aheader, aa, false);
IntPtr bb = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(OnbonBx_sdk_dualNewSDK.EQpageHeader_G6)));
Marshal.StructureToPtr(pheader, bb, false);
//OnbonBx_sdk_dualNewSDK.EQpageHeader_G6 pheader1;
//pheader1.PageStyle = 0x00;
//pheader1.DisplayMode = 0x03;
//pheader1.ClearMode = 0x01;
//pheader1.Speed = 15;
//pheader1.StayTime = 500;
//pheader1.RepeatTime = 1;
//pheader1.ValidLen = 0;
//pheader1.CartoonFrameRate = 0x00;
//pheader1.BackNotValidFlag = 0x00;
//pheader1.arrMode = OnbonBx_sdk_dualNewSDK.E_arrMode.eSINGLELINE;
//pheader1.fontSize = 18;
//pheader1.color = (uint)0x01;
//pheader1.fontBold = 0;
//pheader1.fontItalic = 0;
//pheader1.tdirection = OnbonBx_sdk_dualNewSDK.E_txtDirection.pNORMAL;
//pheader1.txtSpace = 0;
//pheader1.Valign = 2;
//pheader1.Halign = 2;
//IntPtr aa1 = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(OnbonBx_sdk_dualNewSDK.EQareaHeader_G6)));
// Marshal.StructureToPtr(aheader1, aa1, false);
// IntPtr bb1 = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(OnbonBx_sdk_dualNewSDK.EQpageHeader_G6)));
// Marshal.StructureToPtr(pheader1, bb1, false);
//删除单个动态区 zc
//err = OnbonBx_sdk_dualNewSDK.dynamicArea_DelArea_6G(ip, 5005, 0xff);
//Console.WriteLine("dynamicArea_DelArea_6G = " + err);
//单区域文本 zc
//err = OnbonBx_sdk_dualNewSDK.dynamicArea_AddAreaTxt_6G(ip, 5005, OnbonBx_sdk_dualNewSDK.E_ScreenColor_G56.eSCREEN_COLOR_SINGLE, 0, 0, 0,96
// , 48, font, 12, str);
//Console.WriteLine("dynamicArea_AddAreaTxt_6G = " + err);
//单区域图片 zc
//err = OnbonBx_sdk_dualNewSDK.dynamicArea_AddAreaPic_6G(ip, 5005, OnbonBx_sdk_dualNewSDK.E_ScreenColor_G56.eSCREEN_COLOR_FULLCOLOR, 0, 0, 0,
//32, 32, bb, img);
//Console.WriteLine("dynamicArea_AddAreaPic_6G = " + err);
//更新动态区,可设置属性 zc
err = OnbonBx_sdk_dualNewSDK.bxDual_dynamicArea_AddAreaTxtDetails_6G(ip, 5005, OnbonBx_sdk_dualNewSDK.E_ScreenColor_G56.eSCREEN_COLOR_SINGLE, 0,
aa, bb, font, str);
//Console.WriteLine("dynamicArea_AddAreaTxtDetails_6G = " + err);
//关联节目 zc
//ushort[] RelateProSerial = new ushort[1] { 0};
//err = OnbonBx_sdk_dualNewSDK.dynamicArea_AddAreaTxtDetails_WithProgram_6G(ip, 5005, OnbonBx_sdk_dualNewSDK.E_ScreenColor_G56.eSCREEN_COLOR_FULLCOLOR, 0, aa, bb, font, str, 0, RelateProSerial);
//Console.WriteLine("dynamicArea_AddAreaTxtDetails_WithProgram_6G = " + err);
//OnbonBx_sdk_dualNewSDK.DynamicAreaParams[] Params = new OnbonBx_sdk_dualNewSDK.DynamicAreaParams[1];
Params[0].uAreaId = 0;
Params[0].oAreaHeader_G6 = aheader;
Params[0].stPageHeader = pheader;
Params[0].fontName = BytesToIntptr(font);
Params[0].strAreaTxtContent = BytesToIntptr(str);
// Params[1].uAreaId = 1;
// Params[1].oAreaHeader_G6 = aheader1;
// Params[1].stPageHeader = pheader1;
// Params[1].fontName = BytesToIntptr(font);
// Params[1].strAreaTxtContent = BytesToIntptr(img);
// err = OnbonBx_sdk_dualNewSDK.dynamicAreaS_AddTxtDetails_6G(ip, 5005, OnbonBx_sdk_dualNewSDK.E_ScreenColor_G56.eSCREEN_COLOR_SINGLE, 1, Params);
// Console.WriteLine("dynamicAreaS_AddTxtDetails_6G = " + err);
}
catch (Exception ex)
{
Common.Log4.LogManage.WriteErr("led 发送失败");
}
}
//byte[]转换为Intptr
public static IntPtr BytesToIntptr(byte[] bytes)
{
int size = bytes.Length;
IntPtr buffer = Marshal.AllocHGlobal(size);
try
{
Marshal.Copy(bytes, 0, buffer, size);
return buffer;
}
finally
{
//Marshal.FreeHGlobal(buffer);
}
}
}
}
sdk
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace ZK.HardWareSDK
{
public class OnbonBx_sdk_dualNewSDK
{
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 校验
}
[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 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 HalfHourVal