なんとかなるさね

マイコンをネタにブログを始めてみました


RL78マイコン基板(RL78/G10)|CS+(CubeSuite+)のPythonコンソール上でシリアルポート操作 (2) 

前のエントリでCS+(旧CubeSuite+)のPythonコンソール上で取り敢えずのシリアルポート操作が出来ました
ので、今回、シリアルポートの受信データをPythonコンソール上に表示させ続けることを試してみました。

表示させ続けるといっても表示処理を終了させることぐらいは出来るようにしたかったので、kbhit()のような
ノンブロッキングキーボード入力判定(あるいは入力)関数を探したのですが、今のところ、うまく行く方法を
見つけることが出来ていません。そして途中で気付いたのですが、CS+(旧CubeSuite+)のPythonコンソール
ではPythonの代表的入力関数であるraw_input()が動作しません
でした。本来ならEnterキーまでキー入力を
待ってから入力された文字列を返す筈なのですが、キー入力を何も待たずに直ぐ制御を返して来てしまいます。

仕方ないのでCS+(CubeSuite+)のPythonコンソールのPythonスクリプト強制終了機能(Ctrl+D入力)を使用
して強引に表示処理を終了させるようにしてみたのですが、残念ながらPythonスクリプト強制終了時にCS+
(CubeSuite+)がアプリケーションエラーで落ちることが時々あります。これでは使い物にならないのですが、
試行錯誤の途中ということで、、、

なお、以下のスクリプトでcommon.ThrowExcept = Trueにしている理由は、Pythonスクリプト強制終了の
例外を捕らえてシリアルポートをクローズしないと次にシリアルポートをオープン出来なくなったからです。

import System, time
def dump():
    print '終了させるには Ctrl+D を入力して下さい。再開させるには dump() と入力した後 Enter キーを押して下さい。'
    print ' '
    org = common.ThrowExcept
    # System.IO.Ports.SerialPortクラスは以下の設定の対象外なので注意
    common.ThrowExcept = True
    try:
        com = System.IO.Ports.SerialPort('COM14', 2000000)
        com.Open()
        com.DiscardOutBuffer()
        com.DiscardInBuffer()
        com.RtsEnable = True
        while True:
            str = com.ReadLine()
            print str,
    except:
        # System.IO.Ports.SerialPortクラスは以下の設定の対象外なので注意
        common.ThrowExcept = False
        try:
            com.RtsEnable = False
            com.DiscardOutBuffer()
            com.DiscardInBuffer()
            com.Close()
            # Pyhon組み込み関数は以下の設定の対象外なので注意
            common.ThrowExcept = org
            print '^D'
            print 'Wait for a while.'
            print ' '
            # ある程度時間待ちさせるとCubeSuite+がアプリケーションエラーになる頻度が減る気がしなくもない...
            time.sleep(3)
            exit(1)
        except:
            pass

dump()






ちなみに、アプリケーションエラー発生時に表示されたエラーダイアログの内容は以下の通りでした。

問題の署名:
  問題イベント名:       CLR20r3
  問題の署名 01:        cubesuitew+.exe
  問題の署名 02:        5.0.0.11
  問題の署名 03:        53f57a73
  問題の署名 04:        mscorlib
  問題の署名 05:        4.0.30319.18444
  問題の署名 06:        52717edc
  問題の署名 07:        1368
  問題の署名 08:        13
  問題の署名 09:        System.ObjectDisposedException
  OS バージョン:        6.1.7601.2.1.0.256.48
  ロケール ID:          1041
  追加情報 1:           0a9e
  追加情報 2:           0a9e372d3b4ad19135b953a78882e789
  追加情報 3:           0a9e
  追加情報 4:           0a9e372d3b4ad19135b953a78882e789


関連記事

2015/01/14   blog-entry-550   category: RL78 /* 16bit,8bit CISC */

go page top