Делай пока в Powershell

Я подключаюсь через последовательный порт с PowerShell к устройству, и я пытаюсь изменить одно значение, пока другое значение не станет равным 0. Я использую Do-Пока, но он просто работает бесконечно с изменением первого значения снова и снова. То, что мне нужно сделать, это сначала я проверяю Value2 ака $line1, если это не 0, мне нужно проверить Value1 ака V45, добавьте 10 к нему, отправьте команду, чтобы изменить его и перезагрузите устройство, затем проверьте снова Value2 и если это не 0 повторить. Я старался Do-While($line -ne 0), Do-Until($line -le 0) с тем же результатом. Когда я пытался Do-Until($line -ne 0) он остановился после первого запуска с изменением Value1 (выше) и Value2(ниже). Я запускал сценарий 3-4 раза, и в итоге Value2 получил 0. Я предполагаю, что у меня что-то не так в операторе "До (пока)", и я его не вижу.

$port.WriteLine("R?`r")
$string1 = $port.ReadLine()
$line1 = [int]($string1 -split ",")[11]
if($line1 -ne 0){
    do{
        $port.WriteLine("V45?`r")
        $v45 = [int]$port.ReadLine()+10
        $port.WriteLine("V45,${v45}`r")
        $port.ReadLine()
        $port.WriteLine("RST`r")
        $port.ReadLine()
        $port.ReadLine()
        $port.WriteLine("R?`r")
        $string = $port.ReadLine()
        $line = [int]($string1 -split ",")[11]
    }until($line -eq 0)
}

1 ответ

Решение

Вы читаете $string но потом разбор $string1, переименовывать $string1 в $string на второй линии.

$string = $port.ReadLine() $line = [int]($string1 -split ",")[11] #Change this line to $string

Вы бы выиграли от именования ваших переменных более осмысленным образом.

Другие вопросы по тегам