У меня есть старый генератор функций Hewlet Packard 33120A (он должен быть того же типа, что и Agilent 33120A ), и я хотел бы управлять им с помощью MCU (ATMega). Генератор имеет RS232 и использует команды SCPI.
Я сделал простой конвертер RS232 в TTL с MAX232, просто с линиями RX и TX. Согласно руководству пользователя (глава 4, раздел DTR / DSR Handshake Protocol) я связал DSR с логической ИСТИНОЙ (отрицательное напряжение), а DTR не подключен. Эта конфигурация должна отключить аппаратное рукопожатие.
Теперь я могу подключить конвертер к MCU или к компьютеру. Для моего первого эксперимента я использовал компьютер и этот скрипт на Python:
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()
Это работает без проблем. Генератор установил свою мощность на 30 кГц, как и ожидалось. Проблема в том, когда я пытаюсь прочитать ответ от генератора. Например, это должно вернуть имя устройства:
s.write('*IDN?\n')
print s.realine()
Я почти уверен, что ответ хранится в выходном буфере генератора, но данные на самом деле не передаются.
Есть ли команда для запуска передачи данных из буфера? Или мне нужно включить аппаратное рукопожатие?
Есть ли у кого этот генератор? Вы используете его с RS232 и SCPI?
s.readline()
функция (я отредактировал свой вопрос, спасибо).