3

pySerial を使用してシリアル ポートからデータを読み取り、以下の文字列を整数に変換しようとしています。

s=ser.read()
int(s) 

しかし、私はできません。私が取るエラーは次のとおりです。

Traceback (most recent call last):
File "C:\Documents and Settings\User\Desktop\ser1.py", line 24, in <module>
int(s)
ValueError: invalid literal for int() with base 10: '' 

変換方法を知っている人はいますか?前もって感謝します!

4

3 に答える 3

5

例外をキャッチして値をデフォルトにすることはできますが、存在しないものから意味のあるものは何もないと思います...

s = ser.read()
try:
    ival = int(s)
except ValueError as e:
    ival = 0 # ????

期待しているデータがまだ受信されていない可能性が高く、十分なデータが受信されるまでシリアルポートで待機してから何かを行う必要があります...

于 2013-04-30T12:24:54.487 に答える
-2

int(x=0) int(x, base=10)

数値または文字列 x を整数に変換するか、引数が指定されていない場合は 0 を返します。x が数値の場合、通常の整数、長整数、または浮動小数点数を指定できます。x が浮動小数点の場合、変換はゼロに向かって切り捨てられます。引数が整数の範囲外の場合、関数は代わりに long オブジェクトを返します。

x が数値でない場合、または基数が指定されている場合、x は基数基数の整数リテラルを表す文字列または Unicode オブジェクトでなければなりません。オプションで、リテラルの前に + または - (間にスペースを入れない) を付け、空白で囲むことができます。基数 n のリテラルは、0 から n-1 の数字で構成され、a から z (または A から Z) の値は 10 から 35 です。デフォルトの基数は 10 です。使用できる値は 0 と 2 から 36 です。Base-2、-8、および -16 のリテラルには、コード内の整数リテラルと同様に、オプションで 0b/0B、0o/0O/0、または 0x/0X をプレフィックスとして付けることができます。基数 0 は、実際の基数が 2、8、10、または 16 になるように、文字列を正確に整数リテラルとして解釈することを意味します。

于 2013-04-30T12:23:15.320 に答える