快速开始

项目说明

  • 开发语言: c#

  • 开发环境: 推荐使用Visual Studio 2017

  • 解决方案:

项目名称 说明
Xky.Platform 主项目,包含各种管理操作面板和交互功能,鼠标右键设为启动项目按F5即可运行
Xky.Core 核心项目,包含H264解码、API通讯和自定义用户控件
Xky.Socket WebSocket连接项目,基本上不需修改
Xmodule 所有的模块项目文件夹

模块开发

  模块是一个独立的项目,最终编译成一个可以被SDK直接加载并运行的DLL。可以结合模块API和自己的需求实现任意功能。

模块项目可以直接添加到SDK源码项目的Xmodule项目文件夹中,也可以单独放在任意位置。如果放在Xmodule项目文件夹中,可以实现模块代码的实时调试,如果放在其他位置则不能进行调试。

新建模块

第一步:在Xmodule项目文件夹上右键》》添加》》新建项目

新建模块项目

注意:项目类型必须选择 类库(.Net Framework), 框架必须选择 .Net Framework 4.6.1

点击添加后即可看到模块项目,实际上这时候该项目只是一个普通的C#类库,我们需要添加对Xky.Core的引用并继承里面的XModule类,实现成员才可以被SDK加载和调用。 添加对Xky.Core的引用

第二步:添加对Xky.Core的引用

添加对Xky.Core的引用 添加对Xky.Core的引用 添加对Xky.Core的引用

第三步:修改名称并实现所有成员

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Xky.XModule.Demo
{
    public class MyDemo : Core.XModule
    {
        public override string Description()
        {
            return "模块描述";
        }

        public override byte[] Icon()
        {
            throw new NotImplementedException();
        }

        public override bool IsBackground()
        {
            return true;
        }

        public override string Name()
        {
            return "模块名称";
        }

        public override void Start()
        {
            Device.ScriptEngine.Toast("在设备上弹出提示");
        }
    }
}

第三步:设置模块图标

将正方形的图片(JPG或PNG)拖动到模块项目上,在图片上右键》》属性》》将生成操作改为“嵌入的资源” 设置图标

然后修改模块代码中的Icon方法,最终代码如下

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace Xky.XModule.Demo
{
    public class MyDemo : Core.XModule
    {
        public override string Description()
        {
            return "模块描述";
        }

        public override byte[] Icon()
        {
            Assembly myAssembly = Assembly.GetExecutingAssembly();
            Stream myStream = myAssembly.GetManifestResourceStream("Xky.XModule.Demo.logo.png");
            if (myStream != null)
                       {
                           byte[] bytes = new byte[myStream.Length];
                           myStream.Read(bytes, 0, bytes.Length);
                           return bytes;
                       }
                       else
                       {
                           Console.WriteLine("模块图标路径有误,无法加载!");
                           return null;
                       }
        }

        public override bool IsBackground()
        {
            return true;
        }

        public override string Name()
        {
            return "模块名称";
        }

        public override void Start()
        {
            Device.ScriptEngine.Toast("在设备上弹出提示");
        }
    }
}

注意:GetManifestResourceStream的参数必须是当前模块所在的命名空间加图片文件名称

在项目上鼠标右键》》属性,将程序集名称和默认命名空间都设置为跟模块代码中的命名空间一样。 设置命名空间

第四步:设置生成事件,自动将模块复制到SDK的模块目录中

在模块项目上右键》》属性,将生成事件中的后期生成命令行设置为

xcopy $(TargetPath) $(SolutionDir)Xky.Platform\bin\$(ConfigurationName)\Modules\测试分组\测试模块\ /y

第五步:执行模块

在模块项目上右键》》生成,成功后即可在SDK的生成文件夹(Xky.Platform\bin\Debug\Modules)下的Modules目录中看到已经生成的模块DLL 执行模块

启动SDK主项目,即可看到成功加载出来的分组和新模块,双击或点击运行即可执行模块 执行模块

上次更新: 2019-5-23 17:36:33