【问题标题】:Connecting C# SerialPort to Hyper-V named pipe (Just Like PuTTy can)将 C# SerialPort 连接到 Hyper-V 命名管道(就像 PuTTy 一样)
【发布时间】:2018-06-16 16:53:47
【问题描述】:

我正在开发一个连接到虚拟机的应用程序(使用 Hyper-V)。 (我现在使用虚拟机进行开发,但最终产品将是物理串行连接机器。不是虚拟机) 我已经用 COM 适配器像这样创建了一个命名管道。

我可以像这样连接 PuTTy。

在 Hyper-V 上运行 CentOS 构建

然后我编写了一个简单的应用程序来使用 C# 连接到它

my_Serial_Port = new SerialPort();
my_Serial_Port.PortName = @"\\.\pipe\ttyS0";
my_Serial_Port.BaudRate = m_BaudRate;
my_Serial_Port.DataBits = 8;
my_Serial_Port.Parity = Parity.None;
my_Serial_Port.StopBits = StopBits.One;
my_Serial_Port.Handshake = Handshake.None;
my_Serial_Port.DtrEnable = true;
my_Serial_Port.RtsEnable = true;
my_Serial_Port.WriteTimeout = 15000;
my_Serial_Port.ReadTimeout = 15000;

my_Serial_Port.ErrorReceived += my_Serial_Port_ErrorReceived;

问题是当我打开连接时,我会抛出这个异常。

稍作搜索,我找到了此信息,但没有解决方法。 msdn.microsoft.com/en-us/library/system.io.ports.serialport.portname 我也尝试以管理员身份运行我的应用程序(Putty 也需要这个) 它没有用。

根据 Oystein 的建议,我尝试了:

string[] ports = SerialPort.GetPortNames();

string result = "The following serial ports were found:" + Environment.NewLine;

// Display each port name to the console.
foreach (string port in ports)
{
    result += port + Environment.NewLine;
}

MessageBox.Show(result);

不幸的是 COM1 在物理机上。

有人知道我怎样才能让它工作吗? 谢谢!

【问题讨论】:

  • 尝试使用 SerialPort.GetPortNames (msdn.microsoft.com/en-us/library/…) 找出应用程序将串行端口视为什么格式。
  • 不幸的是它只列出了 COM1。
  • 我也在PowerShell PS C:\WINDOWS\system32> [System.IO.Directory]::GetFiles("\\.\\pipe\\") 中运行了命令并可以确认管道存在。

标签: c# linux serial-port hyper-v


【解决方案1】:

您可以使用 PLink 自动化 PuTTy 连接。

我在另一个网站上看到了这个答案。 使用Plink

这个解决方案有一个优点。 我将能够使用相同的工具/包装器自动化串行和 SSH 连接。 使用像

这样的函数
"Send_Command(string command);" 

"Wait_For_Prompt(string prompt, int timeout);"

我在 Stack Overflow 上找到了这个,它帮助我完成了这个项目。 Answer

此外,PLink 还附带完整的 Putty 安装程序,如果您查看安装位置,还会提供更多有用的应用程序。

  • pageant.exe
  • plink.exe
  • pscp.exe(windows到linux文件传输)
  • psftp.exe

【讨论】:

    【解决方案2】:

    Hyper-V 将客户机上的虚拟 COM 端口连接到主机上的 Win32 命名管道。在主机上,您应该连接到命名管道 (NamedPipeClientStream),而不是串行端口。

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多