Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 15, 2016 22:36:23

andrei186
Зарегистрирован: 2016-02-04
Сообщения: 90
Репутация: +  -1  -
Профиль   Отправить e-mail  

serial_for_url('/dev/ttyUSB0',do_not_open=False)

На Винде код

  
from serial import *
serial_port = serial_for_url('COM1',do_not_open=False);
print(serial_port)
возвращает
 
Serial<id=0x11de1f0, open=True>(port='COM1', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=False, dsrdtr=False)
А на Линуксе аналогичный
 
from serial import *
serial_port = serial_for_url('/dev/ttyUSB0',do_not_open=False);
print(serial_port)
Вообще ничего не возвращает, даже ошибку, хотя ttyUSB0 показывается в /dev

Почему?

Офлайн

#2 Фев. 15, 2016 23:17:10

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

serial_for_url('/dev/ttyUSB0',do_not_open=False)

А чеговы вы решили что /dev/ttyUSB0 именно ваш порт?
Пробовали запустить скрипт от рута?
Пробовали зацепиться в линксе консолью на етот порт? что-то дает?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Фев. 16, 2016 00:03:02

andrei186
Зарегистрирован: 2016-02-04
Сообщения: 90
Репутация: +  -1  -
Профиль   Отправить e-mail  

serial_for_url('/dev/ttyUSB0',do_not_open=False)

ZerG
А чеговы вы решили что /dev/ttyUSB0 именно ваш порт?
когда я втыкаю в комп устройство, с которым должна работать программа, в /dev выскакивает ttyUSB0

ZerG
Пробовали зацепиться в линксе консолью на етот порт? что-то дает?
Не понимайт! Можно по-русски? Каким местом консоли цепляются за порты?

Офлайн

#4 Фев. 16, 2016 04:19:58

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

serial_for_url('/dev/ttyUSB0',do_not_open=False)

ZerG
да с портом все в порядке, они именно так зовуться если подключать COM устройство через USB-com конвертор.
andrei186
а что если использовать обычный serial.Serial класс ?



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Фев. 16, 2016 09:56:55

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

serial_for_url('/dev/ttyUSB0',do_not_open=False)

да с портом все в порядке, они именно так зовуться если подключать COM устройство через USB-com конвертор.
Вы будете ОЧЕНЬ сильно удивлены если вам прийдется плотно работать в данном направлении особенно с китайскими переходниками или же устройствами имеющими несколько режимов работы, взять к примеру тот же свисток 3Г И так далее….

Попробуйте # screen /dev/ttyUSB0 9600
или minicom
убедитесь для начала что вы действительно обращаетесь на нужный адресс и данные хоть какието передаются



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#6 Фев. 16, 2016 11:08:55

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

serial_for_url('/dev/ttyUSB0',do_not_open=False)

ZerG
не удивлюсь)) работал. знаю.
andrei186
Еще нужно правильно параметры выставлять, за все случаи не скажу, но если выставить, например, не верную скорость порта - то устройство может даже не подать признаков жизни…



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Фев. 16, 2016 12:12:30

andrei186
Зарегистрирован: 2016-02-04
Сообщения: 90
Репутация: +  -1  -
Профиль   Отправить e-mail  

serial_for_url('/dev/ttyUSB0',do_not_open=False)

JOHN_16
andrei186а что если использовать обычный serial.Serial класс ?
Спасибо за намек, попробую. Однако прежде чем экспериментировать, хотел уточнить, что на другом РС, но с тем же Дебиан-8, программа работает. Значит на моем РС чего-то не хватает?
А вообще то, что
    from serial import *
serial_port = serial_for_url('/dev/ttyUSB0',do_not_open=False);
print(serial_port)
ничего не возвращает - это что значит? Что print(serial_port) вобще не выполнялся? Или выполнялся, но предыдущая функция
serial_port = serial_for_url('/dev/ttyUSB0',do_not_open=False)
вернула что-то такое, что print(serial_port) не смог переварить?

Отредактировано andrei186 (Фев. 16, 2016 12:13:27)

Офлайн

#8 Фев. 16, 2016 12:16:02

andrei186
Зарегистрирован: 2016-02-04
Сообщения: 90
Репутация: +  -1  -
Профиль   Отправить e-mail  

serial_for_url('/dev/ttyUSB0',do_not_open=False)

JOHN_16
нужно правильно параметры выставлять, за все случаи не скажу, но если выставить, например, не верную скорость порта - то устройство может даже не подать признаков жизни…
Какие парамеры, как узнать нужные их значения и где их выставлять - можете дать ссылку, где про это почитать? Или хотябы помогите правильно сформулировать вопрос Гуглу?

Офлайн

#9 Фев. 16, 2016 13:15:41

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

serial_for_url('/dev/ttyUSB0',do_not_open=False)

andrei186
Эти параметры должны быть указаны либо протоколом передачи данных, либо в паспорте/документации на устройство. Это все индивидуально. Например, GPS приемники работают на скорости 4800. Ряд устройств использует стандартное 9600. Я работаю с АЦП которое использует 19200.
andrei186
если ошибок ваш код не выдал, то тут сложно сказать что именно у вас происходит. Принт может ничего не выдать в случае пустой строки. Но все как то странно и не похоже на правду



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#10 Фев. 16, 2016 14:42:14

andrei186
Зарегистрирован: 2016-02-04
Сообщения: 90
Репутация: +  -1  -
Профиль   Отправить e-mail  

serial_for_url('/dev/ttyUSB0',do_not_open=False)

JOHN_16
если ошибок ваш код не выдал, то тут сложно сказать что именно у вас происходит. Принт может ничего не выдать в случае пустой строки. Но все как то странно и не похоже на правду
Значит у меня очевидное-невероятное.
Я изменил принт на
print(serial_port+“qwerty”)
Тогда если serial_for_url() вернул пустышку, то
print(serial_port+“qwerty”) должен вернуть хотябы “qwerty”. А он ичего не возвращает. Получается, что print() вообще не выполнялся. Значит serial_for_url() сотворил, что-то такое, что заблокировало выполнение print()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version