Hasseb USB DALI Мастер и библиотека питонов python-dali - PullRequest
0 голосов
/ 28 июня 2018

У нас есть Hasseb USB Dali Master и мы пытаемся использовать библиотеку python (github.com/sde1000/python-dali). Но коды из раздела «Примеры» не работают.

Мы использовали Armbian Linux (операционная система на основе Ubuntu) Библиотека https://github.com/onitake/daliserver установлена.

Мы пытаемся запустить set_single.py отдельно.

$sudo python set_single.py
Traceback (most recent call last):
File "set_single.py", line 25, in <module> d.send(cmd)
File "build/bdist.linux-armv7l/egg/dali/driver/daliserver.py", line 43, in     send
File "/usr/lib/python2.7/socket.py", line 575, in create_connection raise err
socket.error: [Errno 111] Connection refused

И попробуйте запустить dalliserver в другом терминале.

$ sudo python server.py
('Connection address_:', ('127.0.0.1', 43653))
Traceback (most recent call last):
File "server.py", line 14, in <module>
s.bind((TCP_IP, TCP_PORT))
File "/usr/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use

(эта ошибка произошла при запуске set_single.py)

$ sudo python set_single.py
Traceback (most recent call last):
File "set_single.py", line 25, in <module>
d.send(cmd)
File "build/bdist.linux-armv7l/egg/dali/driver/daliserver.py", line 66, in   send
File "build/bdist.linux-armv7l/egg/dali/driver/daliserver.py", line 84, in unpack_response
struct.error: unpack requires a string argument of length 4

файл set_single.py

from dali.address import Broadcast
from dali.address import Short
from dali.gear.general import DAPC
from dali.driver.daliserver import DaliServer
import sys

if __name__ == "__main__":
    addr = Broadcast()
    level = int(150)
    d = DaliServer("localhost", 55825 )
    cmd = DAPC(addr, level)
    d.send(cmd)

файл server.py гнездо для импорта

TCP_IP = '127.0.0.1'
TCP_PORT = 55825
BUFFER_SIZE = 20  

while True:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((TCP_IP, TCP_PORT))
    s.listen(1)
    conn, addr = s.accept()

    try:
        print("Connection address_:", addr)
        while 1:
            conn.setblocking(0)
            conn.settimeout(20.0)
            data = conn.recv(BUFFER_SIZE)
            if not data:
                break
            stream = ":".join("{:02x}".format(ord(chr(c))) for c in data)
            print("received data: [{1}] {0}".format(stream, len(data)))
            conn.send(b"\x02\xff\x00\x00")
     except:
        pass
conn.close()
...