通过串口发送“ENTER”键
嗨,我想发送一些命令到我的设备,通过串口连接。 怎么发送?
例如,我在谷歌搜索中找到了这个,但对我来说这没用。
Control + E是5的键盘快捷键,因此:
serial.Write(new byte[]{ 5 }, 0, 1);
输入或换行的微软版本是rn
,它是hex的0x0d 0x0a
。
对历史课来说太多了。 当前的Windows系统仍然使用这些字符来表示行结束。 按Enter键时,Dos生成此代码。
关键代码有点不同。 从esc键开始是1. 输入是28。
来源: 来自www.comptechdoc.org的linux hlkeycodes
要发送回车键,您必须使用
serial.Write(new byte[]{13,10}, 0, 2);
假设您的Control + E语法正确。 输入键被解释并通常作为CR-LF
保存在文件中。 但是,根据您的设备,它可能只需要CR=13
或LF=10
。 您应该尝试使用设备的所有3种组合来查看它所期望的内容。
如果您要查找回车键的实际扫描代码 ,则在PC 102/104键盘上为“43”。 根据您使用的实际计算机,可能会有所不同。 例如,在Commodore 64上, Return键的扫描码是“1”,它在PC键盘上使用Enter 。
多谢你们。
这有效:
serial.Write("rn")
注意:如果你想通过串口发送命令,我使用下面的行为我工作。
serial.Write("your_commandrn");
以前的答案告诉你的是如何发送NEWLINE字符 – 这与“输入密钥”不同。 如果您要做的是实际向远程机器指示键盘上的“输入键”已被按下,这完全不同,并且可能无法实现,具体取决于您的操作系统和硬件。
这取决于您的设备的ENTER。 在Windows中它是CRLF(13然后是10),Linux是LF(只有10.)这只是你的设备所期望的问题,因为它无法看到ENTER,只是“字节10,字节13,字节无论如何…… “。
您需要发送命令CR(回车)和LF(换行,或换行)。
这只是发送你的命令加上CR和LF,如下所示:
string command = "myCommand"; port.write(string.format("{0}rn", command));
r n = CR + LF – >在Windows中用作换行符
我在字符串中添加“ r n”并调用Write()方法,它适用于我。 例如,
serial.Write("abcdrn");
要发送回车键,您必须使用SerialPort.NewLine属性 – 表示行尾的值
_serialPort = new SerialPort(); // ... this COM port parameters _serialPort.NewLine = "r"; // "r" - CR (0x0D); "rn" - CRLF (0x0D 0x0A) try { _serialPort.Open(); } catch (Exception ex) { Console.Write(ex.Message); return; } _serialPort.WriteLine("Send string"); // Writes `Send string` string and the `NewLine` value to serial port // or _serialPort.WriteLine((char)2 + "VWD:040" + (char)3); // Writes `VWD:040 ` string and the `NewLine` value to serial port
有关使用串行端口的完整示例,请参见此处 。
上述就是C#学习教程:通过串口发送“ENTER”键分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/954009.html