Tôi có bộ tạo chức năng Hewlet Packard 33120A cũ (nó phải cùng loại với Agilent 33120A ) và tôi muốn điều khiển nó bằng MCU (ATMega). Trình tạo có RS232 và sử dụng các lệnh SCPI.
Tôi đã thực hiện bộ chuyển đổi RS232 sang TTL đơn giản với MAX 232, chỉ với các dòng RX và TX. Theo Hướng dẫn sử dụng (chương 4, phần Giao thức bắt tay DTR / DSR) Tôi đã gắn DSR với logic TRUE (điện áp âm) và DTR không được kết nối. Cấu hình này nên vô hiệu hóa bắt tay phần cứng.
Bây giờ, tôi có thể kết nối bộ chuyển đổi với MCU hoặc với máy tính. Đối với thử nghiệm đầu tiên của tôi, tôi đã sử dụng máy tính và tập lệnh Python này:
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()
Điều này hoạt động mà không có bất kỳ vấn đề. Máy phát đặt đầu ra 30kHz như mong đợi. Vấn đề là, khi tôi cố gắng đọc một số phản hồi từ trình tạo. Ví dụ: điều này sẽ trả về tên thiết bị:
s.write('*IDN?\n')
print s.realine()
Tôi khá chắc chắn rằng phản hồi được lưu trữ trong bộ đệm đầu ra của trình tạo nhưng không có dữ liệu nào thực sự được truyền đi.
Có lệnh nào để kích hoạt truyền dữ liệu từ bộ đệm không? Hoặc tôi cần kích hoạt bắt tay phần cứng?
Có ai có máy phát điện này không? Bạn có sử dụng nó với RS232 và SCPI không?
s.readline()
chức năng (tôi đã chỉnh sửa câu hỏi của mình, cảm ơn bạn).