Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > CyberWrt

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.05.2014, 21:30   #71
dzavalin
Junior Member
 
Регистрация: 19.05.2014
Сообщений: 11
Вес репутации: 0
dzavalin is an unknown quantity at this point
По умолчанию Re: CyberWrt модуль "Робот"

Смысл понял. Буду пробовать. Спасибо!
dzavalin вне форума   Ответить с цитированием
Старый 22.05.2014, 21:36   #72
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: CyberWrt модуль "Робот"

Вот скопировал готовый пример из модуля "FTDI драйвер"
PHP код:
#!/bin/sh

if echo "$QUERY_STRINGegrep -"serport=" then
line
=`echo $QUERY_STRING|sed 's/&/ /g'`
for 
pair in $line
do
    
name=`echo $pair|sed 's/=/ /g' | awk '{print $1}'`
    
type=`echo $pair|sed 's/=/ /g' | awk '{print $2}' | sed -e 's/%\(\)/\\\x/g'|sed 's/+/ /g'`
    eval ${
name}=\"${type}\"
done

#Ваш код

fi 
Admin вне форума   Ответить с цитированием
Старый 22.05.2014, 22:17   #73
dzavalin
Junior Member
 
Регистрация: 19.05.2014
Сообщений: 11
Вес репутации: 0
dzavalin is an unknown quantity at this point
По умолчанию Re: CyberWrt модуль "Робот"

Вот так - никакого вывода. Даже 123 не отправляет
#!/bin/sh

if echo "$QUERY_STRING" | egrep -q "tx_com=" ; then
line=`echo $QUERY_STRING|sed 's/&/ /g'`
for pair in $line
do
name=`echo $pair|sed 's/=/ /g' | awk '{print $1}'`
type=`echo $pair|sed 's/=/ /g' | awk '{print $2}' | sed -e 's/%\(\)/\\\x/g'|sed 's/+/ /g'`
eval ${name}=\"${type}\"
done

echo -e $name > /dev/ttyATH0
echo -e ${name} > /dev/ttyATH0
echo -e "$type" > /dev/ttyATH0
echo -e "123" > /dev/ttyATH0
dzavalin вне форума   Ответить с цитированием
Старый 22.05.2014, 22:38   #74
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: CyberWrt модуль "Робот"

А где потеряли fi ?
Admin вне форума   Ответить с цитированием
Старый 22.05.2014, 23:17   #75
dzavalin
Junior Member
 
Регистрация: 19.05.2014
Сообщений: 11
Вес репутации: 0
dzavalin is an unknown quantity at this point
По умолчанию Re: CyberWrt модуль "Робот"

Получилось вот так - отрезает "tx_com=". Ура
#!/bin/sh

line=`echo $QUERY_STRING|sed 's/tx_com=/ /g'`
echo $line > /dev/ttyATH0

Остальное оказалось лишним.
Но теперь второй этап изысканий - передача не кодов символов, а числовых значений. Снова рассчитываю на вашу помощь Admin.
dzavalin вне форума   Ответить с цитированием
Старый 23.05.2014, 13:23   #76
dzavalin
Junior Member
 
Регистрация: 19.05.2014
Сообщений: 11
Вес репутации: 0
dzavalin is an unknown quantity at this point
По умолчанию Re: CyberWrt модуль "Робот"

Научите пожалуйста как правильно прописать следующее условие:

если $line=W тогда А=128
если нет - идем дальше
если $line=S тогда А=130
если нет - идем дальше
echo $A > /dev/ttyATH0

W, S -символы(буквы) в строке переменной $line
128, 130 - числа (в HEX соответственно = 80 и 82)
dzavalin вне форума   Ответить с цитированием
Старый 23.05.2014, 13:49   #77
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: CyberWrt модуль "Робот"

1) if <команда> then <команда> fi

Пример условия if ... then:

#!/bin/sh
if [ $1 -eq 10 ]; then
echo var=10
fi


Результат работы,при переданном параметре равном 10:

>--------------------------------------<
var=10
>--------------------------------------<



2) if <команда> then <команда> else <команда> fi

Пример if ... then ... else:

#!/bin/sh
if [ $1 -eq 10 ]; then
echo var=10
else
echo var!=10
fi


Результат работы,при переданном параметре равном 10:

>--------------------------------------<
var=10
>--------------------------------------<



Результат работы,при переданном параметре равном 7:

>--------------------------------------<
var!=10
>--------------------------------------<



3) if <команда> then <команда> elif <команда> else <команда> fi

Пример if ... then ... elif ... else:

#!/bin/sh
if [ $1 -eq 10 ]; then
echo var=10
elif [ $1 -eq 9 ]; then
echo var=9
else
echo var!=10 and var!=9
fi


Результат работы,при переданном параметре равном 10:

>--------------------------------------<
var=10
>--------------------------------------<


Результат работы,при переданном параметре равном 9:

>--------------------------------------<

var=9
>--------------------------------------<


Результат работы,при переданном параметре равном 8:

>--------------------------------------<
var!=10 and var!=9
>--------------------------------------<


4) case <строка> in <шаблон>) <команды> ;; *) <команды> ;; esac

Case-конструкция позволяет выбирать один из нескольких альтернативных вариантов.

#!/bin/sh
case $1 in
1)
echo arg is 1
;;
2)
echo arg is 2
;;
*)
echo arg is other
;;
esac



Результат работы,при переданном параметре равном 1:

>--------------------------------------<
arg is 1
>--------------------------------------<


Результат работы,при переданном параметре равном 2:

>--------------------------------------<
arg is 2
>--------------------------------------<


Результат работы,при переданном параметре равном 10:

>--------------------------------------<
arg is other
>--------------------------------------<



Сравнение целых чисел:
-gt больше чем
-lt меньше чем
-ge больше чем либо равно
-le меньше чем либо равно
-eq равно
-ne не равно

Сравнение строк:
-z проверка на наличие пустой строки
-n проверка на наличие строки-значения
= равенство
!= неравенство
str проверка на наличие строки,состоящей из нулей

Логические операции:
-a И
-o ИЛИ
! НЕ

Проверка файлов:
-f установка факта существования файла и его регулярности
-s проверка,не является-ли файл пустым
-r проверка возможности считывания файла
-w проверка возможности записи файла
-x проверка исполняемости файла
-d проверка,является-ли файл каталогом
-h проверка,является-ли файл ссылкой
-c проверка,является-ли файл байт-ориентированным устройством
-d проверка,является-ли файл блок-ориентированным устройством
Admin вне форума   Ответить с цитированием
Старый 23.05.2014, 13:59   #78
dzavalin
Junior Member
 
Регистрация: 19.05.2014
Сообщений: 11
Вес репутации: 0
dzavalin is an unknown quantity at this point
По умолчанию Re: CyberWrt модуль "Робот"

Огромное спасибо!
Жаль сейчас на железе не проверить. Вчера аналогичные примеры пробовал на практике, но там синтаксис был другим.
dzavalin вне форума   Ответить с цитированием
Старый 24.05.2014, 15:19   #79
dzavalin
Junior Member
 
Регистрация: 19.05.2014
Сообщений: 11
Вес репутации: 0
dzavalin is an unknown quantity at this point
По умолчанию Re: CyberWrt модуль "Робот"

Admin, еще раз благодарю за помощь. Вот, что мне в итоге нужно было:

#!/bin/sh

if [ $QUERY_STRING = tx_com=W ];
then
echo -e "\x80\x82\x87" > /dev/ttyATH0
fi
if [ $QUERY_STRING = tx_com=x ];
then
echo -e "\x83" > /dev/ttyATH0
fi

Может еще кому пригодится.
dzavalin вне форума   Ответить с цитированием
Старый 16.07.2014, 21:26   #80
YUR
Junior Member
 
Регистрация: 28.02.2013
Сообщений: 29
Вес репутации: 0
YUR is an unknown quantity at this point
По умолчанию Re: CyberWrt модуль "Робот"

Робот зависает при питании от одного источника моторов и логики, зависает роутер при нажатии на кнопки движения. Подскажите в чем дело. Питаю 5в, банки от аккум. шуруповерта. Если питать моторы и логику от разных источников, то все ок. Тока не хватает может быть??

Последний раз редактировалось YUR; 16.07.2014 в 21:28.
YUR вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 21:33. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика