python чтение последовательного порта не будет работать в командном файле - PullRequest
0 голосов
/ 31 января 2020

Я написал сценарий python, который считывает данные из последовательного порта. Этот сценарий работает на компьютере windows. На другой стороне последовательного канала находится микроконтроллер с подключенной к нему камерой. Микроконтроллер после съемки сохраняет его в памяти fla sh и всякий раз, когда скрипт python отправляет запрос на эту картинку, он отправляет все данные в виде строк строк на последовательный порт, а затем скрипт анализирует эти данные и читать данные построчно и сохранять их в файл, который затем конвертировать в двоичный файл изображения. Всякий раз, когда я запускаю этот сценарий в Pycharm, он всегда работает без каких-либо пропущенных данных, но когда я создал пакетный файл для этого сценария и запускаю пакетный файл, иногда при чтении данных из последовательного порта возникают некоторые пропущенные данные, которые приводят к повреждению файла изображения. Формат данных, считываемых из последовательного порта, выглядит следующим образом:

20044478: 00 00 00 00 00 00 00 00 00 E0 01 80 02 3F 00 32

20044488: 12 0B 51 04 51 04 00 00 FF DB 00 84 00 10 0B 0C

20044498: 0E 0C 0A 10 0E 0D 0E 12 11 10 13 18 27 1A 18 16

200444A8: 16 18 30 22 24 1D 27 39 32 3C 3B 38 32 37 36 3F

200444B8: 47 5B 4D 3F 43 56 44 36 37 4F 6B 50 56 5E 60 65

200444C8: 66 65 3D 4C 6F 77 6E 62 76 5B 63 65 61 01 11 12

200444D8: 12 18 15 18 2E 1A 1A 2E 61 41 37 41 61 61 61 61

200444E8: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61

Часть кода, которая, я думаю, связана с этой проблемой, такова:

def wait_On_serial_camera_capture():
global ser
out_file = open('test.txt', 'w+')
line_read = ser.readline()
# # time.sleep(0.1)
if line_read == "":
    print ("Error in image capturing or problem in transferring image file to the PC !")
while line_read != "":
    line_read = ser.readline()
    # # time.sleep(0.1)
    # # print (line_read)
    sys.stdout.write(line_read)
    sys.stdout.flush()
    out_file.write(line_read)
out_file.close()
ser.close()

1 Ответ

0 голосов
/ 31 января 2020

Проверьте вашу среду.

Вы видите, что у pycharm своя собственная среда. Есть два модуля serial и pyserial, и они разные, и оба они могут быть импортированы как import serial. PS: В среде GNU / Linux для доступа к устройству вам необходимы права root.

...