我正在使用Python構建的大規模嵌入式系統上工作,我們正在使用ZeroMQ將所有模塊化。我有跨越ZeroMQ串行端口發送在Python字典的形式的傳感器數據,如下所示:如何隱藏到Python中的字典
accel_com.publish_message({"ACL_X": ACL_1_X_val})
哪裏accel_com是我們建立了一個通訊器類,包裝了通過端口發佈消息的ZeroMQ邏輯。在這裏你可以看到我們正在發送字典。
然而,在通信端口的另一面,我有一個使用此代碼抓住這個數據的另一個模塊:
accel_msg = san.get_last_message("sensor/accelerometer")
accel.ax = accel_msg.get('ACL_X')
accel.ay = accel_msg.get('ACL_Y')
accel.az = accel_msg.get('ACL_Z')
問題是,當我試圖把accel_msg Python字典,我得到一個錯誤:
'NoneType' object does not have a method 'get()'.
所以我的猜測是字典沒有正確穿過電線。我對Python不是很熟悉,所以我不知道如何解決這個問題。
錯誤消息說'accel_msg'返回'None'。如在沒有數據的情況下 – mhlester
對ZeroMQ並不十分熟悉,但是如果您在沒有ACL_Y字段的消息上調用accel_msg.get('ACL_Y'),會發生什麼?那會返回'沒有'嗎? –
但現在如果我自己打印'accel_msg',它會打印出這個:'{'timestamp':1391630244.242758,'message_number':9285,'ACL_Z':-267,'module_name':'sensor/accelerometer' }' –