USB WatchDog ARU-P2 (TOIC) Наш самый функциональный сторожевой таймер: встроенный язык программирования TOIC позволяет модифицировать логику под самые разные задачи. |
@echo off
SET portname=COM12
:loop
set /p x="\xc0\x00\x02\xff\xff\xff\xffUS\xc0" <nul >\\.\%portname%
ping -n 2 127.0.0.1 > nul
goto loop
#!/bin/bash
PORT=/dev/ttyACM0
while true
do
echo -n "\xc0\x00\x02\xff\xff\xff\xffUS\xc0" > $PORT
sleep 1
done
@echo off
SET hostname=ya.ru
SET portname=COM12
:loop
ping -n 1 -l 4 -w 1000 %hostname% >nul
if %errorlevel%==0 set /p x="\xc0\x00\x02\xff\xff\xff\xffUS\xc0" <nul >\\.\%portname%
ping -n 2 127.0.0.1 > nul
goto loop
#!/usr/bin/env bash
HOST="ya.ru"
PORT=/dev/ttyACM0
while true
do
if ping -c 1 $HOST; then
echo -n "\xc0\x00\x02\xff\xff\xff\xffUS\xc0" > $PORT
fi
sleep 3
done
#!/usr/bin/env bash
PORT=/dev/ttyACM0
PROCESS=crond
if [ ! -z "$1" ];then
PROCESS="$1"
echo "Monitor $PROCESS"
fi
while true; do
if pgrep "$PROCESS" > /dev/null; then
echo -n "\xc0\x00\x02\xff\xff\xff\xffUS\xc0" > $PORT
fi
sleep 3
done
#!/usr/bin/env bash
PORT=/dev/ttyACM0
URL=ya.ru
PROCESS=crond
while getopts ":ha:p:" opt; do
case ${opt} in
a)
URL=$OPTARG
;;
p)
PROCESS=$OPTARG
;;
h)
echo "Usage: $0 -a <url> -p <process>" 1>&2
exit 1
;;
\?)
echo "Invalid option: -$OPTARG" 1>&2
exit 1
;;
esac
done
echo "Ping $URL"
echo "Monitor $PROCESS"
while true; do
ping -n -c 1 -w 1 "$URL" 2>/dev/null 1>&2 && pgrep "$PROCESS" 2>/dev/null 1>&2 && echo -n "\xc0\x00\x02\xff\xff\xff\xffUS\xc0" > $PORT
sleep 3
done
from time import sleep
import serial
port = '/dev/tty.usbmodem14101'
ser = serial.Serial(port, timeout=0.05)
while True:
ser.write(b'\xc0\x00\x02\xff\xff\xff\xffTR\xc0')
ser_data = ser.readall()
if ser_data and ser_data.startswith(b'\xc0'):
k = int(ser_data[8:12].decode())/10
c = k - 273
print('Read from serial: {0}'.format(c))
sleep(3)
from time import sleep
from binascii import hexlify
import serial
port = '/dev/tty.usbmodem14101'
ser = serial.Serial(port, timeout=0.05)
while True:
ser.write(b'\xc0\x00\x02\xff\xff\xff\xffLJ\xc0')
ser_data = ser.readall()
if ser_data and ser_data.startswith(b'\xc0'):
print(hexlify(ser_data[8:-2]))
sleep(3)
//Main settings
#define TIMER_MAX 5500
#define TIMER_DELTA 50
#define RESET_TIME 200
#define POWER_OFF_T1 5000
#define POWER_OFF_DELAY 3000
#define POWER_OFF_T2 200
//hw defines
#define LED_PIN PF0
#define RESET_PIN PA3
#define POWER_PIN PA2
#define LOG_SIZE 50
//global
var led_on();
var counter;
var phase = 0;
var mem_start;
var mem_ptr = 0;
//functions
var led_off(){
LED_PIN.VALUE = 0;
}
var reset() {
RESET_PIN.VALUE = 0;
sleep(RESET_TIME);
}
var reboot() {
led_off();
POWER_PIN.VALUE = 0;
sleep(POWER_OFF_T1);
POWER_PIN.VALUE = 1;
sleep(POWER_OFF_DELAY);
POWER_PIN.VALUE = 0;
sleep(POWER_OFF_T2);
}
var logger() {
sprintf(mem_start + mem_ptr, "%p%c", TIME.EPOCH, phase);
mem_ptr = ((mem_ptr+5) % LOG_SIZE);
}
var reinit() {
RESET_PIN.VALUE = POWER_PIN.VALUE = 1;
counter = TIMER_MAX;
timer(TIMER_MAX, led_on);
}
var get_temp()
{
DS18.INIT = DS18_PORT_B|8;
if(DS18.INIT == 1)
{
DS18.VALUE = 1;
delay(100);
return DS18.VALUE;
}else
return 0;
}
var _msg() {
var c = stoi(&MSG.RX, 'c');
if (c == 'T') {
sprintf(&PC.TX, "T%p", get_temp());
} else
if (c == 'L') {
sprintf(&PC.TX, "L%r", mem_start, LOG_SIZE);
} else
{
sprintf(&PC.TX, "%c", c); // echo
switch (c) {
case 'U':
counter = TIMER_MAX;
break;
case 'S':
tstop(led_on);
break;
case 'R':
reset();
reinit();
break;
case 'P':
reboot();
//break;
case 'E':
reinit();
break;
default:
break;
}
}
}
var led_on() {
LED_PIN.VALUE = 1;
if (counter) {
__disable_irq();
counter -= TIMER_DELTA;
__enable_irq();
timer(TIMER_DELTA-1, led_off);
timer(counter, led_on);
}
else { //time is up
logger();
if (phase) {
reboot();
phase = 0;
}
else {
reset();
phase = 1;
}
reinit();
}
}
var main() {
mem_start = SYS.RAM;
LED_PIN.MODE = GPIO_MODE_OUTPUT|GPIO_OTYPE_PP|GPIO_INIT_LOW;
RESET_PIN.MODE = GPIO_MODE_OUTPUT|GPIO_OTYPE_PP|GPIO_INIT_HIGH;
POWER_PIN.MODE = GPIO_MODE_OUTPUT|GPIO_OTYPE_PP|GPIO_INIT_HIGH;
memset(mem_start, LOG_SIZE, 0);
SYS.WDG = 1;
reinit();
while(1){
delay(1000);
SYS.WDG = 42;
}
return 0;
}