Easyelectronics.ru

Электроника для всех
Текущее время: 23 сен 2019, 23:03

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Настройка устройства
СообщениеДобавлено: 08 фев 2018, 20:49 
Заглядывает иногда

Зарегистрирован: 18 авг 2014, 20:13
Сообщения: 34
Здравствуйте, на работе возникла очень интересная задача, однако ко из –за отсутствия опыта не уверен в правильности выбранного метода.
Нужно иметь возможность очень гибкой настройки поведения устройства из пользовательского интерфейса (программа на PC), устройство автономное и подключается к PC только для настройки.
Суть настроек примерно такова:
Прибор анализирует трафик на линии (физически это RS 485) с кастомным протоколом поверх. Формат сообщений на шине такой :
Код:
[ID] [DATA (1…100)] [CRC]  , период сообщений от 5 до 50 ms.

В настройках прибора указаны определенные реакции на события на шине, такие как прием сообщений только с определенным ID (фильтр), только с определенным кол-вом данных и собственно самая сложная (на мой взгляд ) опция – модификация сообщения по определенному алгоритму. Алгоритм задается при настройке устройства пользователем. Модификация сообщения должна настраиваться максимально гибко к примеру:
Код:
DATA[1]++
IF DATA[2] > 3 THEN DATA[4] = 3
DATA[0] = DATA[1] ^ DATA[2]

И т.п.
Возможно, кото-то подскажет наиболее оптимальный способ или подход для решения этой задачи. Лично я вижу реализацию блока с модификацией сообщения как некий интерпретатор на стороне устройства, однако смущает возможно низкая скорость работы и отклика.
Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настройка устройства
СообщениеДобавлено: 08 фев 2018, 21:45 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1009
AlexNL писал(а):
Возможно, кото-то подскажет наиболее оптимальный способ или подход для решения этой задачи. Лично я вижу реализацию блока с модификацией сообщения как некий интерпретатор на стороне устройства, однако смущает возможно низкая скорость работы и отклика.

Читай про стековые VM, если будешь обрабатывать байт-код, то должно работать достаточно быстро. Например, твои строки
Код:
DATA[0] = DATA[1] ^ DATA[2]
IF DATA[2] > 3 THEN DATA[4] = 3

превратились бы в набор простых команд:
Код:
1, load, 2, load, ^, 0, save,
2, load, 3, loadk, >, ifNotJmp ..., 3, loadk, 4, save

Кидаем на вершину стека значение по индексу 1 относительно DATA, потом кидаем DATA[2], "^" берет эти два значения и размешает на вершине одно с результатом данной операции, последняя команда берет этот результат и сохраняет в DATA[0].


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настройка устройства
СообщениеДобавлено: 09 фев 2018, 22:25 
Заглядывает иногда

Зарегистрирован: 18 авг 2014, 20:13
Сообщения: 34
Спасибо. Буду пробовать. (Сам смотрел на Forth).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настройка устройства
СообщениеДобавлено: 09 фев 2018, 22:53 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1009
AlexNL писал(а):
Сам смотрел на Forth.

Посмотри внимательнее, я переписал твои выражения в обратной польской нотации, которой на форте пришлось бы пользоваться изначально, но после этого преобразования каких-то заметных отличий от форта фактически и нет.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  
cron

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB