C#如何将COM端口更改为指定的端口

Posted

技术标签:

【中文标题】C#如何将COM端口更改为指定的端口【英文标题】:C# how to change a COM port to an specified one 【发布时间】:2012-01-10 14:58:53 【问题描述】:

我需要更改USB串口适配器的端口号,我有以下程序来找到它,现在我需要将其portName / COM Number更改为COM11。

我正是需要这个,但是通过 C# 代码:

我的电脑 -> 管理 -> 设备管理器 -> 端口 -> 通信端口 -> 端口设置 -> 高级 -> COM 端口号


        try
        
            ManagementObjectSearcher searcher =
                new ManagementObjectSearcher("root\\WMI",
                "SELECT * FROM MSSerial_PortName");

            foreach (ManagementObject queryObj in searcher.Get())
            
                //If the serial port's instance name contains USB 
                //it must be a USB to serial device
                if (queryObj["InstanceName"].ToString().Contains("USB"))
                
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("MSSerial_PortName instance");
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("InstanceName: 0", queryObj["InstanceName"]);
                    Console.WriteLine(queryObj["PortName"] + "is a USB to SERIAL adapter/converter");
                    string port = queryObj["PortName"].ToString();
                    SerialPort p = new SerialPort(port);
                    //p.PortName = "COM11";
                    return port ;
                
            

            throw new Exception(Messages.PINPAD_NOT_FOUND);
        

【问题讨论】:

如果您设置 p.PortName 已将其注释掉.. 您是否尝试取消注释并返回 p.PortName.. ?在你的方法里面还有什么返回类型你能显示完整的方法吗? 当做这样的事情时,例如改变打印机端口有一个 .Put();方法你能检查一下是否有 p.Put();在返回港口之前 是的,p.PortName = "COM11" 不起作用,我把它放在那里是为了表明需要。 SerialPort 没有 .Put() 之类的方法,我需要一些 codo 来更新其设置 这不是一个选项,驱动程序选择端口号。一些驱动程序有一个属性页,可以让您选择一个数字,这在 USB 驱动程序中并不常见。您需要以相反的方式执行此操作,为您的程序提供配置,以便用户可以选择正确的端口号。 很高兴知道@Hans .. 有时 WMI 很棒,有时在执行诸如设置属性而不是获取属性之类的事情时可能会很痛苦.. GRRRR .. 【参考方案1】:

我认为 wmi 中不支持 com 端口重命名。从技术角度来看,您指向的配置更改了附加到驱动程序的 symbolinc 链接。我认为这是可行的,但你必须在 DDK 中查看它(也许在 WDM 中)。

据我所知,您的程序的正确解决方案是使其能够适应分配给硬件的任何名称。您应该将正确的端口名称存储在配置文件或注册表中的某个位置,并允许用户自定义它。

【讨论】:

好吧,这似乎是不可能的。我不得不与与我的软件合作的其他公司交谈,以消除对串行端口映射的要求。他们需要一段时间才能做到,但就是这样

以上是关于C#如何将COM端口更改为指定的端口的主要内容,如果未能解决你的问题,请参考以下文章

如何将反应中的默认端口从 3000 更改为另一个端口?

将默认端口(80)更改为 8080 时如何设置虚拟主机?

spring security 重定向登录时端口 8080 来自哪里?如何将其更改为使用端口 443?

如何将mysql的默认端口从3306更改为3360

Rails 3 + Passenger + Apache:如何将 SSL 的端口从 443 更改为 8443?

我可以将默认端口从 8080 更改为 Vue 中的其他端口吗?