我该如何在Windows Subsystem for Linux中找到活动的串口?我知道WSL中支持使用/dev/ttyS,但这些端口中哪些是活动的呢?我正在尝试解决的问题是,我的设备不断切换端口,因为内部芯片会重新连接到一个新端口。我想创建一个bash脚本来查找活动的串口。像
dmesg | grep tty
这样的常规Linux命令无法正常工作。请注意保留HTML标签。dmesg | grep tty
这样的常规Linux命令无法正常工作。请注意保留HTML标签。$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()
}
}
最好将其放在home/your-username/bin
文件夹中,使得该bash脚本可以全局执行。
#!/bin/bash
echo "Active com-port"
powershell.exe -File "c:\your-folder\comports.ps1"
dmesg | grep tty
命令可以正常工作。ADMIN PS> wsl --update
PS> winget install --interactive --exact dorssel.usbipd-win
WSL> sudo apt install linux-tools-5.4.0-77-generic hwdata
WSL> sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20
# Open a new ADMIN PS
PS> usbipd wsl list
PS> usbipd wsl attach --busid <busid>
WSL> lsusb
WSL> ll /dev/ttyUSB*
PS> usbipd wsl detach --busid <busid> # when you're done with your device
if ($COMportList.Count -cgt 2) {
块,因为我认为6个端口不算“太多”。Write-Output "/dev/ttyS$portNr"
给出相应的/dev/ttyS*
端口。