嗨我想发送一些命令到我的设备,通过串口连接。如何发送?通过串口发送“ENTER”键
例如我发现这在谷歌搜索,但对我来说是没用的。
控制 + Ë是5键盘快捷键,所以:
serial.Write(new byte[]{ 5 }, 0, 1);
嗨我想发送一些命令到我的设备,通过串口连接。如何发送?通过串口发送“ENTER”键
例如我发现这在谷歌搜索,但对我来说是没用的。
控制 + Ë是5键盘快捷键,所以:
serial.Write(new byte[]{ 5 }, 0, 1);
微软版本的输入或新行是\r\n
这是在十六进制0x0d 0x0a
。
\r
是回车
在外壳或打印机这会给光标回行的开头。
\n
是换行
提出下面一行的光标,在一些壳这也把光标到下一行的开头。打印机只会简单地滚动纸张。
这么多的历史课。当前的Windows系统仍然使用这些字符来表示行结束。当按输入时,Dos生成此代码。
关键代码有点不同。与ESC键为1 输入开始是28
要发送回车键,你将不得不使用
serial.Write(new byte[]{13,10}, 0, 2);
假设你的语法控制 + E是正确的。回车键被解释并通常保存在一个文件中,如CR-LF
。但是,根据您的设备,它可能只需要CR=13
或LF=10
。您应该尝试使用您的设备的所有3种组合,以了解它的期望。
如果您正在查找输入键的实际scan code,则它在PC 102/104键盘上为“43”。根据您使用的实际计算机,可能会有所不同。例如在Commodore 64上返回密钥的扫描码为“1”,其具有等同用途在PC键盘上输入。
稍微纠正一下,我怀疑Write方法中的第三个参数可能是要写入的字节数。如果我的猜测是正确的,你应该把它从1改为2. – kaoD 2011-01-26 14:45:55
这取决于什么是您的设备输入。在Windows中,它是CRLF(13,然后是10),Linux是LF(只有10)。这只是你的设备期望的问题,因为它不能看到ENTER,只是“字节10,字节13,字节。 。“
什么以前的答案都告诉你是如何发送一个换行符 - 这是不一样的作为“输入密钥”。如果您想要做的是实际向远程机器指示键盘上的“输入密钥”已被按下,则完全不同,并且可能不可行,具体取决于您的操作系统和硬件。
谢谢你们。
这工作:
serial.Write("\r\n")
注:如果您想通过串口发送命令,我用下面的作品行我。
serial.Write("your_command\r\n");
您需要发送命令CR(回车)和LF(换行或换行)。
对于这仅仅是送您的命令加了CR和LF这样的:
string command = "myCommand";
port.write(string.format("{0}\r\n", command));
\ r \ n = CR + LF - >作为新行字符在Windows
我在字符串中添加“\ r \ n”,并调用Write()方法,它适用于我。例如,
serial.Write("abcd\r\n");
要发送回车键,你将不得不使用 SerialPort.NewLine物业 - 代表一行
_serialPort = new SerialPort();
// ... this COM port parameters
_serialPort.NewLine = "\r"; // "\r" - CR (0x0D); "\r\n" - 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 `<HEX 0x02>VWD:040<HEX 0x03>` string and the `NewLine` value to serial port
结束对于工作的完整示例值串口,见here。
我们需要对设备使用与您的计算机,反之亦然通信的协议的详细信息。 – Merijn 2011-01-26 14:42:50
serial.WriteLine(“”); – 2011-01-26 14:57:10