Разбор последовательных данных по TCP / IP из WIZ110SR в Python - PullRequest
0 голосов
/ 29 января 2019

В настоящее время я настраиваю свою новую метеостанцию ​​с разъемом RS232 и хочу проанализировать ее данные из преобразователя WIZ110SR Serial-to-TCP / IP, используя python.

Я уже подключил еенапрямую через адаптер Serial-USB, который работает безупречно с использованием этого кода:

def read_serial():
    serialport.flushInput()
    serialport.flushOutput()
    while True: 
        data = serialport.readline()
        try:
            data = data.decode("utf-8").strip()
            print(data)
        except:
            print("This string does not comply with the UTF-8 standard")

Это код, который я получил до сих пор, используя носки для сбора необработанных последовательных данных из WIZ110SR

def read_serial():
    dstrng = ""
    while True:
        data = s.recv(1024) 
        dstrng += data.decode("utf-8")
        try:
            dstrng = dstrng.rstrip()
            dstrng = dstrng.strip()
            print(dstrng)
        except:
            print("This string does not comply with the UTF-8 standard")

При использовании варианта socks кажется, что необработанные данные могут быть прочитаны только символом char

1 Ответ

0 голосов
/ 30 января 2019

У нас не было возможности проверить это, но вы можете попробовать использовать socket.makefile (), чтобы придать вашему сокету файловое качество, чтобы readline работал, например:

после создания сокета:

    f = s.makefile() # do this once

затем для получения данных:

    while True:
        data = f.readline()
        try:
            data = data.decode("utf-8").strip()
            print(data)
        except:
            print("This string does not comply with the UTF-8 standard")

, хотя, если ваш сокет неблокирует (имеет тайм-аут), это может не сработать.YMMV, так что попробуй.

...