[ /b/ /u/ /rf/ /dt/ /vg/ /r/ /cr/ /lor/ /mu/ /oe/ /s/ /w/ /hr/ ] [ /a/ /ma/ /sw/ /hau/ /azu/ ] [ /tv/ /cp/ /gf/ /bo/ /di/ /vn/ /ve/ /wh/ /fur/ /to/ /bg/ /wn/ /slow/ /mad/ ] [ /d/ /news/ ] [ Главная | Настройки | Закладки | Плеер ]

Ответ в тред 49030. [Назад]
 [ Скрыть форму ]
Имя
Не поднимать тред 
Тема
Сообщение
Капча Капча
Пароль
Файл
Вернуться к
  • Публикация сообщения означает согласие с условиями предоставления сервиса
  • В сообщениях можно использовать разметку wakabamark
  • На данной доске отображаются исходные имена файлов!
  • Разрешенные типы файлов: pdf, code, flash, video, text, archive, image, vector, music
  • Тред перестает подниматься после 500 сообщений.
  • Треды с числом ответов более 100 не могут быть удалены.
  • Старые треды перемещаются в архив после 40 страницы.

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


Пароль:

[ /b/ /u/ /rf/ /dt/ /vg/ /r/ /cr/ /lor/ /mu/ /oe/ /s/ /w/ /hr/ ] [ /a/ /ma/ /sw/ /hau/ /azu/ ] [ /tv/ /cp/ /gf/ /bo/ /di/ /vn/ /ve/ /wh/ /fur/ /to/ /bg/ /wn/ /slow/ /mad/ ] [ /d/ /news/ ] [ Главная | Настройки | Закладки | Плеер ]