Блокировка компьютера с внешней кнопки

alhaos
Offline
Зарегистрирован: 27.12.2016

Сделал эту схему так сказать for fun может кому понадобиться практическое применение.

Скетч
const int buttonPin = 10;
const int ledPin =  13;
int buttonState;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH);
    Serial.println(HIGH);
  } else {
    digitalWrite(ledPin, LOW);
    Serial.println(LOW);
  }
}

Скрипт на Powershell который на компьютере ждет сигнала по порту, и блокирует компьютер, номер порта надо поменять на свой.

while ($true) {
$DelaySeconds=60  
$PORT='COM13'  
$BAUDRATE=9600  
$Parity=[System.IO.Ports.Parity]::None 
$dataBits=8  
$StopBits=[System.IO.Ports.StopBits]::one 
 
  
$period = [timespan]::FromSeconds($DelaySeconds)  
$port= new-Object System.IO.Ports.SerialPort $PORT,$BAUDRATE,$Parity,$dataBits,$StopBits  
$port.Open()  
  
$StartTime = Get-Date  

while ((Get-Date) - $StartTime -lt $period) {   
  $message=$port.ReadLine()  
  if ($message[0] -eq '1')
  {
	& 'rundll32.exe' 'user32.dll,LockWorkStation'
  }
}  
$port.Close()  
}

 

tekagi
tekagi аватар
Offline
Зарегистрирован: 07.10.2016

Не лучше ли эмулировать PS/2 или USB и просто посылать WinKey+L ? Так можно обойтись без скрипта, да и работать будет на любом компе без драйверов USB2COM. Да и комбинаций можно добавить для расширения функционала.

 

alhaos
Offline
Зарегистрирован: 27.12.2016

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