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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.06.2014, 11:37   #151
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 44
Сообщений: 573
Вес репутации: 600
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: Описание протокола "Умный дом"

Тот же скрипт, но без использования timeout, т.е. практически даровый:
Код:
#!/bin/sh

tty=/dev/ttyATH0

# Сброс параметров.
stty -F $tty 4:0:18b2:0:0:0:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0

# Настройка.
stty -F $tty raw 9600 cs8

# Тестовая посылка.
printf "\x10\x10\x00\x00\x00\x01\x02\x03\xE8\x66\xBE" > $tty

#timeout 0.2 dd if=$tty of=ans.dat count=256 2> /dev/null

( dd if=$tty of=ans.dat count=256 2> /dev/null ) & sleep 1 ; kill $!

hexdump -C ans.dat
Информация по способам прерывания команд взята тут: Timeout a command in bash without unnecessary delay

Жалко только, что sleep засыпает на секунды, т.к. timeout понимает и доли секунды.
__________________
Россия навсегда!
uni вне форума   Ответить с цитированием
Старый 05.06.2014, 13:59   #152
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
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: Описание протокола "Умный дом"

Я использовал read в модуле AquaLog
Для коректного чтения в ардуино, после получения запроса нужно выдержать паузу 100мс и после пауза отправлять данные
Admin вне форума   Ответить с цитированием
Старый 05.06.2014, 15:41   #153
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 44
Сообщений: 573
Вес репутации: 600
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: Описание протокола "Умный дом"

read не работает с нулевыми байтами насколько я понял и ещё похоже, что переменные в скрипте не могут содержать нулевые байты.
__________________
Россия навсегда!
uni вне форума   Ответить с цитированием
Старый 07.06.2014, 08:22   #154
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 44
Сообщений: 573
Вес репутации: 600
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: Описание протокола "Умный дом"

Создал простой модуль для тестирования работы по протоколу modbus при помощи скрипта в shell.

Посылки из javascript я научился делать, crc считается, всё нормально. Эмулятор принимает и распознаёт посылки, но почему-то не передаёт данные в ответ. Это странно, не могу пока объяснить такое поведение.

Пробовал функции чтения 03 и 04. На картинки видно, что запрос принят, но ответной посылки нет. Зато запись (функция 06) работает.

В общем осталось разобраться почему эмулятор не выдаёт запрошенные данные.

П.С. Возможно дело в каком-то таймауте или задержке. Надо бы попробовать на каком-нибудь реальном железе.
Миниатюры
Нажмите на изображение для увеличения
Название: 2014-06-07 10-16-21 Скриншот экрана.jpg
Просмотров: 346
Размер:	56.2 Кб
ID:	1729  
__________________
Россия навсегда!

Последний раз редактировалось uni; 07.06.2014 в 08:55.
uni вне форума   Ответить с цитированием
Старый 07.06.2014, 09:27   #155
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 44
Сообщений: 573
Вес репутации: 600
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: Описание протокола "Умный дом"

С другим симулятором работает. Ура. На картинке чтение (03) с адреса 0x0000, где находится значение 0x0A (10).

Осталось унифицировать интерфейс и проверить работу с реальным железом. В общем и целом это означает, что можно при помощи нескольких строк в shell со стандартными командами и дополнительных функций на javascript реализовывать протоколы, основанные на обмене массивами байт, в том числе с расчетом crc.
Миниатюры
Нажмите на изображение для увеличения
Название: 2014-06-07 11-25-07 Скриншот экрана.jpg
Просмотров: 334
Размер:	77.4 Кб
ID:	1730  
__________________
Россия навсегда!

Последний раз редактировалось uni; 07.06.2014 в 09:33.
uni вне форума   Ответить с цитированием
Старый 07.06.2014, 10:48   #156
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
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: Описание протокола "Умный дом"

Проверить нет возможности, вернусть 13 июня, протестирую
Admin вне форума   Ответить с цитированием
Старый 07.06.2014, 11:00   #157
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 44
Сообщений: 573
Вес репутации: 600
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: Описание протокола "Умный дом"

К тому времени попробую оформить интерфейс более универсально, добавлю настройки для последовательного порта и выложу архив с модулем для CyberWrt. У меня в принципе есть плата с avr и прошивка для modbus slave, просто симулятором тестировать сейчас быстрее.

Желательно попробовать на реальном модуле ввода-вывода каком-нибудь, промышленном или около того.

П.С. Нашёл crc16 алгоритм для bash: crc16 algorithm from C++ to bash. Не уверен, что он будет работать для произвольных данных. Не знаю как его использовать для произвольных бинарных данных.
И ещё один вариант: CRC-16 checksum of a string.
__________________
Россия навсегда!

Последний раз редактировалось uni; 07.06.2014 в 13:11.
uni вне форума   Ответить с цитированием
Старый 19.06.2014, 12:05   #158
lvovitch
Senior Member
 
Регистрация: 14.04.2010
Сообщений: 239
Вес репутации: 0
lvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond repute
По умолчанию Re: Описание протокола "Умный дом"

Цитата:
Сообщение от uni Посмотреть сообщение
К тому времени попробую оформить интерфейс более универсально, добавлю настройки для последовательного порта и выложу архив с модулем для CyberWrt. У меня в принципе есть плата с avr и прошивка для modbus slave, просто симулятором тестировать сейчас быстрее.

Желательно попробовать на реальном модуле ввода-вывода каком-нибудь, промышленном или около того.

П.С. Нашёл crc16 алгоритм для bash: crc16 algorithm from C++ to bash. Не уверен, что он будет работать для произвольных данных. Не знаю как его использовать для произвольных бинарных данных.
И ещё один вариант: CRC-16 checksum of a string.
А Вы не проверяли эти функции? Они будут работать на нашей версии shell?
lvovitch вне форума   Ответить с цитированием
Старый 19.06.2014, 17:33   #159
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 44
Сообщений: 573
Вес репутации: 600
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: Описание протокола "Умный дом"

Оказывается, что будут. С доработкой конечно. Я поначалу не мог понять смысла, почему они имеют в виду строки. Оказывается это нужно, чтобы интерпретатор мог работать с байтами как с числами.

Скрипт может выглядеть так:
Код:
string="001005000006000001"

cnt=${#string}
let 'cnt -= 3'

crc=0xFFFF

for i in `seq 0 3 $cnt`; do
   
	crc=$(( crc ^ ${string:$i:3} ))
	
	for j in `seq 0 7`; do

        c=$(( crc >> 1 ))
        
		if [ $(( crc & 1 )) = 1 ]; then					
		
			let 'c ^= 0xA001'
		fi
        
        crc=$c
    
	done
	
done

printf "0x%04X" "$crc"
echo
Возьмём два примера из поста про modbus:
Код:
2014.06.18 13:47:30 [INFO:30500] ( => ) 0x01_0x05_0x00_0x06_0x00_0x01_0xEC_0x0B
2014.06.18 13:47:30 [INFO:30500] ( <= ) 0x01_0x85_0x03_0x02_0x91
Для первой строки (string="001005000006000001") получим ответ: 0x0BEC
Для второй строки (string="001133003") получим ответ: 0x9102

На хабре меня не поправили. Оказывается можно считать crc, если представить числа в "интерпретируемом виде".
__________________
Россия навсегда!

Последний раз редактировалось uni; 19.06.2014 в 20:23.
uni вне форума   Ответить с цитированием
Старый 19.06.2014, 21:21   #160
lvovitch
Senior Member
 
Регистрация: 14.04.2010
Сообщений: 239
Вес репутации: 0
lvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond repute
По умолчанию Re: Описание протокола "Умный дом"

чего-то у меня не выходит
попробовал перевести 599517 - вывело 0x427C
а должно быть 0925DD
lvovitch вне форума   Ответить с цитированием
Ответ


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

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

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

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


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


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