Saya memiliki generator fungsi Hewlet Packard 33120A lama (harus sama dengan Agilent 33120A ) dan saya ingin mengendalikannya dengan MCU (ATMega). Generator memiliki RS232 dan menggunakan perintah SCPI.
Saya membuat RS232 to TTL converter sederhana dengan MAX232, hanya dengan jalur RX dan TX. Menurut panduan Pengguna (bab 4, bagian DTR / DSR Handshake Protocol) saya mengikat DSR ke logika TRUE (tegangan negatif) dan DTR tidak terhubung. Konfigurasi ini harus menonaktifkan jabat tangan perangkat keras.
Sekarang, saya dapat menghubungkan konverter ke MCU atau ke komputer. Untuk percobaan pertama saya, saya menggunakan komputer dan skrip Python ini:
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()
Ini berfungsi tanpa masalah. Generator menetapkan output ke 30kHz seperti yang diharapkan. Masalahnya adalah, ketika saya mencoba membaca beberapa respons dari generator. Misalnya, ini harus mengembalikan nama perangkat:
s.write('*IDN?\n')
print s.realine()
Saya cukup yakin responsnya disimpan dalam buffer output generator tetapi tidak ada data yang benar-benar dikirim.
Apakah ada perintah untuk memicu pengiriman data dari buffer? Atau apakah saya perlu mengaktifkan jabat tangan perangkat keras?
Adakah yang punya generator ini? Apakah Anda menggunakannya dengan RS232 dan SCPI?
s.readline()
fungsi (saya mengedit pertanyaan saya, terima kasih).