LINUX.ORG.RU

Заслать хексы в серийный порт


0

0

Проблема в следующем. Мой телефон при подключении к USB-кабелю не умеет начинать заряжаться автоматчески. В телефоне проблема, или в кабеле - не в этом суть.
Чтобы решить проблему под виндами существует софтина, которая чего-то там в порт пишет, и зарядка включается.
Я нарыл portmon, и им записал всё, что проходит через порт в момент работы программы - лог в конце.
Додумался до использования echo "text" > /dev/ttyUSB0, но оно не прокатило, ибо я не знаю как писать туда значения байтов в хексах (IRP_MJ_WRITE Serial2 Length 6: 55 55 55 55 04 01).


IRP_MJ_CREATE Serial2 Options: Open
IOCTL_SERIAL_GET_BAUD_RATE Serial2
IOCTL_SERIAL_GET_LINE_CONTROL Serial2
IOCTL_SERIAL_GET_CHARS Serial2
IOCTL_SERIAL_GET_HANDFLOW Serial2
IOCTL_SERIAL_GET_TIMEOUTS Serial2
IOCTL_SERIAL_SET_TIMEOUTS Serial2 RI:1000 RM:1 RC:200 WM:0 WC:0
IOCTL_SERIAL_GET_BAUD_RATE Serial2
IOCTL_SERIAL_GET_LINE_CONTROL Serial2
IOCTL_SERIAL_GET_CHARS Serial2
IOCTL_SERIAL_GET_HANDFLOW Serial2
IOCTL_SERIAL_SET_BAUD_RATE Serial2 Rate: 9600
IOCTL_SERIAL_SET_RTS Serial2
IOCTL_SERIAL_SET_DTR Serial2
IOCTL_SERIAL_SET_LINE_CONTROL Serial2 StopBits: 1 Parity: NONE WordLength: 8
IOCTL_SERIAL_SET_CHAR Serial2 EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
IOCTL_SERIAL_SET_HANDFLOW Serial2 Shake:1 Replace:40 XonLimit:2048 XoffLimit:512
IOCTL_SERIAL_PURGE Serial2 Purge: TXCLEAR RXCLEAR
IOCTL_SERIAL_GET_BAUD_RATE Serial2
IOCTL_SERIAL_GET_LINE_CONTROL Serial2
IOCTL_SERIAL_GET_CHARS Serial2
IOCTL_SERIAL_GET_HANDFLOW Serial2
IOCTL_SERIAL_GET_BAUD_RATE Serial2
IOCTL_SERIAL_GET_LINE_CONTROL Serial2
IOCTL_SERIAL_GET_CHARS Serial2
IOCTL_SERIAL_GET_HANDFLOW Serial2
IOCTL_SERIAL_SET_BAUD_RATE Serial2 Rate: 9600
IOCTL_SERIAL_SET_RTS Serial2
IOCTL_SERIAL_CLR_DTR Serial2
IOCTL_SERIAL_SET_LINE_CONTROL Serial2 StopBits: 1 Parity: NONE WordLength: 8
IOCTL_SERIAL_SET_CHAR Serial2 EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
IOCTL_SERIAL_SET_HANDFLOW Serial2 Shake:0 Replace:40 XonLimit:2048 XoffLimit:512
IRP_MJ_WRITE Serial2 Length 6: 55 55 55 55 04 01
IRP_MJ_FLUSH_BUFFERS Serial2
IRP_MJ_CLEANUP Serial2
IRP_MJ_CLOSE Serial2


Сохраняешь последовательность HEX'ов в файл и попробуй одно из двух:
1. # cat <myfile > /dev/ttyUSB0
2. # echo <myfile > /dev/ttyUSB0

Zak ★★
()
Ответ на: комментарий от Conquer

В mc по F3 запускаешь viewer, он умеет редактировать файлы в HEX (нажать надо F4).

P.S. echo работать не будет юзай cat.

Zak ★★
()

>Додумался до использования echo "text" > /dev/ttyUSB0, но оно не
>прокатило, ибо я не знаю как писать туда значения байтов в хексах
>(IRP_MJ_WRITE Serial2 Length 6: 55 55 55 55 04 01).

Естественно ничего писаться не будет, даже если ты пошлеш туда нужные
байты, инициализировать коммуникационное соеденение Пушкин будет?
Тебе же дамп явно указывает скорость порта 9600, XONXOFF и 8N1,
пока это не установишь, твой телефон ничего принимать на порт не
будет... Вообщем, perl тебе поможет, у него есть модули для работы
с портами...




McMCC ★★★
()
Ответ на: комментарий от McMCC

Да на кой болт perl. Извращенцы... Читать linux serial programming how to. полчаса разбора полетов и все работает на ура :)

anonymous
()
Ответ на: комментарий от anonymous

>Да на кой болт perl. Извращенцы... Читать linux serial programming how
>to. полчаса разбора полетов и все работает на ура :)

Где ты увидел извращение? Пару строчек на перле для проверки за
несколько минут - это извращение? Вот уж чего, чего, на С это гораздо
извращеннее выглядит...

McMCC ★★★
()
Ответ на: комментарий от McMCC

Покажи!
Я пытался на C сделать из примеров, да видать чего-то не понимаю.
Я ему кидаю комбинацию? а он мне её назад возвращает. Фигня какая-то.

Conquer
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.