Последовательное общение внутри пользовательской библиотеки - PullRequest
0 голосов
/ 21 мая 2019

Я создал собственную библиотеку для связи со своей собственной доской.Коды в библиотеке работают, но когда я вызываю саму библиотеку, я получаю сообщение об ошибке.

Я предположил, что библиотека не работает, поэтому я добавил функцию печати в библиотеку.Кажется, что функция работает, и функции с последовательной связью - проблема.

Я проверил код связи сам, но он работает каждый раз.Предполагая, что при использовании serial в пользовательской библиотеке есть некоторые вещи, которые я не знаю.

iDealibrary.py

import serial
import time

ser=serial.Serial('COM5',9600)

def ConnectIdeaLab():
    ser.sendBreak()
    a=ser.read()
    b=ser.read()
    if(a==b'O' and b ==b'K' ):
        ser.write(b'b')
        ser.write(b'b')
        ser.write(b'b')
        ser.write(b'a')
        ser.write(b'a')
        c=ser.read()
        if(c==b'!'):
            ser.write(bytes([3]))
            print("iDeaLab Moduna Girildi!")
            time.sleep(0.005)
            ser.sendBreak()

#this is the connection function. 

def printanything(parametre):
    print("writing: ",parametre)

#this is the print function to check if library is working.

пример.py

import iDealibrary

iDealibrary.ConnectIdeaLab()
iDealibrary.printanything("selam")

#this does not work

Я ожидаю, что последний код подключится и напечатает iDealab moduna girildi.Вместо этого я получаю

raise SerialException("ClearCommError failed ({!r})".format(ctypes.WinError()))

1 Ответ

0 голосов
/ 22 мая 2019

Мне удалось решить проблему. Безумный физик прав, проблема в том, что последовательный порт остается открытым. Когда я пытаюсь перезапустить программу, она пытается открыть уже открытый порт.

После добавления функции CloseSerial в мою библиотеку и вызова ее на примере проблема решена.

#File name iDealibrary.py
def CloseSerial():
    ser.close()

#File name example.py
iDealibrary.ConnectIdeaLab()
iDealibrary.CloseSerial()
...