[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.49030 Reply
Привет, /s/. Есть у меня дачтик, который цепляется к компу последовательному порту через USB, в винде используется драйвер Prolific версии 3.2.0, который маскирует USB порт в COM порт. К датчику есть программа платная от производителя, которая общаетя с этим датчиком и позволяет его конфигурировать. Хочу не платить производителю и сделать свою программу хотя бы для считывания показаний датчика. Поставил себе программу, которая мониторит обмен данными с датчиком, т.е. я вижу все байты, которые пишутся в порт программой и которые возвращает датчик.
Попробовал на линуксе с помощью программы jpnevulator посылать в датчик те же самые байты, но ответа от датчика не получаю. Подскажи, /s/, как быть, куда копать?
>> No.49031 Reply
>>49030
Снимаешь дамп мусора который там гонется.
Раз это RS232, значит контроль что там гонится - полностью на том кто разрабатывал протокол.
Значит, как минимум, можно попробовать полученный байтомусор разбить на отдельные пакеты (100% вначале каждого пакета есть или ID, или длина, или 0xC0).
После этого пытаться понять отличаются ли пакеты для одних и тех-же действий.
Если отличаются, то, есть не нулевая вероятность, что данные шифруются каким-нибудь AES/RSA. Тогда придется ковыряться в их программе и разбираться где достать ключи...
>> No.49033 Reply
>>49031
Пока мне до этого далеко, т.к. затык на данном этапе в том, чтобы хотя бы послать в датчик те же самые первые байты, которые посылает программа производителя и получить ответ тот же самый. Я написал вот такой код чтобы проверить функциональность (файл exchange.c), обмен данными с портом через виндовскую программу представлен в файле exchange.csv (ссылки https://drive.google.com/drive/folders/0B-YxVplzBNLTRWRSV0lYMWN6UVU?usp=sharing) почему-то к посту не могу прикрепить. В файле exchange.c я пытаюсь записать 56 байт в порт, которые записывает виндовская программа и получить ответ от нее. Запись проходит нормально, а чтение нет - выдает ошибку 11. Скорее всего, что это из-за того, что неправильно настроена структура termios, я пытался также устанавливать поля, как это сделано в виндовской программе, но не помогло. /s/, может ты сможешь помочь мне?
>> No.49034 Reply
>>49033
Попробуй сперва просто подключиться какой-нибудь терминальной программой и послать эти байты. Под виндой есть старый хрюшный гипертерминал, под линух не знаю. разве что собственный древний велосипед на кутях скомпилить
>> No.49036 Reply
>>49034
пробовал на линухе с помощью jpnevulator - не вышло. Байты как будто посылаются, но на чтение ничего не приходит. Под виндой подключался с помощью "serial port monotor" для мониторинга обмена данными между устройством и программой производителя, по выводам программы "serial port monitor" и написал свой код, но он не работает


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]