【问题标题】:Sending “ARROW KEY” key through serial port通过串口发送“ARROW KEY”键
【发布时间】:2012-11-21 00:04:10
【问题描述】:

同问题Sending “ENTER” key through serial port 如何通过串口发送“箭头键”?尤其是向上箭头键。

【问题讨论】:

  • “问题”?你在说什么问题?
  • 任何键都由键码定义,串行通信只是发送字节。您需要知道的是您发送到的设备将解释为向上箭头命令的代码。因此,答案取决于您要发送到的设备。另外,René Wolferink 说了什么 - 什么问题?
  • 当通过串口发送键盘键时,我使用 WriteLine("\n\r") 或 serial.Write(new byte[]{13,10}, 0, 2) 例如发送回车键。发送向上箭头键的等效字符串/字节 [] 是什么?

标签: c# console signals keypress


【解决方案1】:

光标键是键盘的一项相对较新的功能。在选择 ASCII 码时它们还不存在。这主要基于当时使用的电传打字机的功能。与广泛使用的 ASR-33 一样,它的键盘布局如下所示:

没有光标键。请注意,换行符当时是一个单独的键,ASCII 中的 '\n'。更容易获得和影响 Unix 中行尾控制字符的选择。 Return 键相当于现代键盘上的 Enter 键,即 ASCII 中的“\r”。

因此没有标准代码可供光标键选择。您必须自己对它们进行编码。 ANSI escape codes 是一个通用标准。 DEC VT-52 and VT-100 的模拟也很常见。

【讨论】:

  • +1。是的,老式的 VT100 转义序列! Esc[nA = 将光标向上移动 n 行。
【解决方案2】:

由于 ARROW 键是扫描码(ASCII 表中未定义),因此需要发送一个字节序列来表示箭头键(详见https://en.wikipedia.org/wiki/ANSI_escape_code)。不幸的是,这个顺序在不同的平台和目标之间可能会有所不同,因此您需要试验什么是适合您的目标的。 从 Windows 上的串行控制台在 Ubuntu 16.04 目标上进行测试,ARROW UP 序列为三个字节(0x1b、0x5b、0x41),或在键盘上:'Esc''[''A'

【讨论】:

  • c# 应该有预定义的键结构,应该在多个平台上兼容,而不需要硬编码。
猜你喜欢
  • 2011-06-15
  • 1970-01-01
  • 2017-01-31
  • 2013-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
相关资源
最近更新 更多