现在的位置: 首页 > 专题 > 机器人 > Robotics Studio > 设计中心 > 文档 > 专题 > 机器人 > 正文

Robotics Studio学习教程:第三十天——用自己的程序启动DSS环境

2014年05月19日 Robotics Studio, 文档, 机器人 ⁄ 转载:原文链接 ⁄ 共 2627字 ⁄ 字号 评论 2 条 ⁄ 阅读 1,957 次
Robotics Studio学习教程

Robotics Studio学习教程

继之前分享的一篇《Robotics Studio学习教程:第二十九天——使用XSLT来显示DDS Service State》, 我们将继续分享下一篇《Robotics Studio学习教程:第三十天——用自己的程序启动DSS环境》,这也是整个系列的最后一篇。

好吧,让我继续开始我们学习Visual Programming Language,以及使用Robotics Studio学习开发机器人应用的道路吧。

 

[Robotics Studio] 靠自己的程序启动 DSS 环境-- Day30

 

一般而言我们都是开发 DSS Service, 然后透过  DSSHost.exe 执行, 或是撰写 VPL, 透过 VplHost.exe 执行.

但是现在我要展示如何撰写一个独立的执行档自己成为 DSS Host, 然后启动 DSS Service.

所以, 首先, 打开 VS2008, 新增一个 Windows Form 应用程序项目 (.NET Framework 要选 3.5), 名称为 mydsshost:

clip_image002

接下来加入 .NET 参考: Microsoft.Ccr.Core, Microsoft.Dss.Environment, Microsoft.Dss.Runtime

using 加上:

using Microsoft.Dss.Hosting;

using Microsoft.Dss.Core;

然后在 Form 的属性 Load , 以及 FormClosed 分别加上如下的程序代码:

  1.   private void Form1_Load(object sender, EventArgs e)
  2.   {
  3.       DssEnvironment.Initialize(new DssRuntimeConfiguration()
  4.       {
  5.           PublicHttpPort = 50000,
  6.           PublicTcpPort = 50001,
  7.           SecuritySettings = @"store\SecuritySettings.xml",
  8.       }, null);
  9.   }

  10.   private void Form1_FormClosed(object sender, FormClosedEventArgs e)
  11.   {
  12.       DssEnvironment.Shutdown();
  13.   }

 

这样就可以执行程序了, 执行起来你当然看不到任何东西, 但是可以透过 Browser 连到 http://localhost:50000 就会看到熟悉的画面了.

以上, 就是微软官方文件的内容, 接下来要介绍的是类似以前我很爱看的 undocument windows 的内容, 所谓 undocument windows, 就是写一些官方说明没写的东西...

至于为什么没写, 可能有很多原因, 可能是因为工程师偷懒, 高层没抓到, 或可能是高层命令不能让官方以外的人写出足以威胁官方生存的...(不能再写更多离题的事情!)

话说我照着官方文件写出了上面的东西, 接下来我当然想要呼叫自己写的 DSS Service 啰, 这样还需要参考 .NET Microsoft.Dss.Base,然后放一个 button 到 form 上, button click 的程序如下:

  1.   private void button1_Click(object sender, EventArgs e)
  2.   {
  3.       DssEnvironment.CreateService("http://schemas.tempuri.org/2009/01/mazegenerator.html");
  4.   }

 

然后我就满心期待写完三十篇文章等着领奖品了... 等到我按下 button 期待很久, 啥都没有发生啊!!!

如果透过 browser 去 http://localhost:50000/controlpanel 看, 只有看到 System DSS Service , 其他都没有...

如果把自己写的 DSS Service dll 复制到 mydsshost 的执行目录, 也是没有用. 最后终于在睡觉的时候, 梦到周公告诉我答案 (所以以下答案由周公大人提供, 有问题请找他.)

DssRunTimeConfiguration 有参数 HostRootDir 可以设定, 官方说法:http://msdn.microsoft.com/en-us/library/microsoft.dss.core.dssruntimeconfiguration.hostrootdir.aspx

周公说法 : 当 DssEnvironment.Initialize 传 DssRuntimeconfiguration 时, 如果你不给 HostRootDir , 表示 HostRootDir 就是你的程序执行的目录.

而你也当然可以自己指定 HostRootDir , 但重点是 : HostRootDir 下面的 bin 目录就是存放 DSS Service dll 的地方.

所以你可以指定为 Robotics Studio Express 的安装目录, 这样你就可以 Create 任何之前的 DSS Service, 或是把自己写的 dll 复制到 mydsshost 执行目录下的 bin 目录 , 这样你就可以 create 该 dll 所提供的 DSS Service.

要注意, 如果该 DSS Service 有 partner dss service, 你也要把相关的 dll 都复制过去,还有, 如果 dll 有用 store 底下的东西 (比如说 store 下面的 media 目录),你也要把那些档案一并复制到正确的相对目录 (store/media) 才行.

另外, SecuritySettings 是指你可以给一个相对于 HostRootDir 的文件名, 档案可以不必存在 (表示没有任何设定), 但是若你指定了文件名, 表示你启用 Security 设定, 之后若 security 有任何设定改变, 会存在那个档案当中, 若你没有指定文件名, 表示你不启用 Security 设定, 之后这个 DSS Host 没办法改变或使用 Security 设定.

(以上是官方说法 "Key File" 所展开的涵义, 难道官方工程师认为人人都有周公帮忙吗?!)

以上, 谢谢周公大力协助, 希望我下篇文章可以介绍如何操控实体机器人组件给大家看.

 

整个Robotics Studio学习30天教程分享完毕,感谢Laneser

fgx

分享到:

Wopus问答

  1. 连载完成了,好像看得人不多啊,呵呵还是祝贺一下的

×