Do Until em Powershell

1

Estou conectando via porta serial com powershell a um dispositivo e estou tentando alterar um valor até que outro valor chegue a 0. Estou usando Do-Until, mas ele é executado indefinidamente com o primeiro valor sendo alterado e acabou. O que eu preciso fazer é, inicialmente eu verificar Value2 aka $line1 , se não for 0, eu preciso verificar Value1 aka V45 , adicionar 10 a ele, enviar o comando para alterá-lo e redefinir o dispositivo , verifique novamente Value2 e, se não for 0, repita. Eu tentei Do-While($line -ne 0) , Do-Until($line -le 0) com o mesmo resultado. Quando tentei Do-Until($line -ne 0) , parou após a primeira execução, com Valor1 (superior) e Valor2 (inferior) alterados. Eu corri o script 3-4 vezes e, eventualmente, Value2 chegou a 0. Eu acho que tenho algo errado na declaração Do-Until (While) e não estou vendo isso.

$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)
}
    
por xlucian 22.03.2016 / 11:42

1 resposta

0

Você está lendo para $string , mas analisando $string1 . Renomeie $string1 para $string na segunda linha.

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

Você se beneficiaria ao nomear suas variáveis de uma maneira mais significativa.

    
por 22.03.2016 / 14:31