一個簡單的LED程式

来源:https://www.cnblogs.com/gfjin/archive/2017/12/27/8124185.html
-Advertisement-
Play Games

生產,操作,常需要,用LED屏顯示一些信息 下麵給一個最簡單的LED實常式序:本實例使用LEDSender2010.dll類庫 適用於中天等LED! 1.建立窗體: /* * Created by SharpDevelop. * User: gaofajin * Date: 2015/10/20 * ...


生產,操作,常需要,用LED屏顯示一些信息

下麵給一個最簡單的LED實常式序:本實例使用LEDSender2010.dll類庫

適用於中天等LED!

1.建立窗體:

/*
 * Created by SharpDevelop.
 * User: gaofajin
 * Date: 2015/10/20
 * Time: 19:50
 *
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;
namespace LedTest
{
 /// <summary>
 /// Description of MainForm.
 /// </summary>
 public partial class MainForm : Form
 {
  CLEDSender LedSenderHelper;
     public MainForm ()
        {
            InitializeComponent();
           lab_rtnMsg.Text = "已準備好";
            LedSenderHelper = new CLEDSender();
        }
  public MainForm(string text)
  {
   
   InitializeComponent();
            this.Text = text;
   lab_rtnMsg.Text="已準備好";
    LedSenderHelper=new CLEDSender ();
  }
 
   TDeviceParam GetDeviceParam()
  {
    TDeviceParam dp=new TDeviceParam ();
   dp.devType=LedSenderHelper.DEVICE_TYPE_UDP;
   dp.locPort=(ushort )Convert.ToInt16(txt_lPort.Text.Trim());
   dp.rmtHost =txt_IP.Text;
   dp.rmtPort  =(ushort )Convert.ToInt16( txt_rport .Text.Trim());
   dp.dstAddr =(ushort)Convert.ToInt16(txt_addr.Text);
   return dp;
  }
  
  void OpenPower()
  {
   TSenderParam sp=new TSenderParam ();
   sp.devParam=GetDeviceParam();
   sp.notifyMode =LedSenderHelper.NOTIFY_BLOCK;
   sp.wmHandle=(UInt32)Handle;
   sp.wmMessage=Convert.ToUInt32(1025);
   lab_rtnMsg.Text="正在打開電源";
      InsertCmd(LedSenderHelper.Do_LED_SetPower(ref sp, 1));
     
  }
  void ClosePower()
  {
   TSenderParam sp=new TSenderParam ();
    sp.devParam=GetDeviceParam();
   sp.notifyMode =LedSenderHelper.NOTIFY_BLOCK;
   sp.wmHandle=(UInt32)Handle;
   sp.wmMessage=Convert.ToUInt32(1025);
   lab_rtnMsg.Text="正在關閉電源";
   InsertCmd(LedSenderHelper.Do_LED_SetPower(ref sp, 0)); 
   }
  void ButtonClick(object sender,EventArgs e)
  {
   Button btn=sender as Button;
   switch (btn.Name )
   {
    case"btn_OpenPower":
     OpenPower();
      
     break;
    case"btn_ClosePower":
     ClosePower();
     break;
    case"btn_SendMsg":
     SendMsg(Rtxt_Msg.Text);
     break;
     default :
      break;
   }
  }
  
   void SendMsg(string Msg)
    {
     TSenderParam sp=new TSenderParam ();
     ushort K;
      sp.devParam=GetDeviceParam();
     sp.notifyMode =LedSenderHelper.NOTIFY_BLOCK;
   sp.wmHandle=(UInt32)Handle;
   sp.wmMessage=1025;
   //參數一制定方式是下載還是發送,play為發送
   //參數二顏色模式,單色雙色,
   //參數三節目顯示時間,超過此時間顯示下載下去的節目,此參數只在發送方式下有用
    K = (ushort)LedSenderHelper.Do_MakeRoot(LedSenderHelper.ROOT_PLAY, LedSenderHelper.COLOR_MODE_DOUBLE, LedSenderHelper.SURVIVE_ALWAYS);
            LedSenderHelper.Do_AddChapter(K, 30000, LedSenderHelper.WAIT_CHILD);
            LedSenderHelper.Do_AddRegion(K, 0, 0, 192, 32, 0);
            LedSenderHelper.Do_AddLeaf(K, 10000, LedSenderHelper.WAIT_CHILD);
            //參數
            //1.節目數據一般都是固定的K(上面,區域,頁面等的返回值)
            //2.左邊
            //3.頂邊
            //4.長度
            //5.寬度
            //6.是都透明
            //7.邊框
            //8.要發送的文字
            //9.字體名
            //10.字體大小
            //11.字體顏色
            //12.字體樣式
            //13.是否還行
            //14引入方式(下麵有列表說明)
            // 15 引入速度(取值範圍0-5,從快到慢)
            // 16 引出方式(下麵有列表說明)
            // 17引出速度(取值範圍0-5,從快到慢)
            // 18 停留方式(下麵有列表說明)
            // 19停留速度(取值範圍0-5,從快到慢)
            // 20 停留時間(單位毫秒)

            int huangheng = LedSenderHelper.V_FALSE;
            if (checkBox1.Checked==true)
            {
                huangheng = LedSenderHelper.V_TRUE;
            }
            ParaSet ps=new ParaSet ();
            GetParaSet(ref ps);
            LedSenderHelper.Do_AddText(K, Int32.Parse(txt_Left.Text), Int32.Parse(txt_Right.Text), Int32.Parse(txt_Width.Text), Int32.Parse(txt_Height.Text), LedSenderHelper.V_TRUE, 0, Msg, "宋體",Int32.Parse(txt_Fontsize.Text), 0xffff, LedSenderHelper.WFS_NONE, huangheng, 0, ps.inStyle, ps.inSpeed,ps.outStyle ,ps.outSpeed ,ps.tlStyle ,ps.tlSpeed,ps.tlTime);
            lab_rtnMsg.Text = "正在執行命令或者發送數據...";           
            InsertCmd(LedSenderHelper.Do_LED_SendToScreen(ref sp, K));
    }
      private void InsertCmd(Int32 K)
        {
            TNotifyParam notifyparam = new TNotifyParam();
            if (K >= 0)
            {
                LedSenderHelper.Do_LED_GetNotifyParam(ref notifyparam, K);

                if (notifyparam.notify ==LedSenderHelper.LM_TIMEOUT)
                {
                   lab_rtnMsg.Text = "命令執行超時";
                }
                else if (notifyparam.notify == LedSenderHelper.LM_TX_COMPLETE)
                {
                    if (notifyparam.result == LedSenderHelper.RESULT_FLASH)
                    {
                        lab_rtnMsg.Text = "數據傳送完成,正在寫入Flash";
                    }
                    else
                    {
                       lab_rtnMsg.Text = "數據傳送完成";
                    }
                }
                else if (notifyparam.notify == LedSenderHelper.LM_RESPOND)
                {
                    if (notifyparam.command == LedSenderHelper.PKC_GET_POWER)
                    {
                        if (notifyparam.status == LedSenderHelper.LED_POWER_ON)
                            lab_rtnMsg.Text = "讀取電源狀態完成,當前為電源開啟狀態";
                        else if (notifyparam.status == LedSenderHelper.LED_POWER_OFF)
                            lab_rtnMsg.Text = "讀取電源狀態完成,當前為電源關閉狀態";
                    }
                    else if (notifyparam.command == LedSenderHelper.PKC_SET_POWER)
                    {
                        if (notifyparam.result == 99)
                            lab_rtnMsg.Text = "當前為定時開關屏模式";
                        else if (notifyparam.status == LedSenderHelper.LED_POWER_ON)
                            lab_rtnMsg.Text = "設置電源狀態完成,當前為電源開啟狀態";
                        else lab_rtnMsg.Text = "設置電源狀態完成,當前為電源關閉狀態";
                    }
                    else if (notifyparam.command == LedSenderHelper.PKC_GET_BRIGHT)
                    {
                        lab_rtnMsg.Text = string.Format("讀取亮度完成,當前亮度={0:D}", notifyparam.status);
                    }
                    else if (notifyparam.command == LedSenderHelper.PKC_SET_BRIGHT)
                    {
                        if (notifyparam.result == 99) lab_rtnMsg.Text = "當前為定時亮度調節模式";
                        else lab_rtnMsg.Text = string.Format("設置亮度完成,當前亮度={0:D}", notifyparam.status);
                    }
                    else if (notifyparam.command == LedSenderHelper.PKC_ADJUST_TIME)
                    {
                       lab_rtnMsg.Text = "校正顯示屏時間完成";
                    }
                }
            }
            else if (K == LedSenderHelper.R_DEVICE_INVALID)
                lab_rtnMsg.Text = "打開通訊設備失敗(串口不存在、或者串口已被占用、或者網路埠被占用)";
            else if (K == LedSenderHelper.R_DEVICE_BUSY)
                lab_rtnMsg.Text = "設備忙,正在通訊中...";
        }
     
      void GetParaSet(ref ParaSet ps )
      {
       
       ps.inStyle=Convert.ToInt32( txt_InStyle.Text);
       ps.inSpeed=Convert.ToInt32(txt_inSpeed.Text);
       ps.outStyle=Convert.ToInt32(txt_OutStyle.Text);
       ps.outSpeed=Convert.ToInt32(txt_OutSpeed.Text);
       ps.tlStyle=Convert.ToInt32(txt_TlStyle.Text);
       ps.tlSpeed =Convert.ToInt32(txt_TlSpeed.Text);
       ps.tlTime=Convert.ToInt32(txt_TlTime.Text);
      }

 }
}

2.LED幫助類:

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices; // 用 DllImport 需用此 命名空間

namespace LedTest
{
    //設備通訊參數
    public struct TDeviceParam
    {
        public ushort devType;
        public ushort comSpeed;
        public ushort comPort;
        public ushort comFlow;
        public ushort locPort;
        public ushort rmtPort;
        public ushort srcAddr;
        public ushort dstAddr;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public String rmtHost;
        public uint txTimeo;   //發送後等待應答時間 ====超時時間應為txTimeo*txRepeat
        public uint txRepeat;  //失敗重發次數
        public uint txMovewin; //划動視窗
        public uint key;       //通訊密鑰
        public int pkpLength;  //數據包大小

    }

    //設備控制參數
    public struct TSenderParam
    {
        public TDeviceParam devParam;
        public UInt32 wmHandle;
        public UInt32 wmMessage;
        public UInt32 wmLParam;
        public UInt32 notifyMode;
    }

    //設備應答消息參數
    public struct TNotifyParam
    {
        public ushort notify;
        public ushort command;
        public Int32 result;
        public Int32 status;
        TSenderParam param;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] buffer;
        UInt32 size;
    }

    //SYSTEMTIME型日期時間結構
    public struct TSystemTime
    {
        public ushort wYear;
        public ushort wMonth;
        public ushort wDayOfWeek;
        public ushort wDay;
        public ushort wHour;
        public ushort wMinute;
        public ushort wSecond;
        public ushort wMilliseconds;
    }

    //TimeStamp型日期時間結構
    public struct TTimeStamp
    {
        public Int32 time;
        public Int32 date;
    }

    class CLEDSender
    {
        //通訊設備類型
        public readonly ushort DEVICE_TYPE_COM = 0;  //串口通訊
        public readonly ushort DEVICE_TYPE_UDP = 1;  //網路通訊
        public readonly ushort DEVICE_TYPE_485 = 2;  //485通訊

        //串口或者485通訊使用得通訊速度(波特率)
        public readonly ushort SBR_57600 = 0;
        public readonly ushort SBR_38400 = 1;
        public readonly ushort SBR_19200 = 2;
        public readonly ushort SBR_9600  = 3;

        //是否等待下位機應答,直接發送所有數據
        public readonly UInt32 NOTIFY_NONE  = 1;
        //是否阻塞方式;是則等到發送完成或者超時,才返回;否則立即返回
        public readonly UInt32 NOTIFY_BLOCK = 2;
        //是否將發送結果以Windows窗體消息方式送到調用得應用
        public readonly UInt32 NOTIFY_EVENT = 4;

        public readonly Int32 R_DEVICE_READY    = 0;
        public readonly Int32 R_DEVICE_INVALID  = -1;
        public readonly Int32 R_DEVICE_BUSY     = -2;
        public readonly Int32 R_FONTSET_INVALID = -3;
        public readonly Int32 R_DLL_INIT_IVALID = -4;
        public readonly Int32 R_IGNORE_RESPOND  = -5;

        //下位機應答標識
        public readonly ushort LM_RX_COMPLETE = 1;
        public readonly ushort LM_TX_COMPLETE = 2;
        public readonly ushort LM_RESPOND     = 3;
        public readonly ushort LM_TIMEOUT     = 4;
        public readonly ushort LM_NOTIFY      = 5;
        public readonly ushort LM_PARAM       = 6;
        public readonly ushort LM_TX_PROGRESS = 7;
        public readonly ushort LM_RX_PROGRESS = 8;
        public readonly ushort RESULT_FLASH = 0xff;

        //命令代碼定義
        public readonly ushort PKC_RESPOND     = 3;
        public readonly ushort PKC_QUERY       = 4;
        public readonly ushort PKC_OVERFLOW    = 5;
        public readonly ushort PKC_ADJUST_TIME = 6;
        public readonly ushort PKC_GET_PARAM   = 7;
        public readonly ushort PKC_SET_PARAM   = 8;
        public readonly ushort PKC_GET_POWER   = 9;
        public readonly ushort PKC_SET_POWER   = 10;
        public readonly ushort PKC_GET_BRIGHT  = 11;
        public readonly ushort PKC_SET_BRIGHT  = 12;

        //電源開關參數值
        public readonly Int32 LED_POWER_ON  = 1;
        public readonly Int32 LED_POWER_OFF = 0;

        //Chapter和Leaf中,播放時間控制
        public readonly ushort WAIT_USE_TIME = 0;  //按照指定的時間長度播放,到時間就切到下一個
        public readonly ushort WAIT_CHILD    = 1;  //等待子項目的播放,如果到了指定的時間長度,而子項目還沒有播完,則等待播完

        //整形TRUE/FALSE值
        public readonly Int32 V_FALSE = 0;
        public readonly Int32 V_TRUE  = 1;

        //顯示屏基色類型
        public readonly Int32 COLOR_MODE_MONO       = 1;  //單色
        public readonly Int32 COLOR_MODE_DOUBLE     = 2;  //雙色
        public readonly Int32 COLOR_MODE_FULL_16BIT = 3;  //16位全彩
        public readonly Int32 COLOR_MODE_FULL_32BIT = 4;  //32位全彩

        //顯示數據命令
        public readonly Int32 ROOT_UPDATE       = 0x13;  //更新下位機程式
        public readonly Int32 ROOT_FONTSET      = 0x14;  //下載字型檔
        public readonly Int32 ROOT_PLAY         = 0x21;  //節目數據,保存到RAM,掉電丟失-
        public readonly Int32 ROOT_DOWNLOAD     = 0x22;  //節目數據,保存到Flash
        public readonly Int32 ROOT_PLAY_CHAPTER = 0x23;  //插入或者更新某一節目
        public readonly Int32 ROOT_PLAY_REGION  = 0x25;  //插入或者更新某一區域/分區
        public readonly Int32 ROOT_PLAY_LEAF    = 0x27;  //插入或者更新某一頁面
        public readonly Int32 ROOT_PLAY_OBJECT  = 0x29;  //插入或者更新某一對象

        public readonly Int32 ACTMODE_INSERT    = 0;     //插入操作
        public readonly Int32 ACTMODE_REPLACE   = 1;     //替換操作

        //RAM節目播放
        public readonly Int32 SURVIVE_ALWAYS = -1;

        //Windows字體類型定義
        public readonly Int32 WFS_NONE      = 0x0;   //普通樣式
        public readonly Int32 WFS_BOLD      = 0x01;  //粗體
        public readonly Int32 WFS_ITALIC    = 0x02;  //斜體
        public readonly Int32 WFS_UNDERLINE = 0x04;  //下劃線
        public readonly Int32 WFS_STRIKEOUT = 0x08;  //刪除線

        //內碼文字大小
        public readonly Int32 FONT_SET_16 = 0;      //16點陣字元
        public readonly Int32 FONT_SET_24 = 1;      //24點陣字元
 
        //正計時、倒計時type參數
        public readonly Int32 CT_COUNTUP   = 0;      //正計時
        public readonly Int32 CT_COUNTDOWN = 1;      //倒計時
        public readonly Int32 CT_COUNTUP_EX = 2;     //倒計時
        public readonly Int32 CT_COUNTDOWN_EX = 3;   //倒計時
       
        //正計時、倒計時format參數
        public readonly Int32 CF_HNS    = 0;      //時分秒(相對值)
        public readonly Int32 CF_HN     = 1;      //時分(相對值)
        public readonly Int32 CF_NS     = 2;      //分秒(相對值)
        public readonly Int32 CF_H      = 3;      //時(相對值)
        public readonly Int32 CF_N      = 4;      //分(相對值)
        public readonly Int32 CF_S      = 5;      //秒(相對值)
        public readonly Int32 CF_DAY    = 6;      //天數(絕對數量)
        public readonly Int32 CF_HOUR   = 7;      //小時數(絕對數量)
        public readonly Int32 CF_MINUTE = 8;     //分鐘數(絕對數量)
        public readonly Int32 CF_SECOND = 9;      //秒數(絕對數量)

        //模擬時鐘邊框形狀
        public readonly Int32 SHAPE_RECTANGLE = 0;      //方形
        public readonly Int32 SHAPE_ROUNDRECT = 1;      //圓角方形
        public readonly Int32 SHAPE_CIRCLE    = 2;      //圓形

        ////////////////////////////////////////////////////////////////////////////////////////////
        //介面函數導入
        ////////////////////////////////////////////////////////////////////////////////////////////

        //動態鏈接庫初始化
        [DllImport("LEDSender2010.dll")]
        private static extern int LED_Startup();

        //動態鏈接庫銷毀
        [DllImport("LEDSender2010.dll")]
        private static extern int LED_Cleanup();

        //創建控制卡線上監聽服務
        //  serverindex 控制卡線上監聽服務編號(可以在多個socket udp埠監聽)
        //  localport 本地埠
        [DllImport("LEDSender2010.dll")]
        private static extern int LED_Report_CreateServer(Int32 serverindex, Int32 localport);

        //刪除控制卡線上監聽服務
        //  serverindex 控制卡線上監聽服務編號
        [DllImport("LEDSender2010.dll")]
        private static extern void LED_Report_RemoveServer(Int32 serverindex);

        //刪除全部控制卡線上監聽服務
        [DllImport("LEDSender2010.dll")]
        private static extern void LED_Report_RemoveAllServer();

        //獲得控制卡線上列表
        //必須先創建控制卡線上監聽服務,即調用LED_Report_CreateServer後使用,否則返回值無效
        //  serverindex 控制卡線上監聽服務編號
        //  plist 輸出線上列表的用戶外部緩衝區,
        //        如果傳入空(NULL/0),則輸出到動態鏈接庫內部的緩衝區,繼續調用下麵的介面取得詳細信息
        //  count 最大讀取個數
        //--返回值-- 小於0表示失敗(未創建該線上監聽服務),大於等於0表示線上的控制卡數量
        [DllImport("LEDSender2010.dll")]
        private static extern int LED_Report_GetOnlineList(Int32 serverindex, Int32 listaddr, Int32 count);

        //獲得某個線上控制卡的上報控制卡名稱
        //必須先創建控制卡線上監聽服務,即調用LED_Report_CreateServer後使用,否則返回值無效
        //  serverindex 控制卡線上監聽服務編號
        //  itemindex 該監聽服務的線上列表中,線上控制卡的編號
        //--返回值-- 線上控制卡的上報控制卡名稱
        [DllImport("LEDSender2010.dll")]
        private static extern String LED_Report_GetOnlineItemName(Int32 serverindex, Int32 itemindex);

        //獲得某個線上控制卡的上報控制卡IP地址
        //必須先創建控制卡線上監聽服務,即調用LED_Report_CreateServer後使用,否則返回值無效
        //  serverindex 控制卡線上監聽服務編號
        //  itemindex 該監聽服務的線上列表中,線上控制卡的編號
        //--返回值-- 線上控制卡的IP地址
        [DllImport("LEDSender2010.dll")]
        private static extern String LED_Report_GetOnlineItemHost(Int32 serverindex, Int32 itemindex);

        //獲得某個線上控制卡的上報控制卡遠程UDP埠號
        //必須先創建控制卡線上監聽服務,即調用LED_Report_CreateServer後使用,否則返回值無效
        //  serverindex 控制卡線上監聽服務編號
        //  itemindex 該監聽服務的線上列表中,線上控制卡的編號
        //--返回值-- 線上控制卡的遠程UDP埠號
        [DllImport("LEDSender2010.dll")]
        private static extern int LED_Report_GetOnlineItemPort(Int32 serverindex, Int32 itemindex);

        //獲得某個線上控制卡的上報控制卡地址
        //必須先創建控制卡線上監聽服務,即調用LED_Report_CreateServer後使用,否則返回值無效
        //  serverindex 控制卡線上監聽服務編號
        //  itemindex 該監聽服務的線上列表中,線上控制卡的編號
        //--返回值-- 線上控制卡的硬體地址
        [DllImport("LEDSender2010.dll")]
        private static extern int LED_Report_GetOnlineItemAddr(Int32 serverindex, Int32 itemindex);

        //動態鏈接庫銷毀
        [DllImport("LEDSender2010.dll")]
        private static extern void LED_Preview(Int32 index, Int32 width, Int32 height, string previewfile);

        //設置每次命令執行完成後,是否關閉設備。=0表示不關閉;=1表示關閉。
        [DllImport("LEDSender2010.dll")]
        private static extern void LED_CloseDeviceOnTerminate(int AValue);

        //獲取控制卡應答結果的數據
        [DllImport("LEDSender2010.dll")]
        private static extern int LED_GetNotifyParam(ref TNotifyParam param, Int32 index);
       
        //複位控制卡節目播放,重新顯示控制卡Flash中存儲的節目
        [DllImport("LEDSender2010.dll")]
        private static extern int LED_ResetDisplay(ref TSenderParam param);

        //設置控制卡電源 value=LED_POWER_ON表示開啟電源 value=LED_POWER_OFF表示關閉電源
        [DllImport("LEDSender2010.dll")]
        private static extern int LED_SetPower(ref TSenderParam param, Int32 value);

        //讀取控制卡電源狀態
        [DllImport("LEDSender2010.dll")]
        private static extern int LED_GetPower(ref TSenderParam param);

        //設置控制卡亮度 value取值範圍0-7
        [DllImport("LEDSender2010.dll")]
        private static extern int LED_SetBright(ref TSenderParam param, Int32 value);

        //讀取控制卡亮度
        [DllImport("LEDSender2010.dll")]
        private static extern int LED_GetBright(ref TSenderParam param);

        //校正時間,以當前電腦的系統時間校正控制卡的時鐘
        [DllImport("LEDSender2010.dll")]
        private static extern int LED_AdjustTime(ref TSenderParam param);

        //校正時間擴展,以指定的時間校正控制卡的時鐘
        [DllImport("LEDSender2010.dll")]
        private static extern int LED_AdjustTimeEx(ref TSenderParam param, ref TSystemTime time);

        //發送節目數據 index為MakeRoot、MakeChapter、MakeRegion、MakeLeaf、MakeObject函數的返回值
        [DllImport("LEDSender2010.dll")]
        private static extern int LED_SendToScreen(ref TSenderParam param, Int32 index);

        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        //節目數據組織形式
        //  ROOT
        //   |
        //   |---Chapter(節目)
        //   |      |
        //   |      |---Region(區域/分區)
        //   |      |     |
        //   |      |     |---Leaf(頁面)
        //   |      |     |    |
        //   |      |     |    |---Object(對象[文字、時鐘、圖片等])
        //   |      |     |    |
        //   |      |     |    |---Object(對象[文字、時鐘、圖片等])
        //   |      |     |    |
        //   |      |     |    |   ......
        //   |      |     |    |
        //   |      |     |
        //   |      |     |---Leaf(頁面)
        //   |      |     |
        //   |      |     |   ......
        //   |      |     |
        //   |      |
        //   |      |---Region(區域/分區)
        //   |      |
        //   |      |   ......
        //   |      |
        //   |---Chapter(節目)
        //   |
        //   |   ......

        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        //生成節目數據(從VisionShow軟體編輯的Vsq文件載入,並生成要下發的節目數據)
        //  RootType 為節目類型;=ROOT_PLAY表示更新控制卡RAM中的節目(掉電丟失);=ROOT_DOWNLOAD表示更新控制卡Flash中的節目(掉電不丟失)
        //  ColorMode 為顏色模式;取值為COLOR_MODE_MONO或者COLOR
        //  survive 為RAM節目生存時間,在RootType=ROOT_PLAY時有效,當RAM節目播放達到時間後,恢復顯示FLASH中的節目
        //  filename 由VisionShow軟體編輯的節目文件
        [DllImport("LEDSender2010.dll")]
        private static extern int MakeFromVsqFile(string filename, Int32 RootType, Int32 ColorMode, Int32 survive);

        //生成節目數據
        //  RootType 為節目類型;=ROOT_PLAY表示更新控制卡RAM中的節目(掉電丟失);=ROOT_DOWNLOAD表示更新控制卡Flash中的節目(掉電不丟失)
        //  ColorMode 為顏色模式;取值為COLOR_MODE_MONO或者COLOR
        //  survive 為RAM節目生存時間,在RootType=ROOT_PLAY時有效,當RAM節目播放達到時間後,恢復顯示FLASH中的節目
        [DllImport("LEDSender2010.dll")]
        private static extern int MakeRoot(Int32 RootType, Int32 ColorMode, Int32 survive);

        //生成節目數據,後續需要調用[AddRegion]->[AddLeaf]->[AddObject]->[AddWindows/AddDateTime等]
        //  RootType 必須設為ROOT_PLAY_CHAPTER
        //  ActionMode 必須設為0
        //  ChapterIndex 要更新的節目序號
        //  ColorMode 同MakeRoot中的定義
        //  time 播放的時間長度
        //  wait 等待模式,=WAIT_CHILD,表示當達到播放時間長度時,需要等待子節目播放完成再切換;
        //                 =WAIT_USE_TIME,表示當達到播放時間長度時,不等待子節目播放完成,直接切換下一節目
        [DllImport("LEDSender2010.dll")]
        private static extern int MakeChapter(Int32 RootType, Int32 ActionMode, Int32 ChapterIndex, Int32 ColorMode, UInt32 time, ushort wait);

        //生成區域/分區,後續需要調用[AddLeaf]->[AddObject]->[AddWindows/AddDateTime等]
        //  RootType 必須設為ROOT_PLAY_REGION
        //  ActionMode 必須設為0
        //  ChapterIndex 要更新的節目序號
        //  RegionIndex 要更新的區域/分區序號
        //  ColorMode 同MakeRoot中的定義
        //  left、top、width、height 左、上、寬度、高度
        //  border 流水邊框
        [DllImport("LEDSender2010.dll")]
        private static extern int MakeRegion(Int32 RootType, Int32 ActionMode, Int32 ChapterIndex, Int32 RegionIndex,
            Int32 ColorMode, Int32 left, Int32 top, Int32 width, Int32 height, Int32 border);

        //生成頁面,後續需要調用[AddObject]->[AddWindows/AddDateTime等]
        //  RootType 必須設為ROOT_PLAY_LEAF
        //  ActionMode 必須設為0
        //  ChapterIndex 要更新的節目序號
        //  RegionIndex 要更新的區域/分區序號
        //  LeafIndex 要更新的頁面序號
        //  ColorMode 同MakeRoot中的定義
        //  time 播放的時間長度
        //  wait 等待模式,=WAIT_CHILD,表示當達到播放時間長度時,需要等待子節目播放完成再切換;
        //                 =WAIT_USE_TIME,表示當達到播放時間長度時,不等待子節目播放完成,直接切換下一頁面
        [DllImport("LEDSender2010.dll")]
        private static extern int MakeLeaf(Int32 RootType, Int32 ActionMode, Int32 ChapterIndex, Int32 RegionIndex, Int32 LeafIndex,
            Int32 ColorMode, UInt32 time, ushort wait);

        //生成播放對象,後續需要調用[AddWindows/AddDateTime等]
        //  RootType 必須設為ROOT_PLAY_LEAF
        //  ActionMode 必須設為0
        //  ChapterIndex 要更新的節目序號
        //  RegionIndex 要更新的區域/分區序號
        //  LeafIndex 要更新的頁面序號
        //  ObjectIndex 要更新的對象序號
        //  ColorMode 同MakeRoot中的定義
        [DllImport("LEDSender2010.dll")]
        private static extern int MakeObject(Int32 RootType, Int32 ActionMode, Int32 ChapterIndex, Int32 RegionIndex, Int32 LeafIndex, Int32 ObjectIndex, Int32 ColorMode);

        //添加節目
        //  num 節目數據緩衝區編號,是MakeRoot的返回值
        //  time 播放的時間長度(單位為毫秒)
        //  wait 等待模式,=WAIT_CHILD,表示當達到播放時間長度時,需要等待子節目播放完成再切換;
        //                 =WAIT_USE_TIME,表示當達到播放時間長度時,不等待子節目播放完成,直接切換下一節目
        [DllImport("LEDSender2010.dll")]
        private static extern int AddChapter(ushort num, UInt32 time, ushort wait);

        //添加區域/分區
        //  num 節目數據緩衝區編號,是MakeRoot、MakeChapter的返回值
        //  left、top、width、height 左、上、寬度、高度
        //  border 流水邊框
        [DllImport("LEDSender2010.dll")]
        private static extern int AddRegion(ushort num, Int32 left, Int32 top, Int32 width, Int32 height, Int32 border);

        //添加頁面
        //  num 節目數據緩衝區編號,是MakeRoot、MakeChapter、MakeRegion的返回值
        //  time 播放的時間長度(單位為毫秒)
        //  wait 等待模式,=WAIT_CHILD,表示當達到播放時間長度時,需要等待子節目播放完成再切換;
        //                 =WAIT_USE_TIME,表示當達到播放時間長度時,不等待子節目播放完成,直接切換下一頁面
        [DllImport("LEDSender2010.dll")]
        private static extern int AddLeaf(ushort num, UInt32 time, ushort wait);

        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        //添加日期時間顯示
        //  num 節目數據緩衝區編號,是MakeRoot、MakeChapter、MakeRegion、MakeLeaf、MakeObject的返回值
        //  left、top、width、height 左、上、寬度、高度
        //  transparent 是否透明 =1表示透明;=0表示不透明
        //  border 流水邊框(未實現)
        //  fontname 字體名稱
        //  fontsize 字體大小
        //  fontcolor 字體顏色
        //  fontstyle 字體樣式 舉例:=WFS_BOLD表示粗體;=WFS_ITALIC表示斜體;=WFS_BOLD+WFS_ITALIC表示粗斜體
        //  year_offset 年偏移量
        //  month_offset 月偏移量
        //  day_offset 日偏移量
        //  sec_offset 秒偏移量
        //  format 顯示格式
        //      #y表示年 #m表示月 #d表示日 #h表示時 #n表示分 #s表示秒 #w表示星期 #c表示農曆
        //      舉例: format="#y年#m月#d日 #h時#n分#s秒 星期#w 農曆#c"時,顯示為"2009年06月27日 12時38分45秒 星期六 農曆五月初五"
        [DllImport("LEDSender2010.dll")]
        private static extern int AddDateTime(ushort num, Int32 left, Int32 top, Int32 width, Int32 height, Int32 transparent, Int32 border,
      string fontname, Int32 fontsize, Int32 fontcolor, Int32 fontstyle,
            Int32 year_offset, Int32 month_offset, Int32 day_offset, Int32 sec_offset, string format);

        //添加作戰時間顯示
        //  num 節目數據緩衝區編號,是MakeRoot、MakeChapter、MakeRegion、MakeLeaf、MakeObject的返回值
        //  left、top、width、height 左、上、寬度、高度
        //  transparent 是否透明 =1表示透明;=0表示不透明
        //  border 流水邊框(未實現)
        //  fontname 字體名稱
        //  fontsize 字體大小
        //  fontcolor 字體顏色
        //  fontstyle 字體樣式 舉例:=WFS_BOLD表示粗體;=WFS_ITALIC表示斜體;=WFS_BOLD+WFS_ITALIC表示粗斜體
        //  format 顯示格式
        //      #y表示年 #m表示月 #d表示日 #h表示時 #n表示分 #s表示秒 #w表示星期
        //  basetime 作戰時間
        //  fromtime 開始時間
        //  totime 結束時間
        //  step 計時走秒時間步長(多少毫秒走一秒)
        [DllImport("LEDSender2010.dll")]
        private static extern int AddCampaignEx(ushort num, Int32 left, Int32 top, Int32 width, Int32 height, Int32 transparent, Int32 border,
            string fontname, Int32 fontsize, Int32 fontcolor, Int32 fontstyle,
            string format, ref TTimeStamp basetime, ref TTimeStamp fromtime, ref TTimeStamp totime, Int32 step);

        //添加倒計時顯示
        //  num 節目數據緩衝區編號,是MakeRoot、MakeChapter、MakeRegion、MakeLeaf、MakeObject的返回值
        //  left、top、width、height 左、上、寬度、高度
        //  transparent 是否透明 =1表示透明;=0表示不透明
        //  border 流水邊框(未實現)
        //  countertype 計時類型 0(CT_COUNTUP)為正計時,1(CT_COUNTDOWN)為倒計時
        //  format 顯示格式
        //  fontname 字體名稱
        //  fontsize 字體大小
        //  fontcolor 字體顏色
        //  fontstyle 字體樣式 舉例:=WFS_BOLD表示粗體;=WFS_ITALIC表示斜體;=WFS_BOLD+WFS_ITALIC表示粗斜體
        //  basetime 作戰時間
        [DllImport("LEDSender2010.dll")]
        private static extern int AddCounter(ushort num, Int32 left, Int32 top, Int32 width, Int32 height, Int32 transparent, Int32 border, Int32 countertype, Int32 format,
            string fontname, Int32 fontsize, Int32 fontcolor, Int32 fontstyle, ref TTimeStamp basetime);

        //添加模擬時鐘
        //  num 節目數據緩衝區編號,是MakeRoot、MakeChapter、MakeRegion、MakeLeaf、MakeObject的返回值
        //  left、top、width、height 左、上、寬度、高度
        //  transparent 是否透明 =1表示透明;=0表示不透明
        //  border 流水邊框(未實現)
        //  offset 秒偏移量
        //  bkcolor: 背景顏色
        //  bordercolor: 邊框顏色
        //  borderwidth: 邊框顏色
        //  bordershape: 邊框形狀 =0表示正方形;=1表示圓角方形;=2表示圓形
        //  dotradius: 刻度距離表盤中心半徑
        //  adotwidth: 0369點刻度大小
        //  adotcolor: 0369點刻度顏色
        //  bdotwidth: 其他點刻度大小
        //  bdotcolor: 其他點刻度顏色
        //  hourwidth: 時針粗細
        //  hourcolor: 時針顏色
        //  minutewidth: 分針粗細
        //  minutecolor: 分針顏色
        //  secondwidth: 秒針粗細
        //  secondcolor: 秒針顏色
        [DllImport("LEDSender2010.dll")]
        priva

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • NanUI文檔目錄 "NanUI簡介" "開始使用NanUI" "打包並使用內嵌式的HTML/CSS/JS資源" "使用網頁來設計整個視窗" 如何實現C 與Javascript相互掉用 (待更新。。。) 如何處理NanUI中的下載過程 DonwloadHandler的使用 (待更新。。。) 如何處理 ...
  • 微信掃一掃並支付成功,聯繫QQ:770628656獲取所有源碼(超級代碼詳細註釋版本) ...
  • using System;using System.Collections.Generic;using System.IO;using System.Text;using System.Net;using System.Web; namespace Deerchao.Utility{ public ...
  • 1. 應用場景 Windows服務程式是Windows操作系統下能完成特定功能的可執行程式。它適合需要長時間運行的功能使用。 2. 創建Windows服務 創建完成後,看到如下圖所示: 將Service1的名稱改成你需要的名稱,例如“HelloService” 3. 創建服務安裝程式 修改安裝服務名 ...
  • 本示例學習使用await來獲取非同步操作結果時,同步上下文行為的結節,並如何在何時關閉同步上下文流。 預設情況下,await操作符會嘗試捕獲同步上下文,併在其中執行代碼。使用await操作符不會發生死鎖的情況,因為當等待結果時並不會阻塞UI線程。 ...
  • 迴圈輸郵索引值,使用for是沒有任何問題: class Bh { public string[] str { get; set; } public void TestFor() { for (int i = 0; i < str.Length; i++) { Console.WriteLine("i ...
  • 1. 前言 TypeConverter是XAML解釋器的幕後功臣,它做了大量工作,從WPF誕生以來,幾乎每一次XAML的運作都有它的參與。雖然UWP中TypeConverter已經徹徹底底退居幕後,連自定義TypeConverver都不可以,但瞭解TypeConverter的原理對理解XAML解析器 ...
  • 知道這幾 個正則表達式,能讓你少寫 1,000 行代碼,廢話不多說了,直接上代碼 正則表達式經常被用於欄位或任意字元串的校驗,如下麵這段校驗基本日期格式的JavaScript代碼:var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/; var ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...