Если условия выписки выполнены, но не запущены - PullRequest
0 голосов
/ 10 мая 2018

В функции Main этого скрипта у меня есть два оператора if, каждый из которых имеет два условия, которые должны быть выполнены перед запуском. В первом операторе if оба условия выполняются, но код не выполняется. Ниже приведен код и вывод. Любое понимание было бы ценно!

$port= new-object system.io.ports.serialport com4
$port.open()
$gpi= 0
$toggle1 = 0
$toggle2 = 0

function read-com{
$port.write("gpio read 0`r")
$dump = $port.readline()
$script:gpi = $port.readline()
}
function low-com{
C:\Users\ccrcmh1djg\Videos\Reel\default.m4v
}
function high-com{
C:\Users\ccrcmh1djg\Videos\Reel\on-air.m4v
}
function main{
do{
        read-com
        sleep -m 500
        'read-com'
        $toggle1 
        $gpi
        if(($gpi -eq 0) -and ($toggle1 -eq 0)){
            $toggle1 = 1
            $toggle2 = 0
            low-com
           'low-com conditions met'
         }else{write-host 'low-com condition not met'}
         $toggle1
         $gpi
         if(($gpi -eq 1) -and ($toggle2 -eq 0)){
             $toggle1 = 0
             $toggle2 = 1
             high-com
             'high-com conditions met'
         }Else{Write-Host 'high-com condition not met'}
         'loop'

}while ($port.IsOpen)

}
main

Выход:

read-com
0
0
low-com condition not met
0
0
high-com condition not met
loop

Спасибо!

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

В этом случае $ port.ReadLine (), скорее всего, просто нужно немного очистить, как в @Adam в комментариях. Вы можете использовать следующую функцию, написанную другим пользователем SO, для отображения любых дополнительных символов, которые не видны в консоли.

https://stackoverflow.com/a/45356836/4868262

Загрузите функцию, затем напишите:

$gpi = $port.readline()
$gpi | Debug-String

Как только вы обнаружите проблему в каком-либо персонаже, попробуйте использовать -replace '' для ее устранения.

0 голосов
/ 10 мая 2018

$ gpi могло быть изменено строкой $ script: gpi = $ port.readline () в функции low-com.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...