Hi,
I still havent managed to get it to work.
Someone able to help me a bit?
The code im running:
from pycampbellcr1000 import CR1000
import datetime
import os
import sys
import time
device = CR1000.from_url('Serial:COM3:38400')
print("Device is connected: %s" %device.connected)
print(device.gettime())
print(device.list_tables())
The actual error:
Traceback (most recent call last):
File "C:\Users\Makada\Desktop\cr1000.py", line 1, in <module>
from pycampbellcr1000 import CR1000
File "C:\Python\lib\site-packages\pycampbellcr1000\__init__.py", line 13, in <module>
from .logger import LOGGER, active_logger
File "C:\Python\lib\site-packages\pycampbellcr1000\logger.py", line 14, in <module>
from .compat import NullHandler
File "C:\Python\lib\site-packages\pycampbellcr1000\compat.py", line 94, in <module>
stdout = sys.stdout.buffer
AttributeError: 'StdOutputFile' object has no attribute 'buffer'
>>>
The code which is named in the error, line 13 in _init_.py
# -*- coding: utf-8 -*-
'''
PyCampbellCR1000
----------------
The public API and command-line interface to PyCampbellCR1000.
:copyright: Copyright 2012 Salem Harrache and contributors, see AUTHORS.
:license: GNU GPL v3.
'''
# Make sure the logger is configured early:
from .logger import LOGGER, active_logger
from .pakbus import PakBus
from .device import CR1000
VERSION = '0.4dev'
__version__ = VERSION
The code which is named in the error, line 14 in logger.py
# -*- coding: utf-8 -*-
'''
PyCampbellCR1000.logger
-----------------------
Logging setup.
:copyright: Copyright 2012 Salem Harrache and contributors, see AUTHORS.
:license: GNU GPL v3.
'''
from __future__ import unicode_literals
import logging
from .compat import NullHandler
LOGGER = logging.getLogger('pycampbellcr1000')
LOGGER.addHandler(NullHandler())
def active_logger():
'''Initialize a speaking logger with stream handler (stderr).'''
LOGGER = logging.getLogger('pycampbellcr1000')
LOGGER.setLevel(logging.INFO)
# Default to logging to stderr.
formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s ')
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
LOGGER.addHandler(stream_handler)
The code which generates the error ( line 94 )is shown below.
With kind regards.
# coding: utf8
'''
PyCampbellCR1000.compat
-----------------------
Workarounds for compatibility with Python 2 and 3 in the same code base.
:copyright: Copyright 2012 Salem Harrache and contributors, see AUTHORS.
:license: GNU GPL v3.
'''
import sys
# -------
# Pythons
# -------
# Syntax sugar.
_ver = sys.version_info
#: Python 2.x?
is_py2 = (_ver[0] == 2)
#: Python 3.x?
is_py3 = (_ver[0] == 3)
#: Python 3.0.x
is_py30 = (is_py3 and _ver[1] == 0)
#: Python 3.1.x
is_py31 = (is_py3 and _ver[1] == 1)
#: Python 3.2.x
is_py32 = (is_py3 and _ver[1] == 2)
#: Python 3.3.x
is_py33 = (is_py3 and _ver[1] == 3)
#: Python 3.4.x
is_py34 = (is_py3 and _ver[1] == 4)
#: Python 2.7.x
is_py27 = (is_py2 and _ver[1] == 7)
#: Python 2.6.x
is_py26 = (is_py2 and _ver[1] == 6)
# ---------
# Specifics
# ---------
if is_py2:
if is_py26:
from logging import Handler
class NullHandler(Handler):
def emit(self, record):
pass
from ordereddict import OrderedDict
else:
from logging import NullHandler
from collections import OrderedDict
from StringIO import StringIO
ord = ord
chr = chr
def to_char(string):
if len(string) == 0:
return bytes('')
return bytes(string[0])
bytes = str
str = unicode
stdout = sys.stdout
xrange = xrange
elif is_py3:
from collections import OrderedDict
from logging import NullHandler
from io import StringIO
ord = lambda x: x
chr = lambda x: bytes([x])
def to_char(string):
if len(string) == 0:
return str('')
return str(string[0])
str = str
bytes = bytes
stdout = sys.stdout.buffer
xrange = range
def is_text(data):
'''Check if data is text instance'''
return isinstance(data, str)
def is_bytes(data):
'''Check if data is bytes instance'''
return isinstance(data, bytes)