|
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
|
||||||||||||||||
Последовательный порт serial22.09.2020, 16:49. Показов 4007. Ответов 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 порт |
|
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
|
|
| 23.09.2020, 10:59 | |
|
0
|
|
|
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
|
|
| 23.09.2020, 11:02 [ТС] | |
|
kapbepucm,
0
|
|
|
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
|
||||||
| 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
|
|||||||||||
|
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
|
|
| 23.09.2020, 11:08 | |
|
0
|
|
|
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
|
|
| 23.09.2020, 11:13 [ТС] | |
|
kapbepucm, Ну open закомментирую то ошибок нет,не показывает никакой ошибки.
Добавлено через 4 минуты kapbepucm, Ситуация такая. Если все сделаю верно с портом,то есть пикаю сканером товары и прочее и правильно завершаю дело,то все ок,все как и должно работать. А хотелось бы выявить если пошло что-то не так или умышленно сами закрыли или напортачил юзер,то уже не подключиться снова к порту.Придется выходить из проги и снова входить. Вот и хочу наладить,если пошло не так то сначала надо как то закрыть,но порт вроде автоматом закрыт после каких то дел,может ожидает порт какого то сигнала,так как цикл то не завершили походу в inWaiting() вот и не знаю как все закрыть.
0
|
|
|
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
|
|
| 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
|
|||||||||||
|
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
|
|
| 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
|
||||||
|
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
|
||
| 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
|
|||||||||||
|
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
|
||
| 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
|
||||||
|
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
|
|
| 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
|
||||||
|
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
|
||||||
| 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
Последовательный порт
Последовательный порт
Последовательный порт Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|