在 Windows 子系统中查找 Linux 的活动串行端口 (WSL)

Find active serial ports in Windows Subsystem for Linux (WSL)

如何找到 串行端口 Windows 子系统中 Linux 的活动端口?我知道 added support in WSL 用于使用 /dev/ttyS,但这些端口中的哪些端口处于活动状态?

我要解决的问题是我有一个设备可以保持切换正常,因为内部芯片会在新端口上自行重新连接。我想创建一个 bash 脚本来查找活动的串行端口。

像这样的常规 linux 命令: dmesg | grep tty 不起作用。

我创建了一个结合了 PowershellWSL[ 的解决方案=40=].

1.Create 一个 Powershell 脚本, 舒适。ps1:

$DeadComport = 3
$COMportList = [System.IO.Ports.SerialPort]::getportnames() 

if ($COMportList.Count -cgt 2) {
    Write-Output "Too many com-ports connnected! " 
    Write-Host -NoNewline "Com-ports found:" $COMportList.Count
   
}else{
     ForEach ($COMport in $COMportList) { 
        $temp = new-object System.IO.Ports.SerialPort $COMport 
        $portNr = $temp.PortName.SubString(3)
        if ($portNr -eq $DeadComport){
            continue   
        }
        Write-Output $portNr
        $temp.Dispose() 
    }
}

- 您可以在 PowerShell ISE 中调试此代码并根据您的喜好进行调整。


2.Create WSL 中的 bash 脚本, comscript.sh:

最好在 home/your-username/bin 文件夹中,这使得 bash-脚本全局可执行。

#!/bin/bash

echo "Active com-port"
powershell.exe -File "c:\your-folder\comports.ps1" 

现在你可以调用comscript.sh它会输出活动的comport,如果找到了不止一个设备它将抛出一条错误消息。

请注意,我正在过滤掉 com-port 3,因为它在我的计算机上一直存在并处于活动状态。