在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例Windows系统编程 → 仰邦LED控制卡Demo

仰邦LED控制卡Demo

Windows系统编程

下载此实例
  • 开发语言:C#
  • 实例大小:14.71M
  • 下载次数:77
  • 浏览次数:1578
  • 发布时间:2020-02-25
  • 实例类别:Windows系统编程
  • 发 布 人:robot666
  • 文件格式:.zip
  • 所需积分:2
 相关标签:

实例介绍

【实例简介】该程序是一个仰邦LED卡的Demo,主要是有连接控制卡、通过控制卡向LED发送文字、通过控制卡展示表格,注意该程序使用的是LedDynamicArea.dll动态链接库实现的,如果你有什么新的想法,可以在https://xian689.com沟通

【实例截图】

from clipboard


from clipboard

【核心代码】

using System;
using System.Runtime.InteropServices;

namespace OnbonLed
{
    public class Handler
    {
        #region DLL引入

        /// <summary>
        ///     初始化动态库
        /// </summary>
        /// <returns>详见返回状态代码定义</returns>
        /// <remarks>初始化动态库;该函数不与显示屏通讯</remarks>
        [DllImport("dll/LedDynamicArea.dll", EntryPoint = "Initialize", CallingConvention = CallingConvention.StdCall)]
        public static extern int Initialize();

        /// <summary>
        ///     释放动态库;该函数不与显示屏通讯
        /// </summary>
        /// <returns></returns>
        /// <remarks>详见返回状态代码定义</remarks>
        [DllImport("dll/LedDynamicArea.dll", EntryPoint = "Uninitialize", CallingConvention = CallingConvention.StdCall)]
        public static extern int Uninitialize(); //释放动态库    

        /// <summary>
        ///     向动态库中添加显示屏信息;该函数不与显示屏通讯
        /// </summary>
        /// <param name="nControlType">显示屏的控制器型号,目前该动态区域动态库只支持BX-5E1、BX-5E2、BX-5E3等BX-5E系列控制器</param>
        /// <param name="nScreenNo">显示屏屏号;该参数与LedshowTW 2013软件中"设置屏参"模块的"屏号"参数一致</param>
        /// <param name="nSendMode">通讯模式;目前动态库中支持0:串口通讯;2:网络通讯(只支持固定IP模式);5:保存到文件等三种通讯模式</param>
        /// <param name="nWidth">显示屏宽度;单位:像素</param>
        /// <param name="nHeight">显示屏高度;单位:像素</param>
        /// <param name="nScreenType">显示屏类型;1:单基色;2:双基色</param>
        /// <param name="nPixelMode">点阵类型,只有显示屏类型为双基色时有效;1:R G;2:G R</param>
        /// <param name="pCom">通讯串口,只有在串口通讯时该参数有效;例:"COM1"</param>
        /// <param name="nBaud">通讯串口波特率,只有在串口通讯时该参数有效;目前只支持9600、57600两种波特率</param>
        /// <param name="pSocketIp">控制器的IP地址;只有在网络通讯(固定IP模式)模式下该参数有效,例:"192.168.0.199"</param>
        /// <param name="nSocketPort">控制器的端口地址;只有在网络通讯(固定IP模式)模式下该参数有效,例:5005</param>
        /// <param name="nStaticIpMode"></param>
        /// <param name="nServerMode">0:服务器模式未启动;1:服务器模式启动</param>
        /// <param name="pBarcode">设备条形码,用于服务器模式和中转服务器</param>
        /// <param name="pNetworkId">网络ID编号,用于服务器模式和中转服务器</param>
        /// <param name="pServerIp">中转服务器IP地址</param>
        /// <param name="nServerPort">中转服务器网络端口</param>
        /// <param name="pServerAccessUser">中转服务器访问用户名</param>
        /// <param name="pServerAccessPassword">中转服务器访问密码</param>
        /// <param name="pCommandDataFile">保存到文件方式时,命令保存命令文件名称。只有在保存到文件模式下该参数有效,例:"curCommandData.dat"</param>
        /// <returns></returns>
        [DllImport("dll/LedDynamicArea.dll", EntryPoint = "AddScreen_Dynamic",CallingConvention = CallingConvention.StdCall)]
        public static extern int AddScreen_Dynamic(int nControlType, int nScreenNo, int nSendMode, int nWidth,
            int nHeight,
            int nScreenType, int nPixelMode, string pCom, int nBaud, string pSocketIp, int nSocketPort,
            int nStaticIpMode, int nServerMode,
            string pBarcode, string pNetworkId, string pServerIp, int nServerPort, string pServerAccessUser,
            string pServerAccessPassword,
            string pCommandDataFile);

        /// <summary>
        ///     查询中转服务器设备的列表信息。 该函数与显示屏进行通讯
        /// </summary>
        /// <param name="pTransitDeviceType">中转设备类型 BX-3GPRS,BX-3G</param>
        /// <param name="pServerIp">中转服务器IP地址</param>
        /// <param name="nServerPort">中转服务器网络端口</param>
        /// <param name="pServerAccessUser">中转服务器访问用户名</param>
        /// <param name="pServerAccessPassword">中转服务器访问密码</param>
        /// <param name="pDeviceList">
        ///     保存查询的设备列表信息
        ///     将设备的信息用组成字符串, 比如:
        ///     设备1:名称 条形码 状态 类型 网络ID
        ///     设备2:名称 条形码 状态 类型 网络ID
        ///     组成字符串为:'设备1名称,设备1条形码,设备1状态,设备1类型,设备1网络ID;设备2名称,设备2条形码,设备2状态,设备2类型,设备2网络ID'
        ///     设备状态(Byte) :
        ///     $10:设备未知
        ///     $11:设备在线
        ///     $12:设备不在线
        ///     设备类型(Byte):
        ///     $16:设备为2G
        ///     $17:设备为3G
        /// </param>
        /// <param name="nDeviceCount">查询的设备个数</param>
        /// <returns></returns>
        [DllImport("dll/LedDynamicArea.dll", EntryPoint = "QuerryServerDeviceList",
            CallingConvention = CallingConvention.StdCall)]
        public static extern int QueryServerDeviceList(string pTransitDeviceType, string pServerIp, int nServerPort,
            string pServerAccessUser, string pServerAccessPassword,
            byte[] pDeviceList, ref int nDeviceCount);

        /// <summary>
        ///     向动态库中指定显示屏添加动态区域;该函数不与显示屏通讯
        /// </summary>
        /// <param name="nScreenNo">显示屏屏号</param>
        /// <param name="nDyAreaId">动态区域编号</param>
        /// <param name="nRunMode">
        ///     动态区域运行模式:
        ///     0:动态区数据循环显示;
        ///     1:动态区数据显示完成后静止显示最后一页数据;
        ///     2:动态区数据循环显示,超过设定时间后数据仍未更新时不再显示;
        ///     3:动态区数据循环显示,超过设定时间后数据仍未更新时显示Logo信息,Logo 信息即为动态区域的最后一页信息
        ///     4:动态区数据顺序显示,显示完最后一页后就不再显示
        /// </param>
        /// <param name="nTimeOut">动态区数据超时时间;单位:秒 </param>
        /// <param name="nAllProRelate">
        ///     节目关联标志;
        ///     1:所有节目都显示该动态区域;
        ///     0:在指定节目中显示该动态区域,如果动态区域要独立于节目显示,则下一个参数为空。
        /// </param>
        /// <param name="pProRelateList">节目关联列表,用节目编号表示;节目编号间用","隔开,节目编号定义为LedshowTW 2013软件中"P***"中的"***"</param>
        /// <param name="nPlayImmediately">动态区域是否立即播放0:该动态区域与异步节目一起播放;1:异步节目停止播放,仅播放该动态区域</param>
        /// <param name="nAreaX">动态区域起始横坐标;单位:像素</param>
        /// <param name="nAreaY">动态区域起始纵坐标;单位:像素</param>
        /// <param name="nAreaWidth">动态区域宽度;单位:像素</param>
        /// <param name="nAreaHeight">动态区域高度;单位:像素</param>
        /// <param name="nAreaFMode">动态区域边框显示标志;0:纯色;1:花色;255:无边框</param>
        /// <param name="nAreaFLine">动态区域边框类型, 纯色最大取值为FRAME_SINGLE_COLOR_COUNT=23;花色最大取值为:FRAME_MULI_COLOR_COUNT=47</param>
        /// <param name="nAreaFColor">边框显示颜色;选择为纯色边框类型时该参数有效</param>
        /// <param name="nAreaFStunt">
        ///     边框运行特技;
        ///     0:闪烁;
        ///     1:顺时针转动;
        ///     2:逆时针转动;
        ///     3:闪烁加顺时针转动;
        ///     4:闪烁加逆时针转动;
        ///     5:红绿交替闪烁;
        ///     6:红绿交替转动;
        ///     7:静止打出
        /// </param>
        /// <param name="nAreaFRunSpeed">边框运行速度</param>
        /// <param name="nAreaFMoveStep">边框移动步长;该值取值范围:1~8</param>
        /// <returns></returns>
        [DllImport("dll/LedDynamicArea.dll", EntryPoint = "AddScreenDynamicArea",
            CallingConvention = CallingConvention.StdCall)]
        public static extern int AddScreenDynamicArea(int nScreenNo, int nDyAreaId, int nRunMode,
            int nTimeOut, int nAllProRelate, string pProRelateList, int nPlayImmediately,
            int nAreaX, int nAreaY, int nAreaWidth, int nAreaHeight, int nAreaFMode, int nAreaFLine, int nAreaFColor,
            int nAreaFStunt, int nAreaFRunSpeed, int nAreaFMoveStep);

        /// <summary>
        ///     删除动态库中指定显示屏指定的动态区域信息;该函数不与显示屏通讯
        /// </summary>
        /// <param name="nScreenNo">显示屏屏号</param>
        /// <param name="nDyAreaId">动态区域编号</param>
        /// <returns></returns>
        [DllImport("dll/LedDynamicArea.dll", CallingConvention = CallingConvention.StdCall)]
        public static extern int DeleteScreenDynamicArea(int nScreenNo, int nDyAreaId);

        /// <summary>
        ///     向动态库中指定显示屏的指定动态区域添加信息文件;该函数不与显示屏通讯
        /// </summary>
        /// <param name="nScreenNo">显示屏屏号</param>
        /// <param name="nDyAreaId">动态区域编号</param>
        /// <param name="pFileName">添加的信息文件名称</param>
        /// <param name="nShowSingle">文字信息是否单行显示;0:多行显示;1:单行显示</param>
        /// <param name="pFontName">文字信息显示字体</param>
        /// <param name="nFontSize">文字信息显示字体的字号</param>
        /// <param name="nBold">文字信息是否粗体显示;0:正常;1:粗体显示 </param>
        /// <param name="nFontColor">文字信息显示颜色;红255 绿65280 黄65535</param>
        /// <param name="nStunt">
        ///     ///动态区域信息运行特技;
        ///     00:随机显示
        ///     01:静止显示
        ///     02:快速打出
        ///     03:向左移动
        ///     04:向左连移
        ///     05:向上移动
        ///     06:向上连移
        ///     07:闪烁
        ///     08:飘雪
        ///     09:冒泡
        ///     10:中间移出
        ///     11:左右移入
        ///     12:左右交叉移入
        ///     13:上下交叉移入
        ///     14:画卷闭合
        ///     15:画卷打开
        ///     16:向左拉伸
        ///     17:向右拉伸
        ///     18:向上拉伸
        ///     19:向下拉伸
        ///     20:向左镭射
        ///     21:向右镭射
        ///     22:向上镭射
        ///     23:向下镭射
        ///     24:左右交叉拉幕
        ///     25:上下交叉拉幕
        ///     26:分散左拉
        ///     27:水平百页
        ///     28:垂直百页
        ///     29:向左拉幕
        ///     30:向右拉幕
        ///     31:向上拉幕
        ///     32:向下拉幕
        ///     33:左右闭合
        ///     34:左右对开
        ///     35:上下闭合
        ///     36:上下对开
        ///     37:向右移动
        ///     38:向右连移
        ///     39:向下移动
        ///     40:向下连移
        /// </param>
        /// <param name="nRunSpeed">动态区域信息运行速度</param>
        /// <param name="nShowTime">动态区域信息显示时间;单位:10ms</param>
        /// <returns></returns>
        [DllImport("dll/LedDynamicArea.dll", EntryPoint = "AddScreenDynamicAreaFile",
            CallingConvention = CallingConvention.StdCall)]
        public static extern int AddScreenDynamicAreaFile(int nScreenNo, int nDyAreaId,
            string pFileName, int nShowSingle, string pFontName, int nFontSize, int nBold, int nFontColor,
            int nStunt, int nRunSpeed, int nShowTime);

        /// <summary>
        ///     向动态库中指定显示屏的指定动态区域添加信息文件;该函数不与显示屏通讯
        /// </summary>
        /// <param name="nScreenNo">显示屏屏号;该参数与AddScreen函数中的nScreenNo参数对应</param>
        /// <param name="nDyAreaId">动态区域编号;该参数与AddScreenDynamicArea函数中的nDYAreaID参数对应</param>
        /// <param name="pText">添加的信息文本字符串</param>
        /// <param name="nShowSingle">文字信息是否单行显示;0:多行显示;1:单行显示;</param>
        /// <param name="pFontName">文字信息显示字体;</param>
        /// <param name="nFontSize">文字信息显示字体的字号;</param>
        /// <param name="nBold">文字信息是否粗体显示;0:正常;1:粗体显示;</param>
        /// <param name="nFontColor">文字信息显示颜色;红255 绿65280 黄65535</param>
        /// <param name="nStunt">
        ///     ///动态区域信息运行特技;
        ///     00:随机显示
        ///     01:静止显示
        ///     02:快速打出
        ///     03:向左移动
        ///     04:向左连移
        ///     05:向上移动
        ///     06:向上连移
        ///     07:闪烁
        ///     08:飘雪
        ///     09:冒泡
        ///     10:中间移出
        ///     11:左右移入
        ///     12:左右交叉移入
        ///     13:上下交叉移入
        ///     14:画卷闭合
        ///     15:画卷打开
        ///     16:向左拉伸
        ///     17:向右拉伸
        ///     18:向上拉伸
        ///     19:向下拉伸
        ///     20:向左镭射
        ///     21:向右镭射
        ///     22:向上镭射
        ///     23:向下镭射
        ///     24:左右交叉拉幕
        ///     25:上下交叉拉幕
        ///     26:分散左拉
        ///     27:水平百页
        ///     28:垂直百页
        ///     29:向左拉幕
        ///     30:向右拉幕
        ///     31:向上拉幕
        ///     32:向下拉幕
        ///     33:左右闭合
        ///     34:左右对开
        ///     35:上下闭合
        ///     36:上下对开
        ///     37:向右移动
        ///     38:向右连移
        ///     39:向下移动
        ///     40:向下连移
        /// </param>
        /// <param name="nRunSpeed">动态区域信息运行速度</param>
        /// <param name="nShowTime">动态区域信息显示时间;单位:10ms</param>
        /// <returns></returns>
        [DllImport("dll/LedDynamicArea.dll", EntryPoint = "AddScreenDynamicAreaText",
            CallingConvention = CallingConvention.StdCall)]
        public static extern int AddScreenDynamicAreaText(int nScreenNo, int nDyAreaId,
            string pText, int nShowSingle, string pFontName, int nFontSize, int nBold, int nFontColor,
            int nStunt, int nRunSpeed, int nShowTime);

        /// <summary>
        ///     删除动态库中指定显示屏的所有信息;该函数不与显示屏通讯
        /// </summary>
        /// <param name="nScreenNo">显示屏屏号;该参数与AddScreen函数中的nScreenNo参数对应</param>
        /// <returns></returns>
        [DllImport("dll/LedDynamicArea.dll", EntryPoint = "DeleteScreen_Dynamic",
            CallingConvention = CallingConvention.StdCall)]
        public static extern int DeleteScreen_Dynamic(int nScreenNo);

        /// <summary>
        ///     删除动态库中指定显示屏指定的动态区域指定文件信息;该函数不与显示屏通讯
        /// </summary>
        /// <param name="nScreenNo">显示屏屏号;该参数与AddScreen函数中的nScreenNo参数对应</param>
        /// <param name="nDyAreaId">动态区域编号;该参数与AddScreenDynamicArea函数中的nDYAreaID参数对应</param>
        /// <param name="nFileOrd">动态区域的指定文件的文件序号;该序号按照文件添加顺序,从0顺序递增,如删除中间的文件,后面的文件序号自动填充</param>
        /// <returns></returns>
        [DllImport("dll/LedDynamicArea.dll", EntryPoint = "DeleteScreenDynamicAreaFile",
            CallingConvention = CallingConvention.StdCall)]
        public static extern int DeleteScreenDynamicAreaFile(int nScreenNo, int nDyAreaId, int nFileOrd);

        /// <summary>
        ///     发送动态库中指定显示屏指定的动态区域信息到显示屏;该函数与显示屏通讯
        /// </summary>
        /// <param name="nScreenNo">显示屏屏号;该参数与AddScreen函数中的nScreenNo参数对应</param>
        /// <param name="nDelAllDyArea">动态区域编号列表;1:同时发送多个动态区域,0:发送单个动态区域</param>
        /// <param name="pDyAreaIdList">动态区域编号;当nDelAllDYArea为1时,其值为"";当nDelAllDYArea为0时,该参数与AddScreenDynamicArea函数中的nDYAreaID参数对应,发送相应动态区域</param>
        /// <returns></returns>
        [DllImport("dll/LedDynamicArea.dll", EntryPoint = "SendDynamicAreasInfoCommand",
            CallingConvention = CallingConvention.StdCall)]
        public static extern int SendDynamicAreasInfoCommand(int nScreenNo, int nDelAllDyArea, string pDyAreaIdList);

        /// <summary>
        ///     删除动态库中指定显示屏指定的动态区域信息;同时向显示屏通讯删除指定的动态区域信息。该函数与显示屏通讯
        /// </summary>
        /// <param name="nScreenNo">显示屏屏号;该参数与AddScreen函数中的nScreenNo参数对应</param>
        /// <param name="nDelAllDyArea">动态区域编号列表;1:同时删除多个动态区域,0:删除单个动态区域</param>
        /// <param name="pDyAreaIdList">动态区域编号;当nDelAllDYArea为1时,其值为"";当nDelAllDYArea为0时,该参数与AddScreenDynamicArea函数中的nDYAreaID参数对应,删除相应动态区域</param>
        /// <returns></returns>
        [DllImport("dll/LedDynamicArea.dll", EntryPoint = "SendDeleteDynamicAreasCommand",
            CallingConvention = CallingConvention.StdCall)]
        public static extern int
            SendDeleteDynamicAreasCommand(int nScreenNo, int nDelAllDyArea, string pDyAreaIdList); //删除指定动态区域的信息


        /// <summary>
        ///     启动服务器,用于网络模式下的服务器模式和GPRS通讯模式
        /// </summary>
        /// <param name="nSendMode">
        ///     与显示屏的通讯模式;
        ///     0:串口模式、BX-5A2 & RF、BX-5A4 & RF 等控制器为RF串口无线模式;
        ///     1:GPRS模式
        ///     2:网络模式
        ///     4:WiFi模式
        ///     5:ONBON服务器-GPRS
        ///     6:ONBON服务器-3G
        /// </param>
        /// <param name="pServerIp">中转服务器IP地址</param>
        /// <param name="nServerPort">中转服务器网络端口</param>
        /// <returns></returns>
        [DllImport("dll/LedDynamicArea.dll", EntryPoint = "StartServer", CallingConvention = CallingConvention.StdCall)]
        public static extern int StartServer(int nSendMode, string pServerIp, int nServerPort);

        /// <summary>
        ///     关闭服务器,用于网络模式下的服务器模式和GPRS通讯模式
        /// </summary>
        /// <param name="nSendMode">
        ///     与显示屏的通讯模式;
        ///     0:串口模式、BX-5A2 & RF、BX-5A4 & RF等控制器为RF串口无线模式;
        ///     1:GPRS模式 
        ///     2:网络模式
        ///     4:WiFi模式
        ///     5:ONBON 服务器 -GPRS
        ///     6:ONBON 服务器-3G
        /// </param>
        /// <returns></returns>
        [DllImport("dll/LedDynamicArea.dll", EntryPoint = "StopServer", CallingConvention = CallingConvention.StdCall)]
        public static extern int StopServer(int nSendMode);

        #endregion

        #region 常量定义

        /// <summary>
        ///     动态区域运行模式:
        ///     0:动态区数据循环显示;
        ///     1:动态区数据显示完成后静止显示最后一页数据;
        ///     2:动态区数据循环显示,超过设定时间后数据仍未更新时不再显示;
        ///     3:动态区数据循环显示,超过设定时间后数据仍未更新时显示Logo信息,Logo 信息即为动态区域的最后一页信息
        ///     4:动态区数据顺序显示,显示完最后一页后就不再显示
        /// </summary>
        private const int RunModel = 0; //RUN_MODE_CYCLE_SHOW

        /// <summary>
        ///     返回状态代码定义,现在为没有错误
        /// </summary>
        private const int ReturnNoError = 0;

        /// <summary>
        ///     动态区域编号
        /// </summary>
        private const int ScreenDyAreaId = 0;

        /// <summary>
        ///     显示屏宽度
        /// </summary>
        private const int ScreenWidth = 96;

        /// <summary>
        ///     显示器高度
        /// </summary>
        private const int ScreenHeight = 32;

        #endregion

        public static string GetLedResultMsg(int code)
        {
            switch (code)
            {
                case 0xE1:
                    return "没有找到有效的动态区域";
                case 0xE2:
                    return "在指定的动态区域没有找到指定的文件序号";
                case 0xE3:
                    return "在指定的动态区域没有找到指定的页序号";
                case 0xE4:
                    return "动态库不支持该文件类型";
                case 0xF8:
                    return "系统中已经有该显示屏信息。如要重新设定请先执行DeleteScreen函数删除该显示屏后再添加";
                case 0xFA:
                    return "系统中没有找到有效的动态区域;可以先执行AddScreenDynamicArea函数添加动态区域信息后再添加";
                case 0xFC:
                    return "系统内没有查找到该显示屏;可以使用AddScreen函数添加该显示屏";

                case 0xFD:
                    return "系统内正在向该显示屏通讯,请稍后再通讯";

                case 0xFF:
                    return "其它错误";

                case 0:
                    return "函数执行成功";

                case 0xFE:
                    return "通讯错误。";
                default:
                    return $"错误码未知,错误码为:{code}";
            }
        }

        public static Action<string> Notify;
        private static readonly int ScreenNo = 1;
        private static readonly string HeadCommandDataFileName = "curCommandData";

        /// <summary>
        ///     初始
        /// </summary>
        /// <returns></returns>
        public static bool InitLed()
        {
            try
            {
                var nResult = Initialize(); //只需要一次
                if (nResult != ReturnNoError)
                {
                    var errorInfo = GetLedResultMsg(nResult);
                    Notify?.Invoke(errorInfo);
                    return false;
                }

                return true;
            }
            catch (Exception e)
            {
                Notify?.Invoke(e.ToString());
                return false;
            }
        }

        public static bool Add(string ip, int port = 5005)
        {
            try
            {
                var commandDataFileName = HeadCommandDataFileName   ScreenNo   ".dat";
                //向动态库中添加显示屏信息;该函数不与显示屏通讯,只用于动态库中的指定显示屏参数信息配置
                var result = AddScreen_Dynamic(
                    0x0154, //显示屏的控制器型号,CONTROLLER_BX_5E1
                    ScreenNo,
                    2, //通讯模式;目前动态库中支持0:串口通讯;2:网络通讯;5:保存到文件等三种通讯模式
                    ScreenWidth,
                    ScreenHeight,
                    1, // 显示屏类型;1:单基色;2:双基色
                    2, //点阵类型,只有显示屏类型为双基色时有效;1:R G;2:G R
                    "", //通讯串口,只有在串口通讯时该参数有效;例:"COM1"
                    57600, //通讯串口波特率,只有在串口通讯时该参数有效;目前只支持9600、57600两种波特率
                    ip, //IP
                    port, //端口号
                    0, //0:TCP模式     1:UDP模式
                    0, //0:服务器模式未启动;1:服务器模式启动。
                    "", // 服务器模式时的设备条形码
                    "", //服务器模式时的网络ID编号
                    "", //中转服务器IP地址 
                    5008, //中转服务器网络端口
                    "", //中转服务器访问用户名
                    "", //中转服务器访问密码
                    commandDataFileName //保存到文件方式时,命令保存命令文件名称。只有在保存到文件模式下该参数有效,例:"curCommandData.dat"
                );
                if (result != ReturnNoError)
                {
                    var errorInfo = GetLedResultMsg(result);
                    Notify?.Invoke(errorInfo);
                    return false;
                }

                result = AddScreenDynamicArea(
                    ScreenNo,
                    ScreenDyAreaId,
                    RunModel,
                    3,
                    1,
                    "",
                    1,
                    0,
                    0,
                    ScreenWidth,
                    ScreenHeight,
                    255,
                    0,
                    255,
                    7,
                    1,
                    1
                );

                if (result != ReturnNoError)
                {
                    var errorInfo = GetLedResultMsg(result);
                    Notify?.Invoke(errorInfo);
                    return false;
                }

                return true;
            }
            catch
            {
                return false;
            }
        }

        /// <summary>
        ///     向LED发送数据
        /// </summary>
        /// <param name="ledMessage">消息内容</param>
        /// <returns></returns>
        public static bool SendDataToLed(string ledMessage)
        {
            var result = AddScreenDynamicAreaText(
                ScreenNo,
                ScreenDyAreaId,
                ledMessage,
                0,
                "宋体",
                12,
                0,
                65535,
                2,
                7,
                15
            );
            if (result != ReturnNoError)
            {
                var errorInfo = GetLedResultMsg(result);
                Notify?.Invoke(errorInfo);
                return false;
            }


            result = SendDynamicAreasInfoCommand(ScreenNo, 1, "");
            if (result != ReturnNoError)
            {
                var errorInfo = GetLedResultMsg(result);
                Notify?.Invoke(errorInfo);
                return false;
            }

            return true;
        }
        /// <summary>
        /// 向LED发送文件
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public static bool SendFileToLed(string filePath)
        {
            var result = AddScreenDynamicAreaFile(
                ScreenNo,
                ScreenDyAreaId,
                filePath,
                0,
                "宋体",
                12,
                0,
                65535,
                2,
                7,
                15
            );
            if (result != ReturnNoError)
            {
                var errorInfo = GetLedResultMsg(result);
                Notify?.Invoke(errorInfo);
                return false;
            }


            result = SendDynamicAreasInfoCommand(ScreenNo, 1, "");
            if (result != ReturnNoError)
            {
                var errorInfo = GetLedResultMsg(result);
                Notify?.Invoke(errorInfo);
                return false;
            }

            return true;
        }
        public static void Close()
        {
            Uninitialize();
        }
    }
}

标签:

实例下载地址

仰邦LED控制卡Demo

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警