powershell脚本连续读取串口数据

Reading Serial port data continuously in powershell script

我正在尝试编写一个 powershell 脚本,向串行设备发送命令,然后继续读取来自该设备的数据。

[System.IO.Ports.SerialPort]::GetPortNames()
Write-Host "Select Serial Port"
$portName = Read-Host -Prompt 'Input Serial Device Name'
Write-Host "Using $portName..."

$port= new-Object System.IO.Ports.SerialPort $portName, 115200, None, 8, one
$port.ReadTimeout = 1000
$port.Open()

$port.WriteLine("start\n\r")
Start-Sleep -Milliseconds 1000
while ($x = $port.ReadExisting())
{
    Write-Host $x
    Start-Sleep -Milliseconds 300
}
$port.Close()

上面的脚本在从设备接收到第一行后立即退出。我尝试在 while 循环中更改睡眠时间,但行为是一样的。

在这里回答我自己的问题... 下面的代码让我可以从串口连续读取

Write-Host "Select Serial Port"
$portName = Read-Host -Prompt 'Input Serial Device Name'
Write-Host "Using $portName..."

$port= new-Object System.IO.Ports.SerialPort $portName, 115200, None, 8, one
$port.Open()

Write-Output $port

for(;;)
{
    if ($port.IsOpen)
    {
        $data = $port.ReadLine()
        Write-Output $data
    }
}