Блокировка компьютера с внешней кнопки
- Войдите на сайт для отправки комментариев
Втр, 27/12/2016 - 13:41
Сделал эту схему так сказать 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()
}
Не лучше ли эмулировать PS/2 или USB и просто посылать WinKey+L ? Так можно обойтись без скрипта, да и работать будет на любом компе без драйверов USB2COM. Да и комбинаций можно добавить для расширения функционала.
В данном случае скорее всего лучше, но можно развить данный пример дальше например запускать какю либо программу как рекацию на показания какого либо датчика. В случае с эмулящией клавиатуры можно будет слать только клавиши, а тут можно слать команды, а скрип или приложение будет на них соотвествюще реагировать.
Тема старая, но можно подробнее что нужно сделать?
Тема старая, но можно подробнее что нужно сделать?
так вроде все и так понятно
так вроде все и так понятно
[/quote]
Я с Powershell ещё дело не имел.
Я вставляю код в Powershell и у меня ошибки.
а виндовс случайно не 64 битная?
Да, 64
видимо:
&'rundll64.exe''user64.dll,LockWorkStation'И?Для кнопки на 6 пине замыкаемой на землю:const int buttonPin = 6; const int ledPin = 13; int buttonState = 1; void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT_PULLUP); Serial.begin(9600); } void loop() { buttonState = digitalRead(buttonPin); if (buttonState == LOW) { digitalWrite(ledPin, HIGH); Serial.println(HIGH); } else { digitalWrite(ledPin, LOW); Serial.println(LOW); } }