Найдите активные последовательные порты в подсистеме Windows для Linux (WSL) - PullRequest
0 голосов
/ 24 октября 2019

Как узнать, какой последовательный порт является активным в Подсистема Windows для Linux ? Я знаю о добавленной поддержке WSL для использования /dev/ttyS, но какие из этих портов активны?

Проблема IЯ пытаюсь решить, есть ли у меня устройство, которое продолжает переключать компорт, из-за внутренней микросхемы, которая самостоятельно подключается к новому порту. Я хочу создать bash-скрипт, который находит активные последовательные порты.

Обычные команды linux, такие как: dmesg | grep tty , не работают.

1 Ответ

0 голосов
/ 31 октября 2019

Создано решение, сочетающее в себе Powershell и WSL .

1.Создать скрипт Powershell, comports.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() 
    }
}

2.Создать bash-скрипт в WSL, comscript :

Предпочтительно в папке home/your-username/bin, что делает bash-скрипт глобально исполняемым.

#!/bin/bash

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

Теперь вы можете просто вызвать comscript ион выведет активный компорт, если активны более одного, он выдаст сообщение об ошибке.

Имейте в виду, что я отфильтровываю com-порт 3, так как он всегда есть и активен на моем компьютере.

...