擅长:python、mysql、java
<p>最简单的方法是在Raspberry上并行启动另一个Python进程(类似于笔记本电脑的脚本),处理从膝上型电脑接收到的消息。在</p>
<p>但如果您想在一个脚本中实现所有内容,您可以通过实现第一个片段(发布传感器数据)来扩展第二个代码片段(处理消息)。在</p>
<p>当然,在这种情况下,不能使用<strong>loop_forever()</strong>。当您调用loop_forever()时,它在客户端调用disconnect()之前永远不会返回,因此您无法处理收到的消息(主线程被阻塞)。Paho客户端也有例程<strong>loop()</strong>和<strong>loop_start()/loop_stop()</strong>来控制网络循环。
看看他们:</p>
<p>1)函数<strong>loop()</strong>可以将timeout作为参数。它将阻塞,直到新消息到达或超时。在第一种情况下-预处理接收到的消息并计算到下一次发布之前的时间。再次将此时间作为参数传递给loop()。在第二种情况下,只需发布数据并调用loop(),直到下一次发布(在您的示例中为2秒)。在</p>
<p>2)<strong>loop_start()/loop_stop()</strong>启动和停止后台线程,为您发送和接收(和处理)数据。创建客户端,在回调函数上注册<em>。主线程现在是免费的-使用它与第一个片段的逻辑(循环2秒睡眠)。在</p>