Skocz do zawartości

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


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 to post
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 to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.