我正在开发一个连接虚拟机的应用程序(使用Hyper-V)。 (我现在正在使用虚拟机进行开发,但最终产品将是物理串行连接机器。而不是VM' s) 我用这样的COM适配器创建了一个命名管道。
我能够与PuTTy建立联系。
在Hyper-V上运行CentOS Build
然后我写了一个简单的应用程序,用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 Needed this) 它没用。
根据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在物理机上。
有没有人知道如何让它发挥作用? 谢谢!
答案 0 :(得分:0)
您可以使用PLink自动化PuTTy连接。
我在另一个网站上看到这个答案。 使用Plink
这个解决方案有一个好处。 我将能够使用相同的工具/包装器自动化串行和SSH连接。 使用
等功能"Send_Command(string command);"
和
"Wait_For_Prompt(string prompt, int timeout);"
我在Stack Overflow上找到了这个,这帮助我完成了这个项目。 Answer
另外,PLink附带了Putty的完整安装,以及更有用的应用程序,如果您查看安装它的位置。
答案 1 :(得分:0)
Hyper-V 将客户机上的虚拟 COM 端口连接到主机上的 Win32 命名管道。在主机上,您应该连接到命名管道 (NamedPipeClientStream),而不是串行端口。