Добрый день, пытаюсь сделать программку чтобы снимать данные с автомобильных весов, но никогда раньше не приходилось работать с COM портами, поэтому возникло несколько вопросов. Поставил программку сниффер порта и слушаю ей проходящие данные.
1. Демо программа посылает весам запрос вида:
0A .
что это за символ?
2. Приходит ответ:
00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 0D 0A ....
как правильно прочитать и перевести в обычные цифры эти данные? (здесь 1кг)
Этот топик читают: Гость
Ответов: 578
Рейтинг: 14
|
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
GanjaKyp писал(а): что это за символ?GanjaKyp писал(а): как правильно прочитать и перевести в обычные цифры эти данные? (здесь 1кг)Или привести табличку ответов, на 0.5, 1, 1.250, 1.5, 2 кГ или марку весов. |
|||
карма: 25 |
| ||
Голосовали: | GanjaKyp |
Ответов: 578
Рейтинг: 14
|
|||
Tad писал(а): Читать инструкцию к весам.Инструкции к сожалению нет но это 5кг 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A это 25кг 05 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A это 30кг 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A как перевести эти данные в цифры? |
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
Tad, если бы в инструкции был раздел "Описание программы" Коллега GanjaKyp хочет раколоть демо-версию и узнать какие запросы и ответы идут к микроконтроллеру весов (весы автомобильные, так что величины "..0.5, 1, 1.250, 1.5, 2 кГ.." надо умножить на 1000 )
GanjaKyp, полагаю, что надо записать и потом проанализировать не один запрос, но по несколько десятков на каждую кнопку демо-версии. Вот например команды Ke-USB24 что есть у нас в HiAsm-е ke-usb24a_commandsguide.rar что-то подобное и надо составить по факту. |
|||
карма: 19 |
| ||
файлы: 1 | ke-usb24a_commandsguide.rar [168.6KB] [266] |
Ответов: 578
Рейтинг: 14
|
|||
Леонид, демка только показывает вес, в принципе больше мне ничего не нужно
|
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
Да, ещё: наверное при включении программы она, наверное, должна устанавливать контакт с весами, посылая команды и получая ответы, их тоже надо записать (А может не скупиться и купить полную версию )
|
|||
карма: 19 |
|
Ответов: 578
Рейтинг: 14
|
|||
при включении отсылается 0A, эта же команда запрашивает текущий вес
при отправке моей программой 0A, снифер ловит ответ от весов (см.выше), осталось только прочитать эти данные ------------ Дoбавленo в 09.55: 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A - я правильно понимаю что читать нужно по 20 байт? |
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
GanjaKyp, 0D -- 13, 0А -- 10 Читать и состыковывать надо всё, затем получившуюся строку разбивать по этим символам, а если читать по 20 байт, то можно получить в одном чтении половину ответа.
Как перевести ответ в цифры -- по представленным данным каждый байт одна десятичная цифра, но представлено недостаточно, Леонид писал(а): ..по несколько десятков на каждую кнопку.. |
|||
карма: 19 |
|
Ответов: 578
Рейтинг: 14
|
|||
в сниффере ответ всегда одинаковой длинны, что значит "..по несколько десятков на каждую кнопку.."?
------------ Дoбавленo в 10.19: при чтении по 20 байт сниффер показывает столько же цифр, сколько и при работе офф. демки ------------ Дoбавленo в 10.30: Леонид писал(а): по представленным данным каждый байт одна десятичная цифраполучается так, только что взвешивали камаз 15045 кг. 05 04 00 05 01 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 0D 0A .... |
|||
карма: 0 |
|
Ответов: 163
Рейтинг: 33
|
|||
Вроде все сходится кроме замеров 1 кг. Надо сделать несколько замеров менее 5 кг. Ну а из остальных приведенных данных у меня вырисовывается такой алгоритм:
|
|||
карма: 3 |
|
Ответов: 578
Рейтинг: 14
|
|||
у весов точность +- 5кг я не могу разобраться как получить эту строку в программе (например 05 04 00 05 01 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A)
|
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
GanjaKyp,
code_33663.txt Выбираем скорость, затем номер порта, порт включается. Посылаем запрос (10), через таймер читаем ответ и заменяем символы на циферки. Леонид писал(а): ..Читать и состыковывать надо всё, затем получившуюся строку разбивать..Попробуйте для начала. |
|||
карма: 19 |
| ||
файлы: 1 | code_33663.txt [3.5KB] [402] | ||
Голосовали: | GanjaKyp |
Ответов: 163
Рейтинг: 33
|
|||
Похоже пора попросить схему в студию.
------------ Дoбавленo в 12.57: это я к GanjaKyp |
|||
карма: 3 |
|
Ответов: 578
Рейтинг: 14
|
|||
Леонид, работает) только неправильно как то, а я логику твоей схемы понять не могу
------------ Дoбавленo в 13.52: 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A получается 010000000000000000 должно быть 10 05 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A -> 510000000000000000 -> 15 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A -> 500000000000000000 -> 5 |
|||
карма: 0 |
|
Ответов: 1343
Рейтинг: 31
|
|||
незнаю в тему ли я напишу, НО... убираем пробелы, дизассемблируем байтики и получаем ваш вес ввиде STR
по иному можно сделать переворачивание байт, и просто перевод HEX в INT каждого байта помоему и после просто складируем эти STR как строки помоему этот пример ПРОСТО НЕЛЬЗЯ не понять... это 5кг
05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A это 25кг 05 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A это 30кг 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A ------------ Дoбавленo в 14.00: GanjaKyp писал(а): 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A получается 010000000000000000 должно быть 10 так блин ... учи для начала HEX потом поймёшь что A=10 |
|||
карма: 2 |
|