Нужен код парсинга сообщений от цифрового протокола
- Войдите на сайт для отправки комментариев
Разрабатываю ПО для работы с купюроприемником/модулем выдачи денег. Чувствую, потрачу много времени на разработку обработчика одной из команд. Поэтому, задача вам:
1. Получаю сообщение от устройства, записанное в массиве RX_buffer[]
Общая структура сообщения:
здесь интерес представляет только количество байт данных, то есть длина сообщения за минусом 4 (заголовок)
Мне нужен код, обрабатывающий ответ купюрника о своем статусе. Это команда 29.
Пример:
(dispensing)
здесь после первых 3х байт идет код статуса а дальше данные. Проблема в том, что в этом сообщении может быть несколько событий подряд. Длина данных события указана только в даташите (таблица ниже), она переменная.
В результате код должен:
1. Прочитать события из массива RX_buffer[] по очереди. В каждом событии код должен печатать в serial текст события (первая колонка таблицы).
2. При повторном запуске, если код события и данные в нем не изменилось - пропустить вывод в serial и перейти к следующему событию. Если события кончились, опять парсим RX_buffer[].
Жду ваши предложения с ценой и условиями приемки\оплаты на fprotasov gmail.com
Как то странно все это выглядит. Вы уточните после трех байт или после четырех. Если пример сообщения - диспенсинг, то номер сообщения в 4-ом байте. А вот расчет контрольной суммы следует уточнить алгоритм расчета. И что значит несколько команд подряд ? Прям несколько статусов или один статус с различным содержимым ?
Событие это код события + данные. Итого в ответе приходит заголовок, код события 1, данные события 1, код события 2, данные события 2, код события 3, данные события 3. Контрольную сумму трогать не нужно, я ее сам проверяю, тут нет проблемы.
Заголовок состоит все же из 4х байт, дальше идут события.
У вас код события и контрольная сумма могут находиться в одной и той же позиции сообщения, что бы понимать что это нужно знать как считаеткся контрольная сумма. Судя по всему кс имеет признак однозначно отличающий ее от кода события. Так что алгаритм расчета кс нужен исполнителю.
Вторым байтом идёт длина данных, включая коды и данных всех событий. КС будет находиться в позиции "значение байта 1 +4" Так что оставьте ее.
Размер буфера 3-5 событий. То есть от нескольких байт до например, 64.
Я запускаю код периодически. Например раз в секунду. За эту секунду может случиться несколько событий, а может длиться одно и то же. К примеру событие опустошения модуля может занимать 10-50 секунд. Вот в этом случае мне не нужно повторно писать в терминал что идет опустошение. Но за эти 50 секунд могут появиться другие события, их нужно обработать.
Действительно, есть же размер... В течении какого срока нужно выполнить задание ?
интересно, взялся бы- maslachenko767@mail.ru , консультации, подбор компонентов бесплатно, гарантии
если предыдущие откажутся - пишите ded собака cur-ex.ru
Утром на свежую голову уточняю: помимо текста события в терминал нужно писать его данные (если они есть).
Время не горит особо. Думаю, тут на 2-3 часа работы. До конца недели хотелось бы получить результат.
А я думаю, что на день работы. Откуда взяты 2-3 часа?
Ни откуда. Субъективное мнение. Просто для масштаба с неделей.
Ты бы ещё масштаб бюджета озвучил. А то есть подозрение что тебе сроки не к неделе, а к бесконечности надо масштабировать.
Возьму в работу от 3500. Проверка на тестовом массиве , предоставоенном заказчиком.
Ну вот и первое предложение. Цена нормальная. День оплаты работы высококвалифицированного специалиста. Жду еще предложений.
Без налогов, амортизации оборудования, производственных рисков и пр. затрат ))
Ну, это я так, не ради флейма. Просто в последнее время у заказчиков стало модно явно выдавать выручку за прибыль.
Пример буфера и необходмый результат состряпал:
coins low
floated (4321)
"А выводы тут простые - На каждом российском профильном интернетовском форуме, сегодня правят маленькте кучки завсегдатаев. Эти завсегдатаи, в своей реальной профессиональной деятельности, мало чего достигли, но в виртуальном пространстве интернета мнят себя суппер профессионалами. Они не терпят другого мнения, и всеми доступными им путями ( а они часто имеют административные полномочия на форуме за выслугу лет) либо банят своего оппонента, либо чистят темы так, что у любого стороннего человека, случайно заглянувшего в тему, создается впечатление что он насчтупил в какашки."
ALEGYR, дело не в другом мнении, дело в занудном повторении одного и того же в сто тыщ пятисотый раз, причем даже в одной теме. Здесь не все еще впали в маразм и помнят, что читали вчера. Вы похоже не осознаете насколько занудливы, а это страшно скучно, ведь нашлись те, кто не поленился зарегистрироваться, чтобы вам это высказать. Все, форуму нужно отдохнуть. Попроповедуйте ваш "Капитал" в другом месте.
P/S Вычистил весь флуд.
Брукля напишет... 3500 нормальная цена, другие предложения будут большей суммы (ботов и карамзиных в расчет не берем).
Так ТС же сам пишет. И 3 часа уже прошло...
Брукля напишет... 3500 нормальная цена, другие предложения будут большей суммы (ботов и карамзиных в расчет не берем).
Да это фейковый заказчик. Тему уже почистили. ТС сюда приходил алегура побесить :) Выяснилось, что ТС супер-пупер, прости господи, недопрограммер, мастерски владеет лабвью, может из квадратиков nакую картинку накропать - закачаешься. И задача эта ему на 15 минут. А все ардуино писатели, которые тутусюся здесь, просто недоумки :)
Да это фейковый заказчик. Тему уже почистили. ТС сюда приходил алегура побесить :) Выяснилось, что ТС супер-пупер, прости господи, недопрограммер, мастерски владеет лабвью, может из квадратиков nакую картинку накропать - закачаешься. И задача эта ему на 15 минут. А все ардуино писатели, которые тутусюся здесь, просто недоумки :)
Не, если хотите повторно прослушать курс ценообразования, я не против, я верну, ток скажите.
Не, если хотите повторно прослушать курс ценообразования, я не против, я верну, ток скажите.
ни в коем случае :)
Спасибо, уже вчера предлагали :) Я его наизусть выучил.
Ого вы тут нафлудили! Особенно брокля. Ты же за заказы меньше 10 тысяч не берешься, в профильной теме написано, чего тут забыл?
Исполнителю - спасибо! За один день и 1500 рублей выполнил задачу. Даже лучше, чем я думал. Приятно работать с такими людьми.
Может, кому пригодится.
Исполнителю - спасибо! За один день и 1500 рублей выполнил задачу. Даже лучше, чем я думал. Приятно работать с такими людьми.
А чего ник героя не указал?
Если он сделал лучше чем ты думал, мог бы и объективную рекламку ему сделать! И ему бы было бы приятно, и будущим заказчикам стало бы известно к кому можно обращаться, чтобы было недорого, быстро и лучше чем хочется!
А за выложенный скетч спасибо! Теперь можно будет и его продать!!!
Продавайте, дарю.
Продавайте, дарю.
Спасибо!
А что там с ником героя? Он так и останется неизвестным, или все-таки будущие заказчики узнают к кому надо обращаться?
А за выложенный скетч спасибо! Теперь можно будет и его продать!!!
Извини! Беру свои слова обратно!
Скетч оказался нерабочим!!!
Бывает, чо.
Второй код это заголовочный файл headers.h Положить рядом со основным скетчем ino. Тогда все заработает.
Второй код это заголовочный файл headers.h Положить рядом со основным скетчем ino. Тогда все заработает.
Это ты своему заказчику рассказывай, когда он все это проверит на реальном банкомате!
Код и правда не работает :) Фуфел :)
Второй код это заголовочный файл headers.h Положить рядом со основным скетчем ino. Тогда все заработает.
Ты можешь даже два хедерса положить рядом с основным скетчем ino, но пока в твоем ino будет написана пустая "loop", вся твоя ino выдаст 5 сообщений parse_message и замолчит!
Интересно деФфки кодят по четыре штуки в ряд)))