Skocz do zawartości

[bash][php] sterowanie silnikiem z poziomu przeglądarki


darone

Pomocna odpowiedź

Witam!

Wpadłem na pomysł aby 'sterować' silnikiem z przeglądarki. Schemat działania wygląda następująco:

skrypt php --> skrypt bash --> minicom --> uart --> mikrokontroler atmega8

skrypt php:

<?php
if($_GET['ok']=='a') {
passthru("sudo ./wykon.sh a");
}
else {
echo "błąd";
}
?>

skrypt bash:

#!/bin/bash

function opusc 
{
echo 'send d' > run.runscript
echo 'expect {' >> run.runscript
echo '"o"' >> run.runscript
echo 'timeout 10' >> run.runscript
echo '}' >> run.runscript
echo 'sleep 2' >> run.runscript
echo '! killall -15 minicom' >> run.runscript
sudo /usr/bin/minicom -S run.runscript -C efekt
rm run.runscript
cat efekt
rm efekt
}

case "$1" in
"a") opusc ;;
*) echo "nic nie wybrales"
esac

Do łączenia się poprzez minicom używam runscriptu(tworzę go w bash) który wygląda następująco:

send d
expect {
"o"
timeout 10
}
sleep 2
! killall -15 minicom

Skrypt sam w sobie działa bardzo dobrze. Po wysłaniu 'd' silnik robi kilka obrotów po czym się zatrzymuje dokładnie tak jak tego oczekiwałem. Problem jest w wykonywaniu tego skryptu w php. Tworzy on jedynie pliki natomiast silnik się nie uruchamia. Wnioskuję, że albo minicom wogole się nie uruchamia albo uruchamia się z błędami. Dodam że wyedytowałem plik /etc/sudoers który wygląda następująco:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults	env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root	ALL=(ALL) ALL
www-data ALL=(ALL) NOPASSWD: /var/www/wykon.sh
www-data ALL=(ALL) NOPASSWD: /usr/bin/minicom

# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
# %sudo ALL=NOPASSWD: ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Proszę o pomoc w rozwiązaniu tego problemu.

Link do komentarza
Share on other sites

Skoro generuje skrypt, to znaczy, że sam php działa.

Proponuję usunąć killall ze skryptu, wykonać i sprawdzić czy proces minicom będzie uruchomiony.

Jeśli tak to wiadomo, że chociaż minicom startuje.

Kolejny test to byłoby sprawdzenie, czy coś przez COM wysyła. Jeśli masz 2 porty w komputerze, można połączyć ze sobą (skrosowane oczywiście) i zobaczyć czy coś wysyła.

Jeśli nie masz 2 portów, to trzeba poszukać jakiegoś emulatora COM. Pod windows polecam com0com, pod linuxa niestety nie wiem co można wykorzystać.

Możesz jeszcze spróbować wpisać ścieżki bezwzględne do wszystkich plików, ale nie wiem czy to pomoże.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.