Отправка КОМАНД и получение ответов (Чтение) из RADWAG WTC 2000 Scale с Pyserial / Python3 - PullRequest
0 голосов
/ 17 октября 2019

Мне очень жаль задавать подобные вопросы. Но мне удалось получить кое-что, но я не могу заставить его работать должным образом.

import serial

ser = serial.Serial(port='COM3', baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, timeout=1)
try:
    ser.isOpen()
    print("Serial port is open")
except:
    print("ERROR")
    exit()

if (ser.isOpen()):
    try:
        while (True):
            ser.write("S CR LF")
            print(ser.read())
    except:
        print("error")
else:
    print("Cannot open serial port")

Я узнал, что должен посылать некоторые команды для получения информации. https://imgur.com/Tburb5x https://imgur.com/ctRowoA https://imgur.com/WmkUOSe Это команды, которые я должен использовать, а затем проанализировать их, чтобы получить только результат. Это то, что я получаю, когда запускаю этот код. (Я знаю, я должен изменить «ser.Write (эта часть)», но я не знаю, как?)

Serial port is open
error

Process finished with exit code 0

1 Ответ

0 голосов
/ 18 октября 2019

Вы можете использовать исключения, чтобы узнать причину ошибки:

import serial
import sys

try:
    ser = serial.Serial(port='COM3', baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, timeout=1)
    while (True):
        ser.write(str.encode("S\r\n"))
        print(ser.read())
except serial.SerialException as e:
    print("serial error:", e)
except:
    print("other error:", sys.exc_info()[0])

Так что, если, например, вы используете неправильный порт, будет напечатано:

error: could not open port 'COM3': FileNotFoundError(2, 'The system cannot find the file specified.', None, 2)

Edit: проблема была в том, что write хочет массив байтов, а не строку. Хотя документы говорят, что строка в порядке (версия 2.5).

Важно не скрывать исключения. См .: О перехвате ЛЮБОГО исключения

...