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
}
}
我正在尝试编写一个 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
}
}