通过串口Serial.Write()发送功能键

时间:2013-11-22 11:07:58

标签: c# keyboard serial-port

任何人都可以指导我如何通过串口发送功能键(F1 - F11):

    string read_line;
    read_line = Console.ReadLine();
    SerPort.WriteLine(read_line);

1 个答案:

答案 0 :(得分:1)

没有标准方式将功能键发送到串行端口。您需要为键(字符串或字节)定义自己的id,根据用户当前的选择填写它并发送它。在串口的另一端,无论是监听/读取都应该知道如何处理输入 - 这将是您自己的通信接口。

功能键是特殊键,因此您需要使用Console.ReadKey代替 ReadLine 。可能的解决方案可能如下所示:

var key = Console.ReadKey(true);
string keyInfo = string.Empty;
byte keyInfoId = 0;
switch (key.Key)
{
    case ConsoleKey.F3: Console.WriteLine("F3 hit ..."); 
                        keyInfo = "F3"; 
                        keyInfoId = 0x3; 
                        break;
    case ConsoleKey.F5: Console.WriteLine("F5 hit ..."); 
                        keyInfo = "F5"; 
                        keyInfoId = 0x5; 
                        break;
    // ...
    default: Console.WriteLine("Not a function key"); break;
}
using (var serialPort = new SerialPort())
{
    serialPort.Open();
    serialPort.WriteLine(keyInfo);
    serialPort.Write(new byte[] { keyInfoId }, 0, 1);
    serialPort.Close();
}

您可以使用SerialPort.Write or SerialPort.WriteLine将信息发送到串口。