模块开发入门教程
置顶 推荐 官方

SDK客户端所有组件源码都是开放的,所以二次开发能实现任何您需要的功能,包括界面修改、软件功能、模块开发、授权系统开发等。

如果您不会编程,没有C#编程基础,您可以联系官方技术支持,我们将根据您的需求为您量身定制任意功能。

如果您有C#编程基础,按照以下步骤,您可以快速获取官方提供的SDK源代码并进行二次开发和使用,也可以基于SDK的模块系统制作自己的独立模块,同时开发过程中遇到任何问题都可以随时联系我们或在讨论组发帖快速获取在线技术支持服务。

本文主要讲解如何快速建立自定义功能模块,该方法无需修改编译SDK即可创建可以被SDK模块系统加载并运行的第三方独立模块。模块完整项目可从底部附件中下载。

第一步:配置开发环境。

操作系统要求:windows7 64位以上

SDK模块需要C#编程语言编写,该编程语言适合新手入门。模块的编写和编译需要在Visual Studio中进行,推荐使用Visual Studio 2017及以上版本。 Visual Studio最新版本可以直接从 https://visualstudio.microsoft.com/zh-hans/downloads/ 下载,建议下载免费社区版,免费试用30天,注册微软账号即可永久免费使用。 TIM截图20190527170044.jpg

下载完成后运行安装,选择安装.NET桌面开发组件和NET Framework 4.6.1 目标包,勾选完成后点击安装即可。 TIM截图20190527170415.jpg TIM截图20190527170453.jpg

安装完成后,运行Visual Studio,点击文件》》新建项目,若有以下选项即为组件安装成功,否则安装失败需要重新运行安装包并勾选需要安装的组件。 TIM截图20190527170759.jpg

第二步:安装SDK并接入测试设备。

参考 快速下载安装、接入设备教程 下载SDK主程序,申请免费授权码,架设节点服务器,接入设备。

第三步:创建模块项目。

打开Visual Studio,点击文件》》新建项目,新建一个C#类库。 TIM截图20190527172342.jpg

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

在项目上鼠标右键》》添加》》引用。 TIM截图20190527172513.jpg

点击浏览,选择SDK主程序目录中的“Xky.Core.dll”。 TIM截图20190527172634.jpg 然后点击添加》》确定,将“Xky.Core.dll”引用到项目中。

第四步:编写模块代码。

上面的步骤只是新建了一个普通的C#类库,继承“Xky.Core.dll”中的的“XModule”类,实现其中成员才可以被SDK主程序加载和调用。 TIM截图20190527173433.jpg

修改代码,继成XModule,根据提示实现其所有成员,最终代码如下:

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

namespace TestModule
{
    public class Test : Xky.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("提示内容");
        }
    }
}

由于模块需要设置图标,准备一张正方形(推荐尺寸128*128像素)jpg或png图片,鼠标右键复制然后在项目上右键粘贴。 TIM截图20190527173651.jpg 在图片上右键》》属性,将生成操作改为“嵌入的资源”。 TIM截图20190527173718.jpg 修改模块代码,读取该图片作为模块图标。

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

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

        public override byte[] Icon()
        {
            Assembly myAssembly = Assembly.GetExecutingAssembly();
            //注意:路径参数必须和当前模块命名空间一致
            Stream myStream = myAssembly.GetManifestResourceStream("TestModule.icon.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("提示内容");
        }
    }
}


第五步:生成并运行模块。

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

注意:项目属性的程序集名称、默认命名空间和模块代码中的命名空间、加载图标的路径参数必须一致,否则模块将无法被SDK加载。

在项目上鼠标右键》》重新生成,生成完毕后即可在项目的bin>>debug目录下看到生成出来的模块dll文件。 TIM截图20190527174236.jpg

回到SDK主程序目录的Modules文件夹中,新建一个分组文件夹,例如“我的模块”。 TIM截图20190527174359.jpg 进入“我的模块”文件夹,再次建立一个文件夹用来存放模块dll,例如“测试模块”,并将生成的模块dll文件复制到该目录中。

TIM截图20190527174526.jpg

完成以上操作后,重新启动SDK主程序,即可在右侧的模块面板中看到自己的分组和模块,双击或点击运行即可运行该模块。 TIM截图20190527174632.jpg

如果不想每次修改模块代码重新生成以后都要手动复制到SDK模块目录中,我们可以为模块项目设置生成事件,每次生成成功以后自动复制模块文件到SDK模块目录中。 在模块项目上右键》》属性》》生成事件,设置后期生成事件命令,格式为“xcopy $(TargetPath) 模块文件存放的目录 /y”(注意空格)

xcopy $(TargetPath) G:\xky\Xky.Platform\bin\Release\Modules\我的模块\测试模块\ /y

TIM截图20190604151358.jpg

这样设置以后,每次修改模块代码,只需要在项目上鼠标右键》》重新生成,然后重启SDK即可直接加载最新模块。

简单模块代码全部写在Start()方法中,更多API接口和示例可参考 侠客云SDK开发文档 ,更多模块示例或带界面交互功能的模块可参考SDK模块示例源码

回帖(0)
发表