реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как вы делаете разбор текстовых команд?
Аматер
сообщение Oct 20 2010, 15:40
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 3-01-10
Из: Рождественно
Пользователь №: 54 616



Как вы делаете разбор текстовых команд?
То есть у меня есть команда "давай включим уровень компарации входа 1";10 0x0D
Соответсвенна есть таблица, с crc16 для строк команд. Для входной строки ищется crc16 и потом по ней выбирается соответвующая функция из таблицы.
Правильно ли я сделал или есть лучше решения?
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Oct 20 2010, 16:12
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(Аматер @ Oct 20 2010, 19:40) *
Как вы делаете разбор текстовых команд?
То есть у меня есть команда "давай включим уровень компарации входа 1";10 0x0D
Соответсвенна есть таблица, с crc16 для строк команд. Для входной строки ищется crc16 и потом по ней выбирается соответвующая функция из таблицы.
Правильно ли я сделал или есть лучше решения?

CRC слишком жесткое условие. а если оператор пропустит одну букву?
Если невозможно свести команды к простым сочетаниям нескольких клавишь. То задача превращается в создание некоего искуственного интелекта по распознаванию текста. Если уж совсем неймется я бы свел к наличию ключевых слов.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Oct 20 2010, 17:14
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Аматер @ Oct 20 2010, 21:40) *
Как вы делаете разбор текстовых команд?


Гляньте вот здесь, может пригодится.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Oct 20 2010, 21:04
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



http://ru.wikipedia.org/wiki/Soundex
Очень круто.



--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Аматер
сообщение Oct 21 2010, 08:53
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 3-01-10
Из: Рождественно
Пользователь №: 54 616



Цитата(AHTOXA @ Oct 20 2010, 21:14) *
Гляньте вот здесь, может пригодится.


Спасибо, нашел хорошую мысль -

Иметь 4х буквенные сокращения и воспринимать их как цифры. Поиск по ним будет быстрый у меня все равно процессор 32 битный.
для понятности буду делать составные команды -

место применения;действие;параметры...

например

ref1;set;10
cur1;get
flash;clr;0;10

Как вам?

а сокращения по звучанию, это круто, но как то мне кажется ненадежно
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Oct 21 2010, 09:24
Сообщение #6


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Аматер @ Oct 21 2010, 14:53) *
Поиск по ним будет быстрый у меня все равно процессор 32 битный.

У вас там что, мегабитный поток команд? smile.gif Куда торопиться-то? Я там высказал своё мнение, и с тех пор не поменял его: команды должны быть осмысленными.
Цитата(Аматер @ Oct 21 2010, 14:53) *
flash;clr;0;10
Как вам?

Не нравитсяsmile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Аматер
сообщение Oct 21 2010, 09:45
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 3-01-10
Из: Рождественно
Пользователь №: 54 616



Цитата(AHTOXA @ Oct 21 2010, 12:24) *
У вас там что, мегабитный поток команд? smile.gif Куда торопиться-то? Я там высказал своё мнение, и с тех пор не поменял его: команды должны быть осмысленными.

Не нравитсяsmile.gif

Ну у меня действительно около 300 параметров, которые опрашиваются. В основном утилитой. Изредка через терминал команды посылаются.
А торопится есть куда, потому что проц.занят сильно.

А чем система команд не понравилась?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Oct 21 2010, 10:29
Сообщение #8


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Аматер @ Oct 21 2010, 12:45) *
потому что проц.занят сильно.

Тогда <имя-параметра> <разделитель> <операция> [значение]
Соединить операцию и разделитель получим типа
Код
ref1<100 - это такая запись
ref2> это такое чтение
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Oct 21 2010, 10:51
Сообщение #9


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Аматер @ Oct 21 2010, 15:45) *
Ну у меня действительно около 300 параметров, которые опрашиваются.

Это мелочи. Помните о вреде преждевременной оптимизации? Так вот, интерфейс пользователя - это медленный процесс. И там совершенно не критичны пара сотен команд туда-сюда.
Цитата
А чем система команд не понравилась?

Птичий язык какой-то. А выигрыша - мизер. Входной поток всё равно придётся парсить, разбивать на токены по разделителям. А уж как потом определять, что за команда пришла - сравнением четырёхбайтных значений или побуквенно - дело десятое.

ЗЫ. А для утилиты можно сделать команду, которая выдаёт все параметры списком, и сэкономить на этом гораздо больше.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
slanted
сообщение Oct 23 2010, 03:56
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 140
Регистрация: 2-01-08
Пользователь №: 33 768



Цитата(Аматер @ Oct 20 2010, 19:40) *
Соответсвенна есть таблица, с crc16 для строк команд. Для входной строки ищется crc16 и потом по ней выбирается соответвующая функция из таблицы.
Правильно ли я сделал или есть лучше решения?

Подход имеет право на жизнь. Посмотрите библиотеку gperf - это генератор т.н. "идеальных хешей", т.е. хешей, которые гарантированно не имеют коллизий на заданном наборе входных данных. Соответственно, задача опознания команды сведется к подсчету хэша и одному строковому сравнению.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01373 секунд с 7
ELECTRONIX ©2004-2016