C# 发送“;箭头键”;通过串行端口输入密钥

C# 发送“;箭头键”;通过串行端口输入密钥,c#,console,signals,keypress,C#,Console,Signals,Keypress,与问题通过串口发送“回车”键的方式相同 如何通过串行端口发送“箭头键”?最特别的是向上箭头键。光标键是键盘相对较新的功能。在选择ASCII码时,它们还不存在。这在很大程度上是基于当时使用的电传打字机的能力。与广泛使用的ASR-33一样,其键盘布局如下: 没有光标键。请注意,换行符当时是一个单独的键,ASCII中的“\n”。在Unix中更容易获取并影响行结束控制字符的选择。回车键相当于现代键盘上的回车键,ASCII格式为“\r” 因此,没有为光标键选择标准代码。你必须自己对它们进行编码。这是一个

与问题通过串口发送“回车”键的方式相同
如何通过串行端口发送“箭头键”?最特别的是向上箭头键。

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

没有光标键。请注意,换行符当时是一个单独的键,ASCII中的“\n”。在Unix中更容易获取并影响行结束控制字符的选择。回车键相当于现代键盘上的回车键,ASCII格式为“\r”


因此,没有为光标键选择标准代码。你必须自己对它们进行编码。这是一个共同的标准。模拟也很常见。

由于箭头键是扫描代码(ASCII表中未定义),因此有必要发送一个字节序列来表示箭头键(有关详细信息,请参阅)。不幸的是,这个序列可能在不同的平台和目标之间有所不同,所以您需要试验什么是适合您的目标的。
通过Windows上的串行控制台在Ubuntu 16.04目标上测试,向上箭头顺序为三个字节(0x1b、0x5b、0x41),或者在键盘上:“Esc”[“a”

“问题”?你在说什么问题?任何键都是由键代码定义的,串行通信只是发送字节。你需要知道的是,你要发送到的设备将解释为向上箭头命令的代码。因此,答案取决于你要发送到的设备。还有,勒内·沃尔弗林克说的-什么问题?发送键时通过串行端口的板键我使用WriteLine(“\n\r”)或serial.Write(新字节[]{13,10},0,2)来发送回车键。发送向上箭头键的等效字符串/字节[]是什么?+1。是的,好的旧VT100转义序列!
Esc[nA
=将光标向上移动n行。c#应具有键的预定义结构,这些键应在多个平台上兼容,而无需硬编码。