मेरे पास पुराने हेवलेट पैकर्ड 33120 ए फंक्शन जनरेटर है (यह एगिलेंट 33120 ए जैसा ही होना चाहिए ) और मैं इसे एमसीयू ( एटीएमएगा ) से नियंत्रित करना चाहूंगा। जनरेटर में RS232 है और SCPI कमांड का उपयोग करता है।
मैंने सरलतम आरएस 232 को टीएक्सएल कनवर्टर के साथ MAX232 के लिए बनाया, सिर्फ आरएक्स और TX लाइनों के साथ। के अनुसार उपयोगकर्ता की गाइड (अध्याय 4, अनुभाग डीटीआर / DSR सहभागिता प्रोटोकॉल) मैं तर्क सही (नकारात्मक वोल्टेज) और डीटीआर के लिए DSR जुड़ा हुआ नहीं है बंधे। यह कॉन्फ़िगरेशन हार्डवेयर हैंडशेक को अक्षम करना चाहिए।
अब, मैं कनवर्टर को MCU या कंप्यूटर से जोड़ सकता हूं। अपने पहले प्रयोग के लिए मैंने कंप्यूटर और इस पायथन स्क्रिप्ट का उपयोग किया:
import serial, sys, time
if __name__ == '__main__':
if len(sys.argv) < 2:
print 'Usage: %s <serial_port>' % sys.argv[0]
sys.exit(1)
s = serial.Serial(port=sys.argv[1], baudrate=2400, bytesize=8, parity='N', stopbits=2, timeout=None, xonxoff=0, rtscts=0)
time.sleep(0.5)
s.write('\n*CLS\n')
time.sleep(0.5)
s.write('SYST:REM\n')
time.sleep(0.5)
s.write('APPL:SIN 30E+3, 0.1\n')
s.close()
यह बिना किसी समस्या के काम करता है। जनरेटर ने अपने उत्पादन को उम्मीद के मुताबिक 30kHz पर सेट किया। समस्या यह है, जब मैं जनरेटर से कुछ प्रतिक्रिया पढ़ने की कोशिश करता हूं। उदाहरण के लिए, यह डिवाइस नाम वापस करना चाहिए:
s.write('*IDN?\n')
print s.realine()
मुझे पूरा यकीन है कि प्रतिक्रिया जनरेटर के आउटपुट बफर में संग्रहीत है लेकिन कोई डेटा वास्तव में प्रेषित नहीं होता है।
क्या बफर से डेटा ट्रांसमिट करने के लिए कोई कमांड है? या क्या मुझे हार्डवेयर हैंडशेक सक्षम करने की आवश्यकता है?
क्या कोई है जिसके पास यह जनरेटर है? क्या आप इसे RS232 और SCPI के साथ उपयोग करते हैं?
s.readline()
फंक्शन है (मैंने अपना प्रश्न संपादित किया, धन्यवाद)।