RS232を介してHP33120AでSCPIを使用する方法
古いヒューレットパッカード33120A関数発生器(Agilent 33120Aと同じタイプである必要があります)があり、MCU(ATMega)で制御したいと思います。ジェネレータにはRS232があり、SCPIコマンドを使用します。 RXおよびTXラインのみを使用して、MAX232でシンプルなRS232からTTLへのコンバーターを作成しました。よるユーザーズガイド(第4章、セクションDTR / DSRハンドシェイクプロトコル)Iが接続されていない論理TRUE(負電圧)とDTRにDSRを結びました。この構成では、ハードウェアハンドシェイクを無効にする必要があります。 これで、コンバーターを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() これは問題なく動作します。ジェネレーターは期待通りに出力を30kHzに設定しました。問題は、ジェネレーターからの応答を読み取ろうとしたときです。たとえば、これはデバイス名を返すはずです: s.write('*IDN?\n') print s.realine() 応答がジェネレーターの出力バッファーに格納されることは確かですが、実際にはデータは送信されません。 バッファからのデータ送信をトリガーするコマンドはありますか?または、ハードウェアハンドシェイクを有効にする必要がありますか? …