Eski Hewlet Packard 33120A fonksiyon üretecim var ( Agilent 33120A ile aynı tipte olmalı ) ve MCU (ATMega) ile kontrol etmek istiyorum. Jeneratör RS232'ye sahiptir ve SCPI komutlarını kullanır.
Sadece RX ve TX hatları ile MAX232 ile basit RS232'den TTL'ye dönüştürücü yaptım. Göre Kullanıcı rehberi (bölüm 4, bölüm DTR / DSR Tokalaşma Protokolü) Ben bağlı değil mantık TRUE (negatif gerilim) ve DTR için DSR bağladılar. Bu yapılandırma, donanım anlaşmasını devre dışı bırakmalıdır.
Şimdi, dönüştürücüyü MCU'ya veya bilgisayara bağlayabilirim. İlk denememde bilgisayar ve bu Python betiği kullandım:
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()
Bu sorunsuz çalışıyor. Jeneratör çıkışını beklendiği gibi 30kHz'e ayarladı. Sorun, jeneratörden bazı yanıtları okumaya çalıştığımda. Örneğin, bu cihazın adını döndürmelidir:
s.write('*IDN?\n')
print s.realine()
Yanıtın jeneratör çıktı tamponunda saklandığından eminim ama aslında hiçbir veri iletilmiyor.
Arabelleğe veri aktarımını tetikleyen herhangi bir komut var mı? Yoksa donanım anlaşmasını etkinleştirmem gerekiyor mu?
Bu jeneratöre sahip olan var mı? RS232 ve SCPI ile mi kullanıyorsunuz?
s.readline()
fonksiyon var (sorumu düzenledim, teşekkür ederim).