質問: serial.Serial(port="COM5", baudrate=115200, bytesize=8, parity="N", stopbits=1, timeout=None, xonxoff=False, rtscts=False, write_timeout=None, dsrdtr=False, inter_byte_timeout=None, exclusive=None) ser.close time.sleep(1) ser.open ser.write(b"F3\n\r") #F3は機器の制御コマンド ser.close() ``` ### 試したこと ser.write(b"F3\n\r") の前後にtime.sleepを入れて実行のタイミングを変えてみたが、装置は反応しなかった。 Linux上のPythonでも試したが、装置は反応しなかった。 baudrateを変えても装置は反応しなかった。 シリアルポートの出力を見ると文字列は出力できている。改行コードか? VBでは動いていて、vbcrlfを改行コードに使っている。 ### 補足情報(FW/ツールのバージョンなど) WinPython3.6.5 この話と似ています(Python2.5ですが) http://d.hatena.ne.jp/kinneko/20070926/p3 ![コマンドプロンプトからの実行、装置が動きます](https://teratail.storage.googleapis.com/uploads/contributed_images/ef2b01588818ddbd36540ec76b2e663d.png) コマンドプロンプトからの実行、装置が動きます。最後に「4」が出力されます。 2018.7.9追記 ロジアナでコマンドプロンプトとスクリプトの出力を見てみましたが、全く同じでした。(ますますわからなくなりました...) 装置の構成について詳しく書くと、制御PCからUSBケーブルを変換回路を介して装置のSCSIに繋いでいます。USBーSCSI変換回路はシリアル入出力となっています。 PC =>USBケーブル =>USBーSCSI変換回路 =>SCSIデジタルマルチメーター 出力信号をモニタする時はUSBシリアル変換回路を介してみています。 PC =>USBケーブル =>USBシリアル変換回路 =>USBロジアナ(モニタ用PC) ![コマンドライン実行](https://teratail.storage.googleapis.com/uploads/contributed_images/b3ee5c7af034d4ecdae34cf8579454a3.png) コマンドライン実行 ![スクリプトファイル実行](https://teratail.storage.googleapis.com/uploads/contributed_images/0712fa7cc10c672564d2f6c3bb0ecf57.png) スクリプトファイル実行 なにか大ポカをしていないか心配ですが.... 2018.7.10追記 オシロの波形です。 ![コマンドライン実行](https://teratail.storage.googleapis.com/uploads/contributed_images/51639832e0e8cdcc12f645eedacbd362.jpeg) コマンドライン実行 ![スクリプトファイル実行](https://teratail.storage.googleapis.com/uploads/contributed_images/8b64497a292d4bdc00d5c51640cf9eb0.jpeg) スクリプトファイル実行
回答: 明示的に制御線を無効にするとか ``` ser.open ser.rtscts=False ser.dsrdtr=False ser.rts=False ser.dtr=False ```