MiklPolikov 0 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба Есть два устройства, общающиеся по UART. Хочу сделать парсинг их протокола. Для этого, подключаю к компу 2шт USB-UART преобразователя. Пишу два лога данных, по линиям Rx и Tx. Использую Device Monitoring Studio Всё замечательно. Но! Мне-то нужно не два лога, а один. Что бы было понятна очередность пакетов, которыми обмениваются устрйоства. Что бы был лог, в котором друг за другом показано, что отправило одно устройство, и что ему ответило второе. Вопрос: так можно сделать в Device Monitoring Studio или ещё где-то ? Вроде бы очевидное желание, неужели для этого нет инструментов ? Заранее спасибо тому кто поможет ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
engel65536 12 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба То есть вы сделали на ПК "трубу", я правильно понял? Мне кажется, если уж два устройства общаются между собой через UART, то самое простое - соединить из штатно и повесить на обе линии логический анализатор - хотя бы китайский клон saleae logic. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiklPolikov 0 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба 6 minutes ago, engel65536 said: То есть вы сделали на ПК "трубу", я правильно понял? Что имеется в виду под "труба" ? 6 minutes ago, engel65536 said: если уж два устройства общаются между собой через UART, то самое простое - соединить из штатно Они соединены штатно, и общаются штатно. Общение я слушаю двумя USB-UART преобразователями, используя входы RX Получаю два лога данных. Но мне надо не два отдельных лога, а один, что бы видеть что одно устройство послало и что другое следом ответило. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 90 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба 33 минуты назад, MiklPolikov сказал: Мне-то нужно не два лога, а один. Что бы было понятна очередность пакетов, которыми обмениваются устрйоства. Что бы был лог, в котором друг за другом показано, что отправило одно устройство, и что ему ответило второе. Взять какую-нибудь плату вашей разработки, где есть два компорта(у меня была плата с одним, но второй я подпаял на проводочках), подключить оба устройства к этой плате, а внутри программно завернуть траффик куда надо. 4 минуты назад, MiklPolikov сказал: Общение я слушаю двумя USB-UART преобразователями, используя входы RX соединить выходы по ИЛИ через диоды Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба 5 minutes ago, MiklPolikov said: Получаю два лога данных. Так соедините их в один. Время есть в каждом. По нему и объединяйте. Куда уж проще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба Если надо оперативно что-то посмотреть глазами, то wireshark умеет в том числе смотреть и обмен по USB. Если эти два переходника подключены к одному USB-контроллеру, то обмен с обоими попадет в один поток. Наверное его можно записать и обработать какими-то другими утилитами, этого я не знаю - не было необходимости. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiklPolikov 0 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба Just now, HardEgor said: Взять какую-нибудь плату вашей разработки, где есть два компорта(у меня была плата с одним, но второй я подпаял на проводочках), подключить оба устройства к этой плате, а внутри программно завернуть траффик куда надо. Аппаратно уже сделал. И в Device Monitoring Studio получил один лог. Но ! В этом логе все байты идут друг за другом, не понятно, что послало 1е устройство, что второе. Спрашиваю, нет ли средства, что байты от 1го и 2ого устройства окрасить в разный цвет в одном логе ? Поэтому и подключал изначально через 2шт USB-UART , думал что найду такую функцию Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 90 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба 3 минуты назад, MiklPolikov сказал: В этом логе все байты идут друг за другом, не понятно, что послало 1е устройство, что второе. если это ваша разработка , то присвоить адреса устройствам Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 79 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба почти любой терминал умеет скидывать в дамп файл с вместе метками времени, termite например, но метки времени там либо по строкам, либо с некой дискретностью проверяется есть ли что в буфере, т.е. не на каждый байт. да и usb-uart преобразователи всё равно буферизируют и точнее нескольких милисекунд не разобрать кто когда что послал. возможно проще будет написать что-нибудь вроде while(1){ if (portA.getRxBuffNum() > 0) printf("A: %d\t%02X\n", QueryPerformanceCounter(), portA.read(1)); if (portB.getRxBuffNum() > 0) printf("B: %d\t%02X\n", QueryPerformanceCounter(), portB.read(1)); } или вот ещё какая-то терминалка с timestamp, Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба Да и самому можно написать логгер такой минут за 30. Просто надо заставить себя и не лениться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба Не монитор тебе нужен, а сниффер последовательного порта. Давненько это было... Если у тебя UART, то есть сигналы TX и RX. На каждый ставишь любой девайс (например, EIA232-USB), имеющий RX и создающий на компе два СОМ-порта. Дальше пишешь простейшую программу, которая принимает сначала по одному СОМ-порту посылку и отображает её в терминале, любым приятным тебе способом указывая с какого порта эта посылка, а потом по второму порту. Как правило, по UART девайсы обмениваются по принципу ведущий-ведомый, запрос-ответ, более того, чаще всего известно, кто спрашивает, а кто отвечает. Если одно из устройств ПК, то всё проще. Есть проги, зеркалирующие СОМ-порты в компе и показывающие в окошке что и откуда-куда идёт. Была контора, называлась, вроде на "Э", у которой было полно подобных прог, правда, за деньги, но есть ведь Рутрэкер... Анализ COM-порта Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vvppvv 0 18 мая, 2023 Опубликовано 18 мая, 2023 (изменено) · Жалоба Не могу найти названий тех коробочек и программ, которыми пользовался 25 - 30 лет назад. )) Но смысл такой, поясню по воспоминаниям анализатора протокола SINEC L1 для MS-DOS. Я бы сделал так. По экрану бегут 2 строки символов, параллельно. Верхняя - одно устройство (У№1), нижняя - второе (У№2). Если никто ничего не посылает, то строки замирают на месте. Послал байт У№1. он отобразился в верхней строке, а в нижней - ничего. Если оба У№1 и У№2 посылают байты, то они отображаются в соответствующих строках. Плюсы такого "монитора" очевидны - виден "нахлёст", т.е. про софтварном Xon-Xoff, когда У№1 шлёт посылку, а У№2 шлёт код DC3, чтоб её затормозить, видно, сколько байт "хвоста" следуют от У№1, пока он не остановится. Нужен промежуточный микроконтроллер с 2-мя последовательными портами (входами) и 2-мя буферами. Заполнились 2 буфера - выдать. Порт выдачи, понятное дело, должен иметь скорость как минимум в 2 раза выше наблюдаемых (какой-нибудь USB-UART на 500кбит). Изменено 18 мая, 2023 пользователем vvppvv Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 18 мая, 2023 Опубликовано 18 мая, 2023 (изменено) · Жалоба 49 minutes ago, vvppvv said: Нужен промежуточный микроконтроллер с 2-мя последовательными портами (входами) и 2-мя буферами В этом качестве успешно выступает ПК. vvppvv, мы с тобой делали одинаково, только в "железе" по разному реализовывали. И да, я так же по 2 строки попарно выдавал на экран. Последний раз подобным образом разбирали протокол обмена между ПК и ПЛК от Мицубиси, но там я отзеркалировал через виртуальный СОМ-порт между средой программирования и ПЛК, чтобы видеть Тх компьютера, и подключил его на одну консоль. На вторую консоль выводил сигнал с линии Тх ПЛК. На большом мониторе поставил окна двух терминалов рядом и наблюдал запрос от ПК на одной консоли, а на второй ответ. Протокол текстовый, так что проблем не было. Можно взять терминал, выводящий вместо символов байты в hex-виде. Кстати, ТС тоже можно взять 2 терминала с hex-отображением и поставить их окна рядом. Изменено 18 мая, 2023 пользователем tonyk_av Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quark 48 18 мая, 2023 Опубликовано 18 мая, 2023 · Жалоба 15 часов назад, MiklPolikov сказал: Есть два устройства, общающиеся по UART. Хочу сделать парсинг их протокола. Для этого, подключаю к компу 2шт USB-UART преобразователя. Пишу два лога данных, по линиям Rx и Tx. ... Спрашиваю, нет ли средства, что байты от 1го и 2ого устройства окрасить в разный цвет в одном логе ? Подключите по-другому ваши преобразователи: На вход первого преобразователя заведите только TX1 первого устройства. На вход второго преобразователя заведите объединенный сигнал "TX1 или TX2". Далее на ПК напишите программу, которая принимает трафик от обоих портов одновременно. Методом сравнения выделяет в общем, объединенном потоке трафик первого устройства и подсвечивает его другим цветом при выводе на экран. P.S. Естественно, предполагаем, что протокол организован по принципу "запрос-ответ". То есть, "встречная" передача исключается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 18 мая, 2023 Опубликовано 18 мая, 2023 · Жалоба Забудьте все, что вам тут понаписали. Китайский 8-канальный логический анализатор, стоящий копейки на али и лежащий (должен лежать, по крайней мере) в тумбочке у каждого разработчика позволит наблюдать и пересылаемые байты и временнЫе интервалы между ними. И, естественно, сохранять в файл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться