Python 3.X pycomm.ab_comm.clx CommError: должен быть str, а не байтами - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь подключить PYCOMM к моему процессору CLX 5000. Каждый раз, когда я запускаю свой код, я получаю: CommError: должен быть str, а не байты. Я просмотрел весь код, и я не могу найти, где проблема. Все, что должно быть в строковом формате. Я использую python3.6 Вот код:

import sys
from pycomm.ab_comm.clx import Driver as ClxDriver


c = ClxDriver()


if c.open('172.16.2.161'):
    print(c.read_tag('Start'))
    # Prints (1,'BOOL') if true; (0,'BOOL') if false
    c.close()

Вот ошибка:

C: \ Users \ shirley \ Miniconda3 \ python.exe C: /Users/shirley/Downloads/pycomm-pycomm3/pycomm-pycomm3/examples/test_clx_comm.py Traceback (последний вызов был последним): Файл "C: \ Users \ shirley \ Miniconda3 \ lib \ site-packages \ pycomm \ cip \ cip_base.py", строка 617, в build_header h + = pack_uint (length) # Длина UINT Ошибка типа: должна быть str, а не байтами

    The header is 24 bytes fixed length, and includes the command and the length of the optional data portion.

     :return: the headre
    """
    try:
        h = command                                 # Command UINT
        **h += pack_uint(length)                      # Length UINT**
        h += pack_dint(self._session)                # Session Handle UDINT
        h += pack_dint(0)                           # Status UDINT
        h += self.attribs['context']                # Sender Context 8 bytes
        h += pack_dint(self.attribs['option'])      # Option UDINT
        return h
    except Exception as e:
        raise CommError(e)

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

Traceback (последний вызов был последним): Файл "C: \ Users \ shirley \ Miniconda3 \ lib \ site-packages \ pycomm \ cip \ cip_base.py", строка 786, в открытом виде если self.register_session () равен None: Файл "C: \ Users \ shirley \ Miniconda3 \ lib \ site-packages \ pycomm \ cip \ cip_base.py", строка 635, в register_session self._message = self.build_header (ENCAPSULATION_COMMAND ['register_session'], 4) Файл "C: \ Users \ shirley \ Miniconda3 \ lib \ site-packages \ pycomm \ cip \ cip_base.py", строка 624, в build_header поднять CommError (e) pycomm.cip.cip_base.CommError: должен быть str, а не байты

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

Traceback (последний вызов был последним): Файл "C: /Users/shirley/Downloads/pycomm-pycomm3/pycomm-pycomm3/examples/test_clx_comm.py", строка 5, в если c.open ('172.16.2.161'): Файл "C: \ Users \ shirley \ Miniconda3 \ lib \ site-packages \ pycomm \ cip \ cip_base.py", строка 793, в открытом виде поднять CommError (e) pycomm.cip.cip_base.CommError: должен быть str, а не байты

Процесс завершен с кодом выхода 1

Ответы [ 3 ]

0 голосов
/ 12 июня 2019

У меня была такая же проблема:

TypeError: должно быть str, а не байтами.


Ошибка в том, что вы используете Python 3.x, и я сделал то же самое: я использовал Python 3.6 вместо Python 2.6 или 2.7.

Измените Python 3.x на 2.6 или 2.7 (я использовал 2.7).

0 голосов
/ 12 июля 2019

Эта ошибка была недавно исправлена ​​

0 голосов
/ 01 ноября 2018

После того, как я ударился головой о стену, пытаясь понять это самостоятельно. Я только что перешел на использование PYLOGIX https://github.com/dmroeder/pylogix Это сработало с первого раза и довольно быстро.

...