2015-01-31 6 views
0

Я использую библиотеку python под названием Bacpypes, чтобы читать точки bacnet в сети. В моем первом испытании чтения моих точек с функцией MultipleReadProperty нет проблем. Я получаю все значения без каких-либо проблем. Но во втором опросе я получаю сообщение об ошибке о розетке, как следующее:Errno 10048 при попытке снова прочитать из сети через Bacpypes

[0.0, 1149064.0, 1941115.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13525024.0, 448152.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] 
[31/Jan/2015:11:39:33] HTTP Traceback (most recent call last): 
    File "C:\Python27\lib\site-packages\cherrypy\_cprequest.py", line 670, in respond 
    response.body = self.handler() 
    File "C:\Python27\lib\site-packages\cherrypy\lib\encoding.py", line 217, in __call__ 
    self.body = self.oldhandler(*args, **kwargs) 
    File "C:\Python27\lib\site-packages\cherrypy\_cpdispatch.py", line 61, in __call__ 
    return self.callable(*self.args, **self.kwargs) 
    File "C:\Users\Sansal\Desktop\Projeler\sayac_okuma8\main2.py", line 231, in sayac_oku 
    readings_from_counters=ReadCounters(counters_list) 
    File "C:\Users\Sansal\Desktop\Projeler\sayac_okuma8\main2.py", line 153, in ReadCounters 
    this_application = ReadPointListApplication(points_list, this_device, args.ini.address) 
    File "C:\Users\Sansal\Desktop\Projeler\sayac_okuma8\main2.py", line 43, in __init__ 
    BIPSimpleApplication.__init__(self, *args) 
    File "C:\Python27\lib\site-packages\bacpypes-0.10.6-py2.7.egg\bacpypes\app.py", line 555, in __init__ 
    self.mux = UDPMultiplexer(self.localAddress) 
    File "C:\Python27\lib\site-packages\bacpypes-0.10.6-py2.7.egg\bacpypes\bvllservice.py", line 85, in __init__ 
    self.directPort = udp.UDPDirector(self.addrTuple) 
    File "C:\Python27\lib\site-packages\bacpypes-0.10.6-py2.7.egg\bacpypes\udp.py", line 144, in __init__ 
    self.bind(address) 
    File "C:\Python27\lib\asyncore.py", line 342, in bind 
    return self.socket.bind(addr) 
    File "C:\Python27\lib\socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
error: [Errno 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted. 

Как видно на первой линии, я получаю все значения из сети без проблем.

Чтобы решить проблему, я использовал функцию stop() библиотеки Bacpypes в нескольких точках кода. Особенно перед кодом, который начинает опрос. Но, похоже, я не могу как-то закрыть сокет. Не могли бы вы предложить некоторые предложения по этой проблеме?

Заранее спасибо.

+0

посмотреть [здесь] (http://stackoverflow.com/questions/12362542/python-server-only-one-usage-of-each -socket-address-is-normal-allowed) – Ethaan

+0

Хорошо, я сделал это. Но теперь я получаю errorno 10035. –

+0

вы можете обновить вопрос с новой ошибкой? – Ethaan

ответ

1

Bacpypes недавно был обновлен до версии 0.15, и в документации было сделано много усилий. Там появилось много новых функций, и код был упрощен для типичных вещей, таких как whois, IAm.

Я предлагаю вам посмотреть http://bacpypes.readthedocs.io/en/latest/

и здесь: https://github.com/JoelBender/bacpypes/blob/master/samples/MultipleReadProperty.py

Я также могу предложить BAC0 (http://bac0.readthedocs.io/en/latest/), который построен на вершине bacpypes и обеспечить вне из коробки функций, связь с устройствами BACnet. (Отказ от ответственности: BAC0 - это мой проект, и я являюсь автором bacpypes)

+0

Большое спасибо, мистер Тремблей .. –