Найти - Пользователи
Полная версия: Как освободить ком порт
Начало » Python для новичков » Как освободить ком порт
1
ingfa_1981
Здравствуйте
Вопрос такого плана.
Написал скриптик который опрашивает ардуинку по ком порту.
Иногда ардуинка неправильно отвечает(как именно я еще разбираюсь) и скриптик зависает. Скриптик закрывается и все , теперь до следующей перегрузки я не могу воспользоваться ком портом. Ошибка отказано в доступе. Я пытаюсь прибить процесс
python в диспетчере задач, но он процесс никак не прибивается. Как мне освободить комп порт от плена зависшего скрипта python?
doza_and
ingfa_1981
Я пытаюсь прибить процесс
python в диспетчере задач, но он процесс никак не прибивается.
1. Что значит не прибивается? Как это выглядит?
2. Как вы запускаете процесс? От какого пользователя?
3. Вы хотите чтобы мы починили скрипт не видя его? По уму скрипт сам должен следить за тем чтобы завершиться в случае неудачек разного уровня. Чтото у вас там неправильно реализовано.
ingfa_1981
1. ALT CTRL DEL завершить процесс python.exe
2. Запускаю процесс от имени администратора винды win7 и завершаю процесс тоже от имени администратора.
3. Точно надо дописать ser.close в except. Да суть вопроса то не в скрипте я думаю больше в том как
прибить процесс. И чего это он не завершается даже администратором системы.
ingfa_1981
 import serial
import numpy as np
import time
nesushaya = 3400000.00
listChastot = [711.19, 703.89, 714.56, 702.58, 1339.06, 831.99, 1219.29, 1026.77, 967.92,905,93]
ser = serial.Serial(port='COM35', baudrate=115200, writeTimeout=0)
while True:
    for i in listChastot:
        print(("$&a{0}&b{1}&c{2}#".format(nesushaya, nesushaya - i, nesushaya + i)))
        try:
            ser.write(("$&a{0}&b{1}&c{2}#".format(nesushaya,nesushaya-i,nesushaya+i)).encode())
            time.sleep(1)
        except:
            ser.close()
            break
ser.close()
doza_and
ingfa_1981
И чего это он не завершается даже администратором системы.
Винда дело темное. У меня ее нет, и вам не советую. Некоторые тут высказываются что 2/3 времени при работе под виндой тратятся на преодоление глюков и нелогичностей в самой Винде.

Я бы рекомендовал почаще использовать менеджеры контекста. Если будет такая привычка, то проблем с освобождением ресурсов будет на порядок меньше.
https://pyserial.readthedocs.io/en/latest/shortintro.html
 #Also supported with context manager:
with serial.Serial() as ser:
    ser.baudrate = 19200
    ser.port = 'COM1'
    ser.open()
    ser.write(b'hello')
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB