starvedcat
V2EX  ›  问与答

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

  •  
  •   starvedcat · Aug 12, 2017 · 1813 views
    This topic created in 3289 days ago, the information mentioned may be changed or developed.

    先简单说一下背景

    现在我想编程控制 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 replies    2017-08-12 09:49:41 +08:00
    xupefei
        1
    xupefei  
       Aug 12, 2017   ❤️ 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
       Aug 12, 2017
    @xupefei #1 高手!感谢
    oott123
        3
    oott123  
       Aug 12, 2017 via Android
    1 楼的解答完全正确,说一句题外话,vb.net 代码能加到 vb 程序里?
    starvedcat
        4
    starvedcat  
    OP
       Aug 12, 2017
    @oott123 #3 不太清楚,我还没见到那个 VB 项目
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1403 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 16:56 · PVG 00:56 · LAX 09:56 · JFK 12:56
    ♥ Do have faith in what you're doing.