Делай пока в 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
Вы бы выиграли от именования ваших переменных более осмысленным образом.