LINUX.ORG.RU

Python Serial

 ,


1

2

Итак есть устройство OPH-3001. Есть к ним драйвера для OC Windows и небольшая программа. С помощью USBpcap я отловил два состояния вкл (http://hostingkartinok.com/show-image.php?id=d31dd2ffa732c01ed7b221100f1979fe) и откл (http://hostingkartinok.com/show-image.php?id=9c6085811c4bf68facd66769dab98854) устройства. Я так понимаю при включении, на адрес 0x41 отсылается 1 байт, а при отключении, на тот же адрес отсылается 2 байта (можете бить сапогами если написал ахинею). [code = Python] import serial

port = serial.Serial('/dev/ttyUSB0')

Вопрос, как отсылать эти команды?! Буду благодарен если ткнете меня носом в нужное направление!


python serial работает только с USB-serial устройствами, а то что отловил ты - это работает через дрова. Ты пытаешься посмотреть теплое у мягенького

А что за драйвера? Если они и есть usb-serial, то тогда да, ты можешь слать - просто работает с портом, шли данные, заданные как в том что ты отловил, прямо в hex форме

Если тебя интересуют подробности, то напиши. Мне затруднительно понять что ты хочешь - как слать команды ты хотя бы нашел? это легко гуглится

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

По ссылкам не ходил, но если это действительно USB эмуль com-порта, то послать команду можно как-то так:

import serial
import struct

message = struct.pack('>B', 0x41)
...
port = serial.Serial('/dev/ttyUSB0')
port.write(message)
...
vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)

И да, в спеках OPH-3001 есть USB: Mini USB, Ver. 2.0, VCP, так что по идее должен работать через serial.

Только, насколько я понял тебе надо протокол NetO реализовать.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)
Ответ на: комментарий от anonymous

Для примера. Я не думаю, что там однобайтовый протокол.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)
Ответ на: комментарий от anonymous

tcp/udp сокетам и по rfc2217

Молодец, а я устройством самим не интересовался. Если есть rfc2217 и udp - хорошо, только к теме это отношения не имеет ;)

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

python serial работает только с USB-serial устройствами

ЛПП. Прекрасно работает с хардварными COM-портами.

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

Вы срееншоты посмотрите может я не правильно написал

ВКЛ bmRequestType: 0x41 либо это адрес на который нужно отослать либо это означает что команду нужно отсылать в ASCII (поправте если вы в этом шарите больше меня)

wLength 1 Ну а это длина команды для отправки типа устройство вкл

CONTROL response data: 01 ну а это сама команда

ВЫКЛ bmRequestType: 0x41

wLength 1

CONTROL response data: 02 здесь отсылаем не 01 а 02

prog1c
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Для работы с устройством его на вкл. Значит я должен для начала научиться отправлять ему команды на вкл и выкл. Так же необходимо сливать данные с базы самого ТСД но это уже будет проще. Вот сама прога: http://hostingkartinok.com/show-image.php?id=22b9f857eeb333eb008cdb5c51ca42c1

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

Поковырялся в мониторе портов (отдельное спасибо I-Love-Microsoft, за что его коммент удалили странно) и понял что отправляется не одни байт а 36. Буду ковыряться дальше

prog1c
() автор топика
Ответ на: комментарий от I-Love-Microsoft

с помощью программы Advanced Serial Port Monitor отловил запросы и ответы. Запрос: #01#06#3D#00#01#20#84#09#01#01#3E#00#01#06#3C#A5 Ответ: #01#02#20#00#16#00#01#00#02#00#00#00#0D#00#4F#70#74#69 #63#6F#6E#20#53#4D#41#52#54#5D#65

Теперь беру копирую запрос и отправляю уже ручками его и получаю #01#06#20#00#01#49#5B#A7

В чем проблема я не то отловил?!

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

Ты мог отловить не всё, нужно более подробно выяснить протокол. Может какой-то режим не включен перед этим.

К тому же, если есть затруднения с Python, то можно попытаться на более знакомом языке это провернуть.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от anonymous

Раз это уже второй наезд, то придется пояснить: если стоит задача работать с USB портом, то python serial будет работать только с USB-serial. То что он работает и с обычными портами, со всевозможными RFC2217/TCP/UDP после несложной настройки - это и так ясно.

Умным людям достаточно части информации, но вы похоже не из таких, раз приходится так разжевывать.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Посылаю с помощью проги 5 команд на очистку справочника

#01#01 #52 #00#03#0A#02#00 #0F#27 *************** #01#01 #69 #00#03#0A#02#00 #E3#09 *************** #01#01 #74 #00#03#0A#02#00 #B7#CE *************** #01#01 #75 #00#03#0A#02#00 #F2#6E *************** #01#01 #76 #00#03#0A#02#00 #3C#8E

Как видно 3-ий и 2 последних бита разные. Есть хоть какие то варианты как они рассчитываются?! Пробовал найти протокол работы с устройством 0 Написал в Атол производителю драйвера, послали на три советских буквы. Написал производителю устройства, послали к Атол всё равно что на х**.

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

Слушай, а что ты хочешь чтобы делало устройство? То что и задумано производителем, или что-то сверх того? Нет ли желания создать свое устройство аналогичного назначения для этой задачи?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

То что задумано производителем не более того. Желание есть, но до этого пока ещё далеко, штудирую пока тех-книги и статьи. Тут вот в одном pdf файле прочитал «Ни в коем случае не следует устанавливать дистрибутивы программы на SD карту.На многих моделях ТСД используется старый протокол работы с SD картой, из-за чего программа будет зависать при включении ТСД из спящего режима. Устанавливайте на SD карту только базу данных программы.» Что за старый протокол SD?! Копаю пока в этом направлении!

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