-1

シリアル ポート経由で送信されたデータを開いてテキスト ファイルに記録するプログラムを作成しています。現在、実行時にシリアル ポートを再構成できるようにする機能を追加しています。自分にとってシンプルに保つために、一度に1つずつ変更する変数を選択するようにユーザーに促します(エレガントなソリューションもありがたいです)。

シリアル インスタンスを作成する pyserial 関数 (serial.Serial()) には、次のパラメーターがあります。

import serial
ser = serial.Serial(port=0, baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0, writeTimeout=None, dsrdtr=None, interCharTimeout=None) #default values shown

ほとんどが int() 引数ですが、そうでないものもあります。つまり、「タイムアウト」です。

int(raw_input("for the int() type variables))を使用すると int 変数を安全に割り当てることができることはわかっていますが、デフォルトとして None を持つ変数input()には、可能な None 値を適切に割り当てる関数が必要になります。

input() は悪用される可能性があるため、通常は推奨されないことを他の場所で読みました (eval() に関する何か?)。では、これらの入力をどのように処理すればよいですか? つまり、writeTimout = str(None) で serial.Serial() を使用すると、エラーがスローされます。

ありがとう!

4

1 に答える 1

0

最も安全な方法は、ユーザーの入力を文字列として受け取り、それを解析することです。つまり、ユーザーにキー=値のペアを入力させます:

baudrate = 9600
parity = N

次に、「=」で分割し、両側を取り除くことによって、これらのペアを解析します。文字列ルックアップ テーブルを使用して変数を割り当てます (文字列はvar にbaudrateマップされます)。baudrateこのようにして、None任意の方法で値を処理できます。

この方法は簡単で安全です。inputユーザー入力が有効な Python でない場合は例外が発生しますが、それは望ましくない場合があります。

于 2010-02-09T18:08:13.577 に答える