|
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
|
||||||||||||||||
Последовательный порт serial22.09.2020, 16:49. Показов 4107. Ответов 18
Метки нет (Все метки)
Ребят как можно посмотреть открыт ли порт или нет.
Допустим в фукнции нашли нужный COM и хочу проверить find_port = SEEK_PORT( scaners ) print(find_port) q=serial.Serial(find_port,9600).isOpen() #<===не работает,точнее вылетает.Но знаю что порт остался открытым,так как цикл не завершен в котором работал сканером штрих-кодов. print(q) Дело в том что в одном месте я подключил порт поработали и передумали и решили принудительно закрыть по Esc, то есть порт остался открытым и не могу закрыть.
while log: QtWidgets.QApplication.processEvents() while open_port0.inWaiting() > 0: ... То есть походу нельзя использовать для проверки serial.Serial(find_port,9600) так как пытается соединиться снова,но ничего не выходит. Добавлено через 13 минут Делали,делали,не доделали может передумали и вышли по кнопке Esc(то есть цикл не заверщен inWaiting()). Затем снова пытаемся делать дело пытаемся подключиться к порту,то прога вылетает. Короче по простому:нашли нужный порт и надо его закрыть.Возврат return не сработает,чтобы получить текущее соединение,так как мы принудительно вышли по esc. Добавлено через 1 час 43 минуты Закрыть,походу закрыл.Но повторно соединиться не могу почему то.
Добавлено через 39 минут Пишут что возможно дело в inWaiting().То есть команда посылает в систему ожидание сигнала. То есть не важно порт открыт или закрыт,но система ждет сигнала. Значит как то надо искусственно самому отправить завершающий сигнал в порт,можно ли такое сделать?
0
|
||||||||||||||||
| 22.09.2020, 16:49 | |
|
Ответы с готовыми решениями:
18
Управление ИБП через порт с помощью модуля serial
Qt и serial порт |
|
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,660
|
|
| 23.09.2020, 10:59 | |
|
0
|
|
|
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
|
|
| 23.09.2020, 11:02 [ТС] | |
|
kapbepucm,
0
|
|
|
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,660
|
||||||
| 23.09.2020, 11:05 | ||||||
|
Вылетает ли на строке 7, может вылет на строке 8?
ещё может поможет после строки 7 почитать, что в ser.error() Добавлено через 2 минуты покажите вывод:
0
|
||||||
|
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
|
|||||||||||
| 23.09.2020, 11:07 [ТС] | |||||||||||
|
kapbepucm, Именно на подключении вылетает,то есть open
kapbepucm, Такая же ошибка.
esc COM12 dsf False
0
|
|||||||||||
|
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,660
|
|
| 23.09.2020, 11:08 | |
|
0
|
|
|
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
|
|
| 23.09.2020, 11:13 [ТС] | |
|
kapbepucm, Ну open закомментирую то ошибок нет,не показывает никакой ошибки.
Добавлено через 4 минуты kapbepucm, Ситуация такая. Если все сделаю верно с портом,то есть пикаю сканером товары и прочее и правильно завершаю дело,то все ок,все как и должно работать. А хотелось бы выявить если пошло что-то не так или умышленно сами закрыли или напортачил юзер,то уже не подключиться снова к порту.Придется выходить из проги и снова входить. Вот и хочу наладить,если пошло не так то сначала надо как то закрыть,но порт вроде автоматом закрыт после каких то дел,может ожидает порт какого то сигнала,так как цикл то не завершили походу в inWaiting() вот и не знаю как все закрыть.
0
|
|
|
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,660
|
|
| 23.09.2020, 11:22 | |
|
видимо, какихто операций не хватает, помимо
serial.Serial(find_port,9600).close()Добавлено через 1 минуту может в цикле считавания можно добавить какито флаг, значение которого задавать в keyPressEvent, вместо close
0
|
|
|
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
|
|||||||||||
| 23.09.2020, 11:31 [ТС] | |||||||||||
|
kapbepucm, Походу можно и не закрывать serial.Serial(find_port,9600).close() Так как он и так закрыт уже получается.То что надо. Но не подключиться теперь.
kapbepucm,
Вот для теста я решил сразу проверить соединение в одном месте в событии Esc чтобы пока не заморачиваться с другим окном.
0
|
|||||||||||
|
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,660
|
|
| 23.09.2020, 11:35 | |
|
а что скрывается за
open_port0.inWaiting()?
0
|
|
|
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
|
||||||
| 23.09.2020, 11:44 [ТС] | ||||||
|
kapbepucm, для краткости
kapbepucm, Походу после закрытия порта он inWaiting() ожидает еще данных? Если бы мы завершили цикл как положено,то мне кажется проблем с повторным соединением не возникло бы. Вот и думаю а как закрыть это ожидание inWaiting(). Ну не писать же ser.inWaiting().close()
0
|
||||||
|
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,660
|
||
| 23.09.2020, 13:03 | ||
|
Добавлено через 6 минут а если заменить while open_port.inWaiting() > 0:на while open_port.isOpen() and open_port.inWaiting() > 0:Добавлено через 17 минут т.е. чтобы строка b = open_port.read()ни в коем случае не выполнялась без предварительной проверки на "открытость" open_port.isOpen()
0
|
||
|
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
|
|||||||||||
| 23.09.2020, 13:11 [ТС] | |||||||||||
|
kapbepucm, Попробовал. Вылетает все равно.
kapbepucm, Все правильно именно из за цикла вся херня.Потому что я попробовал так:
0
|
|||||||||||
|
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,660
|
||
| 23.09.2020, 13:34 | ||
print(serial.Serial(find_port,9600).isOpen()), если это вставить до строки 13, где происходит close()?
0
|
||
|
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
|
||||||
| 23.09.2020, 13:41 [ТС] | ||||||
|
kapbepucm, Та же ошибка. Вылет.
0
|
||||||
|
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,660
|
|
| 23.09.2020, 13:43 | |
|
идея такая: если тот экземпляр serial.Serial, c которым вы работаете в keyPressEvent, не является тем же самым, который "крутится" в цикле.
Добавлено через 1 минуту Что, если передать в keyPressEvent именно ту переменную open_port0 и там open_port0.close()?
0
|
|
|
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
|
||||||
| 23.09.2020, 13:52 [ТС] | ||||||
|
kapbepucm, Вы хотите где у меня в другой функции работает
Поэтому и думаю сейчас как добавить сигнал прямо в цикл чтобы установить переменную log в False. По логике сработало бы,но не знаю как добавить функцию keyPressEvent прямо в цикл,всегда его в классе размещал какого то окна.
0
|
||||||
|
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,660
|
||||||
| 23.09.2020, 14:01 | ||||||
|
чтото похожее на:
1
|
||||||
|
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
|
||||||
| 23.09.2020, 14:22 [ТС] | ||||||
|
kapbepucm, Ура я сделал. Вот как:
Вопрос закрыт,буду дорабатывать над красотой. Понятно что параметр G1 передавал через функции где у нас связано с портом,чтобы в цикле поставить. kapbepucm, спасибо что пытался помочь.плюсик поставлю все равно. Вопрос закрыт. Добавлено через 6 минут kapbepucm, Не нужно пытаться снова закрывать или открывать в esc,просто переменную выставить чтобы цикл закрыть. Все правильно было дело в цикле и он не давал снова подключиться,так как цикл бесконечный продолжал работать. Потому что если заново подключиться и нужно войти в этот же цикл, а он занят,работает с предыдущего подключения.
0
|
||||||
| 23.09.2020, 14:22 | |
|
Помогаю со студенческими работами здесь
19
Последовательный порт
Последовательный порт
Последовательный порт Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|