【问题标题】:How to handle incoming control characters in a custom terminal?如何处理自定义终端中的传入控制字符?
【发布时间】:2011-09-28 18:47:48
【问题描述】:

对于我的项目,我需要创建一个类似终端的自定义窗口并通过控制台端口连接到 Cisco 路由器。所以我继承了一个 TextBox 并在 WPF 中创建了一个自定义控件。我认为这就足够了;只是添加一些代码来实现我想要的额外功能。我一次发送一个字符并等待回复。但是后来我看到我的自定义终端不处理特殊字符,像 \n 这样的基本字符肯定可以识别,但其他所有字符都不能识别。我已经写了一个文本文件的回复,我看到我收到了很多特别的回复,但我不知道我应该如何反应。 也许有人知道或找到了一些链接,其中包含有关如何对特定控制字符做出反应的信息?我只找到了发送 here 的字符,但没有别的。我知道对于“BS”,我会在回车前删除一个字符,但是当我得到“ACK”或“DC1”时该怎么办?也许我应该跳过它们?有什么想法吗?


编辑: 除了一次发送一个字符外,我只会在发送 enter 或类似 ?或制表符。然后,当我收到响应时,它会与特殊字符混合以格式化文本,就像在 80x25 终端窗口中一样。我只想按它想要的方式显示它,但这意味着我需要知道当我得到特殊字符时如何反应我不需要显示它们,只是根据我的特殊字符格式化普通文本接收。当我得到BS时,我需要在运输前清除字符,当我得到DEL时,我需要在运输后清除字符。而且我想知道当我得到其他特殊字符时我需要做什么。我知道我可以通过艰难的方式做到这一点,只需将它们发送到工作终端,看看它会做什么,但这需要一段时间,所以我想知道是否有人知道答案。

【问题讨论】:

  • 当我这样写问题时,总会有人说“段落很好,使用它们”。现在没有人这样做了...除此之外,您如何处理捕获的字符,只是显示它们,还是更多?不知道角色的用途很难帮助您。
  • 我已经编辑了我的问题,也许现在我需要的更清楚了。
  • 如果我理解正确,那么您是单独发送每个字符,您在输入命中时(从最后一个/n)实际发送文本不是更容易吗?然后你可以分离字符串并查看所有特殊字符
  • 嗯,我的第一个方法是发送直到输入被击中,但现在我需要一次发送每个字符(这不是我的选择)。但仍然存在同样的问题,除了表格字母数字字符外,我得到了一些控制字符。所以在按下回车之前发送一个或整个命令没有太大区别。

标签: c# wpf terminal cisco control-characters


【解决方案1】:

好的,我在终端上玩得很辛苦,现在我知道我需要处理的唯一特殊字符是 BS(当然我只在 Cisco 路由器上尝试过,但我只需要在它们上工作),唯一的问题是您需要创建自己的代码以使其工作并根据 BS 计数将插入符号移动到正确的位置。并且更好地创建自己的变量来存储插入索引,因为 TextBox CaretIndex 只是不想像我预期的那样工作。据我所知,其余的特殊字符可以省略。而且效果很好。

【讨论】:

    猜你喜欢
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    相关资源
    最近更新 更多