2015-03-27 6 views
0

У меня проблема, когда я использовал планировщик задач Windows для запуска сценария autoit (.au3) для отправки интерактивных команд во вторую программу PuTTY, которая используется для отправки команд через последовательный порт (RS232) к электрическому оборудованию, которое принимает команды замазки.Как написать сценарий AutoIt на заблокированном терминале

Проблема здесь, поскольку я читал из других потоков, заключается в том, что команды GUI не запускаются, когда терминал заблокирован, и из-за соображений безопасности я не могу запускать его во все время.

Есть ли способ заставить шпатлевку работать без использования команд «клавиатура/мышь»? вот действительно простой скрипт.

run ("C:\Users\Public\Downloads\putty\putty.exe") 
sleep(1000) 
send ("{TAB 4}")//all these commands select the saved configuration for the com port, and open the PuTTY console 
send ("{DOWN 2}") 
send ("{TAB 1}") 
send ("{ENTER}") 
sleep(600) 
send ("{TAB 4}") 
send ("{ENTER}") 
sleep(600) 
send("{ASC 83}")//this sends the five characters "START" while in the PuTTY console 
send("{ASC 84}") 
send("{ASC 65}") 
send("{ASC 82}") 
send("{ASC 84}") 
send("{ENTER}") 
sleep(3000) 
winclose("COM3 - PuTTY")//closes PuTTY.exe 
sleep(2000) 
send("{ENTER}") 

Я попытался использовать ControlSend, но это вообще не работает.

Это команда, я использовал, чтобы получить планировщик задач для запуска putty.exe вместо открытия его:

cmd /c start "" "C:\Users\Bobby\Documents\runputty.au3" 
+0

Вместо того, чтобы использовать AutoIt для автоматизации PuTTY, считаете ли вы, что просто пишите программу для непосредственного общения через RS232? Такое консольное приложение будет работать даже при заблокированном компьютере. –

+0

Я пробовал, но пока я успешно открыл порт и отправил команду, программа потерпела неудачу, потому что я понятия не имею, как это сделать с помощью устройства «handshaking/flow control», поэтому я прибегал к использованию сторонних прогов –

+0

I Тогда боюсь, что вы, вероятно, застряли. Возможно, вам придется сделать это программно в конце концов, и просто узнайте об установлении квитирования. –

ответ

0

Я использую этот код (в 1-й раз вы должны войти в ручную и подтвердить отпечатки пальцев от сервера):

Func _runSshCommand($plinkUser, $plinkHost, $command, $password = "", $timeoutInMs = 0) 
$plinkFile = "c:\putty\plink.exe" 
$runThis = @ComSpec & " /c " & $plinkFile & " -batch " & $plinkUser & "@" & $plinkHost 
If $password <> "" Then $runThis &= " -pw " & $password 
$runThis &= " " & $command 
$plinkHandle = Run($runThis, "", @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD + $STDERR_CHILD) 
$plinkFeedback = "" 
$waitForOutputStartTime = _Timer_Init() 
Do 
    Sleep(10) 
    $plinkFeedback &= StdoutRead($plinkHandle) 
    $stdoutReadError = @error 
Until $stdoutReadError Or ($timeoutInMs And _Timer_Diff($waitForOutputStartTime) > $timeoutInMs) 
If ProcessExists("plink.exe") Then ProcessClose("plink.exe") 
If $stdoutReadError <> 0 Then Return $plinkFeedback 
EndFunc ;==>_runSshCommand 

Для получения более подробной информации посетите эту тему AutoIt Plink Wrapper. Имейте славный день! :)

0

Я решил свою проблему: после того, как я переустановил многоплотный драйвер последовательного порта, а затем переконфигурировал инструкцию controlsend, он сработал.