1

私は自分自身にPythonを教えようとしており、RaspberryPiのGPIO接続用にリモートアクセス可能なサーバーを作成しようとしています。接続を確立するとき、最初に送信する入力は、実際にPuttyに入力したものであり、その後、入力は''です。だから私はそれをチェックしましたが、それでもif int(data [0])== 0:行にそのメッセージが表示されます。任意のヒント?これが初心者の質問である場合は申し訳ありません。

def run(self):
    try:
        while True:
            ret = -1
            data = self.cs.recv(self.BUFFERSIZE)
            if data=='':
                continue
            elif int(data[0])==0:
                self.cs.send(str(GPIO_setup(data)))
            elif int(data[0])==1:
                self.cs.send(str(GPIO_output(data)))
            elif int(data[0])==2:
                self.cs.close()
    except RuntimeError:
        if self.cs:
            self.cs.close()
4

2 に答える 2

1

data [0]は、''または数ではない他の無数のものである可能性があります。ただし、デバッグするには、次のようなものを試してください。

def run(self):
    data = None
    try:
        while True:
            ret = -1
            data = self.cs.recv(self.BUFFERSIZE)
            if data=='':
                continue
            elif int(data[0])==0:
                self.cs.send(str(GPIO_setup(data)))
            elif int(data[0])==1:
                self.cs.send(str(GPIO_output(data)))
            elif int(data[0])==2:
                self.cs.close()
    except RuntimeError:
        print "error on input of: '%s'" % data
        if self.cs:
            self.cs.close()
于 2012-12-28T23:03:05.487 に答える
1

あなたのコードとエラーのために、それdataはリストだと思います。これは、観察したとおりに失敗します。

In [2]: data = ['', 'test']

In [3]: data == ''
Out[3]: False

In [4]: data[0]
Out[4]: ''

In [5]: int(data[0])
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-5-4196b6567736> in <module>()
----> 1 int(data[0])

ValueError: invalid literal for int() with base 10: ''

のこの定義によりdata、変換がまだ失敗している間は元のテストがトリガーされないことに注意してください。

data[0]したがって、直接テストする別のテストを使用することをお勧めします。

data = self.cs.recv(self.BUFFERSIZE)
if len(data[0]) == 0:
    continue
于 2012-12-28T23:18:24.903 に答える