2012-11-18 14 views
5

मुझे किस लाइब्रेरी का उपयोग करना चाहिए, और कैसे?मैं एक पायथन पुस्तकालय के साथ एक एक्सबीई में डेटा के तार कैसे भेज सकता हूं?

Python XBee केवल एपीआई मोड में कमांड भेजने में सक्षम प्रतीत होता है, और मुझे स्ट्रिंग भेजने के लिए इसका उपयोग करने वाले किसी का उदाहरण नहीं मिल रहा है। हो सकता है कि मैं एपीआई मोड क्या गलत समझ रहा हूं, लेकिन मुझे प्रलेखन में एक पेलोड नहीं मिल रहा है ...

Digi's Python Socket extensions पाइथन में पके हुए हैं? मुझे लगता है कि वे मेरे पाइथन (2.7.3 आरसी 2) में परिभाषित करने वाले किसी भी स्थिरांक को प्राप्त नहीं कर सकते हैं, और न ही मुझे यह पता चल सकता है कि इन एक्सटेंशन को उनकी साइट पर कैसे प्राप्त किया जाए। ऐसा लगता है कि तारों को पार करने का एक तरीका हो सकता है, लेकिन मैं इसका उपयोग कैसे करूं?

उत्तर

8

यदि एक्सबी कंप्यूटर से सीरियल डिवाइस के रूप में कनेक्ट है तो आप केवल pySerial जैसे सीरियल लाइब्रेरी का उपयोग कर सकते हैं। यहां एक प्रोजेक्ट से कुछ कोड स्निपेट दिए गए हैं जिन्हें मैंने अभी समाप्त किया है।

# Connect to Xbee 
self.ser = serial.Serial(port, baud, timeout=timeout) 

# Send data (a string) 
self.ser.write(packet) 

# Read data 
self.data += self.ser.read() 

हम पारदर्शी मोड में Xbees उपयोग कर रहे थे - प्रत्येक बाइट आप एक छोर पर लिखने पढ़ने के साथ दूसरे छोर पर दिख रहा है। एक विशेष Xbee पुस्तकालय की कोई ज़रूरत नहीं थी।

+0

तो XBee देखने के सीरियल पोर्ट पर XBee नेटवर्क पर कि स्ट्रिंग दोहराया जाएगा, और यह भी सभी डेटा यह धारावाहिक के लिए रिमोट XBees से प्राप्त करता है लिखना? मुझे लगता है कि दोनों एक्सबी को पारदर्शी मोड में होना चाहिए? –

+0

मैंने कभी भी दो Xbees के साथ सीधे संचार किया है, कभी भी बड़े नेटवर्क के साथ नहीं। यदि दोनों एक बाइट की तुलना में पारदर्शी मोड में हैं, तो आप एक छोर पर लिखते हैं, दूसरे सिरे पर सामान्य सीरियल की तरह दिखाई देंगे। – Tim

7

यदि आपके पास एक बहुत ही सरल सेटअप और केवल दो एक्सबीज़ हैं, तो यदि आप कुछ और जटिल हैं तो आप लाइब्रेरी से बेहतर हैं।

पायथन-एक्सबी लाइब्रेरी उपयोग करने में काफी सरल है लेकिन इसमें किसी भी प्रकार के व्यापक दस्तावेज की कमी है। भेजने के लिए और इसे का उपयोग सरल संदेश प्राप्त करने के लिए:

from xbee import XBee 
from serial import Serial 

PORT = '/dev/ttyUSB0' 
BAUD = 9600 

ser = Serial(PORT, BAUD) 

xbee = XBee(ser) 
# Send the string 'Hello World' to the module with MY set to 1 
xbee.tx(dest_addr='\x00\x01', data='Hello World') 

# Wait for and get the response 
print(xbee.wait_read_frame()) 

ser.close() 

आप ऐसा करके कमांड में भेज सकते हैं:

xbee.at(frame_id='A', command='MY') 
reply = xbee.wait_read_frame() 
print(reply) 

# Getting the integer value out of reply 
import struct  
print(struct.unpack('>h', reply['parameter'])[0]) 

आप किसी भी स्ट्रिंग के लिए frame_id सेट कर सकते हैं, और यह सही जबाब पहचान करने के लिए प्रयोग किया जाता है।

+0

मैंने हाल ही में पाइथन-एक्सबी (जिसे आप पाइप इंस्टॉल करते हैं) के प्रबंधन को संभाला है क्योंकि इसे वर्षों से अपडेट नहीं किया गया था। मैं पुल अनुरोधों को स्वीकार करने में प्रसन्न हूं जो दस्तावेज़ीकरण में सुधार करते हैं! https://github.com/nioinnovation/python-xbee/blob/master/docs/source/index.rst – hansmosh

0
ser = serial.Serial(SERIAL_PORT, 9600) 
bee = ZigBee(ser) # <-- 

एक्सबी के बजाय ज़िगबी का उपयोग करने का प्रयास करें, अगर यह विफल हो जाता है।

0

पहला सवाल यह है कि "क्या आप वाकई अपने डिवाइस एपीआई मोड में हैं?"। आप यह त्रुटि देख रहे हैं क्योंकि प्राप्त करने वाला अंत एक प्रकार का 'tx' (प्रकार 0x01) आ रहा है, जिसमें फ्रेम आ रहा है। हालांकि यह वह फ्रेम है जिसे आपने भेजा जाने का अनुरोध किया है, मुझे विश्वास है कि आप इसे 'आरएक्स' के रूप में प्राप्त करने की उम्मीद करेंगे प्राप्त करने के अंत तक '(0x81 टाइप करें)।

यदि आप /xbee/ieee.py में कोड देखते हैं तो आपको दो सूचियां दिखाई देगी: * api_commands = आउटगोइंग: आप कभी इन फ्रेम प्रकारों में से किसी एक को आने की उम्मीद नहीं करेंगे। * api_responses = आने वाली: आपको केवल इन फ्रेम प्रकारों को आने वाले देखना चाहिए।

पुस्तकालय का पता लगाता है api_commands में से एक कॉल आने पर यह त्रुटि आप देख फेंक देंगे: "Incoming frame with id 1 looks like a command frame of type 'tx' (these should not be received). Are you sure your devices are in API mode?"

मैं 100% अपनी स्थिति के बारे में सुनिश्चित नहीं कर रहा हूँ, लेकिन यह अपने निवर्तमान 'tx' फ्रेम अनुवाद नहीं किया जा रहा है की तरह लग रहा दूसरे छोर पर आने वाले 'आरएक्स' फ्रेम के लिए - संभवतः सभी एक्सबीआई पर एपीआई मोड सक्षम नहीं है?

इसके अलावा https://github.com/nioinnovation/python-xbee/issues/44

संबंधित मुद्दे

 संबंधित मुद्दे