-
- Код ни разу не клевый. Идея в том, чтоб использовать хеши ответов
вместо парсинга в лоб? Действительно идея, но ньюансы могут всё
испортить, практически это грязный хак. В полноценном парсере хеши
тоже могут найтись, например, в алгоритме Рабина-Карпа, для
быстрого понимания какой именно это токен, без сравнения с каждым. - fk0(25.04.2020 13:21)
- Мне не надо понимать какой токен из множества различных. Я тупо
выполняю команду и жду нужный или окончание тайм-аута: if (command("AT+CREG?", 2, REG)) Так что
в данном приложении (просто проверить регистрацию в сети,
активность GRS сессиии и послать данные, получив "200" ) - клевый.
Простой и компактный. А я ленивый ;) Ну и да - если при выполнении
команды модем ничего не ответил во время тайм-аута, значит висит -
передергиваю питание. За пару суток такое Гyдвин(409 знак., 25.04.2020 13:41)
- Ты ждешь хеш токена, а не токен. Проблема в том, что ответ может
оказаться не буквально, побуквенно, совпадающий с ожидаемым.
Пример: "CONNECT 9600". Который может превратиться в "CONNECT
2400". И коллизии само собой -- на которые гарантию никто не даст
вообще. Может тебе вместо "CONNECT" написали "ERROR 23512" и хеши
совпали. Хеширование само по себе -- не метод, а лишь способ
ускорить и обойтись меньшим количеством сравнений строк, которые
всё равно нужны. Потом таким fk0(2004 знак., 25.04.2020 14:15)
- Ты не читаешь и сильно возбужден в последнее время :) Одна фраза
понравилась: "способ ускорить и обойтись меньшим количеством
сравнений строк". Воооот! В MSP430 c RAM 512 байт... А модем у меня
один - найденный в шкафу и в данное время прикручиваемый к
проектику "для души". Все уже распаяно, испытано и известно что
возвращает. И еще раз: передергиваю не когда мой код "наткнулся на
неожиданный ответ", а когда ответа нет вообще - не прилетело в RX
ничего за заданное Гyдвин(283 знак., 25.04.2020 14:50)
- Ты уподобляешься радиолюбителю в худшем его виде. Некоторые очень
ненавидят радиолюбителей, я начинаю догадываться почему. - fk0(25.04.2020 15:23)
- Да остынь ты, что пристал к человеку. Он делает лично для себя, еще и результатами может поделится :-) Радиолюбительский подход в одноразовом изделии экономит время и вполне оправдан. Я тоже ненавижу радиолюбительство, но только с того момента, когда какой-либо радио-губитель начинает применять свои методы за рамками дом/семья/друзья, при этом не понимая что так делать не правильно. - il-2(25.04.2020 15:35)
- Дык я таковым и являюсь, есличО :) И вполне понятно, что меня плющит от "парсера пропарсивания пасинга парсеров" и, например, тонн глючного некрочиповского индусокода , когда можно обойтись несколькими строками с вполне предсказуемой надежностью... - Гyдвин(25.04.2020 15:34)
- Ты уподобляешься радиолюбителю в худшем его виде. Некоторые очень
ненавидят радиолюбителей, я начинаю догадываться почему. - fk0(25.04.2020 15:23)
- Ты не читаешь и сильно возбужден в последнее время :) Одна фраза
понравилась: "способ ускорить и обойтись меньшим количеством
сравнений строк". Воооот! В MSP430 c RAM 512 байт... А модем у меня
один - найденный в шкафу и в данное время прикручиваемый к
проектику "для души". Все уже распаяно, испытано и известно что
возвращает. И еще раз: передергиваю не когда мой код "наткнулся на
неожиданный ответ", а когда ответа нет вообще - не прилетело в RX
ничего за заданное Гyдвин(283 знак., 25.04.2020 14:50)
- докладываю. провел исследование алгоритма "хэша". оказывается так
можно было:) - Vit(25.04.2020 14:00)
- Это полумера, которая здесь и сейчас работает и неизвестно когда
препонесет сюрприз. И даже если так, то хотя бы следовало взять
адекватный rolling hash, по двум причинам: fk0(771 знак., 25.04.2020 14:26, ссылка, ссылка)
- Парсеру-парсерово :) Для моей задачки и простейший годится - в
ответах парсятся всего 5 неизменных строк в ответах и каждая в конкретной команде. Гонять "паровозы" в
мелком MSP нет смысла. В общем, на днях железяку собираюсь вынести
"в поля" - буду держать в курсе в этом топике ;) Надо еще датчики
покрутить... - Гyдвин(25.04.2020 15:02)
- А пока оно сыпется вот сюда "peleeva.ru/temp.log" потихоньку, забив
на крутизну парсинга :) - Гyдвин(25.04.2020 15:14)
- Ну вот как то так оно дышит с "воздушным" датчиком в 6 м от модема.
Кажет температуру и напряжение батарейки. Приступаю к
"земляному"... Гyдвин(398 знак., 26.04.2020 13:25)
- Докладаю: Холодильник у меня неплохой, а за окнами довольно тепло
;) Батарейка при -18 чуть просела (2984 мВ), но она в этом датчике
4 года уже стоит (~600 nA, из которых 500 nA приходится на
некрочиповский операционник, который и будит из LPM4. Ну и да - это
при температуре 25) . В "воздушном" датчике свежая (3121 мВ).
"Попугай" 133 в "земляном" датчике прекрасно реагирует на
влажную/сухую почву (в которую он и будет закопан). "Попугаей" 231
- максимум при ничего не Гyдвин(487 знак., 26.04.2020 17:02)
- Кстати: Не раз тут говорил, что встроенный в порты MSP430G
генератор на ТШ весьма термостабилен. Частота изменилась с 133 до
138 "попугаев" при изменении температуры от -18 до 30. Да и то,
вероятно, что в холодильнике датчик просто лежал на куске мяса ;)
Повторять эксперимент лень ;) Гyдвин(100 знак., 26.04.2020 17:33)
- Феном погрей. Да и там вполне возможно термокомпенсация сделана,
вот и "стабилен". И, кстати, это почти 4%. - fk0(26.04.2020 19:18)
- Это была просто нарушена чистота эксперимента куском мяса :) Д Гyдвин(2362 знак., 26.04.2020 21:16)
- Если у тебя частота уплывает от куска мяса, поздравляю, ты изобрёл
датчик мяса. Я думаю, нужно монетизировать, рынок оценит. - fk0(26.04.2020 21:21)
- Для тех, кто в танке - датчик и предназначен как раз для "мяса"... - Гyдвин(26.04.2020 21:44)
- Надо было выставлять положение по LIS3DH, который там тоже имеется
=))) - Гyдвин(26.04.2020 21:54)
- без температурной калибровки будет плыть выходной сигнал у этого LIS - User_(26.04.2020 22:14)
- Надо было выставлять положение по LIS3DH, который там тоже имеется
=))) - Гyдвин(26.04.2020 21:54)
- Для тех, кто в танке - датчик и предназначен как раз для "мяса"... - Гyдвин(26.04.2020 21:44)
- Если у тебя частота уплывает от куска мяса, поздравляю, ты изобрёл
датчик мяса. Я думаю, нужно монетизировать, рынок оценит. - fk0(26.04.2020 21:21)
- Это была просто нарушена чистота эксперимента куском мяса :) Д Гyдвин(2362 знак., 26.04.2020 21:16)
- Феном погрей. Да и там вполне возможно термокомпенсация сделана,
вот и "стабилен". И, кстати, это почти 4%. - fk0(26.04.2020 19:18)
- Кстати: Не раз тут говорил, что встроенный в порты MSP430G
генератор на ТШ весьма термостабилен. Частота изменилась с 133 до
138 "попугаев" при изменении температуры от -18 до 30. Да и то,
вероятно, что в холодильнике датчик просто лежал на куске мяса ;)
Повторять эксперимент лень ;) Гyдвин(100 знак., 26.04.2020 17:33)
- Докладаю: Холодильник у меня неплохой, а за окнами довольно тепло
;) Батарейка при -18 чуть просела (2984 мВ), но она в этом датчике
4 года уже стоит (~600 nA, из которых 500 nA приходится на
некрочиповский операционник, который и будит из LPM4. Ну и да - это
при температуре 25) . В "воздушном" датчике свежая (3121 мВ).
"Попугай" 133 в "земляном" датчике прекрасно реагирует на
влажную/сухую почву (в которую он и будет закопан). "Попугаей" 231
- максимум при ничего не Гyдвин(487 знак., 26.04.2020 17:02)
- Ну вот как то так оно дышит с "воздушным" датчиком в 6 м от модема.
Кажет температуру и напряжение батарейки. Приступаю к
"земляному"... Гyдвин(398 знак., 26.04.2020 13:25)
- А пока оно сыпется вот сюда "peleeva.ru/temp.log" потихоньку, забив
на крутизну парсинга :) - Гyдвин(25.04.2020 15:14)
- Парсеру-парсерово :) Для моей задачки и простейший годится - в
ответах парсятся всего 5 неизменных строк в ответах и каждая в конкретной команде. Гонять "паровозы" в
мелком MSP нет смысла. В общем, на днях железяку собираюсь вынести
"в поля" - буду держать в курсе в этом топике ;) Надо еще датчики
покрутить... - Гyдвин(25.04.2020 15:02)
- Это полумера, которая здесь и сейчас работает и неизвестно когда
препонесет сюрприз. И даже если так, то хотя бы следовало взять
адекватный rolling hash, по двум причинам: fk0(771 знак., 25.04.2020 14:26, ссылка, ссылка)
- Ты ждешь хеш токена, а не токен. Проблема в том, что ответ может
оказаться не буквально, побуквенно, совпадающий с ожидаемым.
Пример: "CONNECT 9600". Который может превратиться в "CONNECT
2400". И коллизии само собой -- на которые гарантию никто не даст
вообще. Может тебе вместо "CONNECT" написали "ERROR 23512" и хеши
совпали. Хеширование само по себе -- не метод, а лишь способ
ускорить и обойтись меньшим количеством сравнений строк, которые
всё равно нужны. Потом таким fk0(2004 знак., 25.04.2020 14:15)
- Мне не надо понимать какой токен из множества различных. Я тупо
выполняю команду и жду нужный или окончание тайм-аута: if (command("AT+CREG?", 2, REG)) Так что
в данном приложении (просто проверить регистрацию в сети,
активность GRS сессиии и послать данные, получив "200" ) - клевый.
Простой и компактный. А я ленивый ;) Ну и да - если при выполнении
команды модем ничего не ответил во время тайм-аута, значит висит -
передергиваю питание. За пару суток такое Гyдвин(409 знак., 25.04.2020 13:41)
- Код ни разу не клевый. Идея в том, чтоб использовать хеши ответов
вместо парсинга в лоб? Действительно идея, но ньюансы могут всё
испортить, практически это грязный хак. В полноценном парсере хеши
тоже могут найтись, например, в алгоритме Рабина-Карпа, для
быстрого понимания какой именно это токен, без сравнения с каждым. - fk0(25.04.2020 13:21)