V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
starvedcat
V2EX  ›  问与答

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

  •  
  •   starvedcat · 2017-08-12 05:23:04 +08:00 · 1380 次点击
    这是一个创建于 2664 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先简单说一下背景

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

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

    pronsole.exe

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

    遇到的问题

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

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

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

    consoleapp1

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

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

    debug

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

    consoleapp2

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

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

    请高人指点一二,谢谢!

    4 条回复    2017-08-12 09:49:41 +08:00
    xupefei
        1
    xupefei  
       2017-08-12 06:32:04 +08:00   ❤️ 2
    这些乱码是命令行格式化代码,控制字形和颜色用的: https://en.wikipedia.org/wiki/ANSI_escape_code

    把这些删掉应该就好了:
    https://github.com/kliment/Printrun/blob/e002ba6db8de9b2dbec93316661fe6f9b0311c07/printrun/pronsole.py#L302-L306
    starvedcat
        2
    starvedcat  
    OP
       2017-08-12 08:46:05 +08:00
    @xupefei #1 高手!感谢
    oott123
        3
    oott123  
       2017-08-12 09:21:37 +08:00 via Android
    1 楼的解答完全正确,说一句题外话,vb.net 代码能加到 vb 程序里?
    starvedcat
        4
    starvedcat  
    OP
       2017-08-12 09:49:41 +08:00
    @oott123 #3 不太清楚,我还没见到那个 VB 项目
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3520 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 04:52 · PVG 12:52 · LAX 20:52 · JFK 23:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.