擅长:python、mysql、java
<p>值得注意的是,对<code>BAC0.device</code>的每个调用都依赖于<code>bacpypes</code>(处理BACnet通信的模块)在创建BACnet网络时创建的线程。这个线程使所有的网络调用一个接一个地执行。你知道吗</p>
<p>Bacpypes(因为BACnet的工作方式)将保持socket在运行期间保持打开状态,因此您将无法启动同时运行的多个BACnet实例。。。您将需要多个NIC(或任何其他允许打开新套接字的技巧)才能使其异步。你知道吗</p>
<p>如果你想提高速度,我想你会有更好的结果定义所有的设备全局,并使用自定义对象列表,以减少点数。你知道吗</p>
<p>一旦定义,所有设备都将在后台更新。然后你可以使用</p>
<pre><code>dev[“MyPoint”].lastValue
</code></pre>
<p>强制软件使用上次轮询的值的技巧(而不是强制在网络上进行新的读取)</p>
<p>如果您真的想使用异步并等待BACnet通信,您可能需要从bacpypes本身开始。我知道Joel正在考虑一种使模块异步化的方法,但这还很遥远。但是BAC0不过是bacpypes的“包装器”,它实际上是“同步的”。你知道吗</p>
<p>如果BAC0要在一个异步应用程序中使用,我认为有一些“方法”来处理同步的东西,但是这里结束了我关于异步的知识。你知道吗</p>
<p>顺便说一句,如果你在这方面取得了一些进展,请不要犹豫,顺道拜访Github并留下一些东西!我很想知道BAC0的用途。你知道吗</p>