关于编程控制另一个进程的问题

2017-08-12 05:23:04 +08:00
 starvedcat

先简单说一下背景

现在我想编程控制 3D 打印机(终极目的是,实现用户对 3D 打印机的远程控制),与 3D 打印机通信的程序是 Printrun ( https://github.com/kliment/Printrun

具体用的是 Printrun 给的预编译好的程序: http://kliment.kapsi.fi/printrun/ 中的“ Printrun-Win-Slic3r-03Feb2015 ”,解压之后得到一个命令行工具,pronsole.exe ,截图如下:

然后就可以在这个交互式的界面里控制打印机,比如 connect 命令连接打印机,move x 10 命令移动 X 轴等

遇到的问题

现在我想用 VB .NET 实现与 pronsole.exe 的交互

代码: https://gist.github.com/anonymous/845ef45673c7de9770f1b3fded930491

以上这段代码运行结果如下:

可以看到,对比直接从命令行运行,“ offline ”前后都多出了一些字符。。。

VS debug 模式下,查看该输出字符串的值,是这样的:

如果尝试输入“ help ”命令(即:在以上代码中,注释掉第 24 行,并取消第 25 行的注释),结果如下:

这几天一直被这个问题困扰,各种方案也尝试过很多了。比如转换输入的编码方式,指定进程的输入编码等等。因为基本属于无头苍蝇乱试,所以还是没有什么进展。上面的代码只是为了展示问题所需要的最小代码( minimal complete verifiable example )

关于 VB .NET ,这个是老师指定的,因为想把这个加到一个现成的 VB 程序里去

请高人指点一二,谢谢!

1321 次点击
所在节点    问与答
4 条回复
xupefei
2017-08-12 06:32:04 +08:00
这些乱码是命令行格式化代码,控制字形和颜色用的: https://en.wikipedia.org/wiki/ANSI_escape_code

把这些删掉应该就好了:
https://github.com/kliment/Printrun/blob/e002ba6db8de9b2dbec93316661fe6f9b0311c07/printrun/pronsole.py#L302-L306
starvedcat
2017-08-12 08:46:05 +08:00
@xupefei #1 高手!感谢
oott123
2017-08-12 09:21:37 +08:00
1 楼的解答完全正确,说一句题外话,vb.net 代码能加到 vb 程序里?
starvedcat
2017-08-12 09:49:41 +08:00
@oott123 #3 不太清楚,我还没见到那个 VB 项目

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/382345

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX