2016-04-19 5 views
1

Arduinoからデータを取得しようとしていますが、そのデータをデコードできません。私はいくつかの情報を探していると私は、例えばこれらの答えが見つかりました:データの取得とデコードにはまれな文字があります

Introduction to Unicode

Unicode string to String in python

Arduinoのは、8ビットのコード化(UTF-8)内の数字(データ)を送信しています。 私は別のコードの多くを試してみましたが、私が持っている最高のデコードがこれです:

The data that I have got from decoding

私は私のコードを書くことSublimeText 2を使用していて、これは私がprintを使用するときに、コンソールが私を示したものです。データをデコードする必要があるので、後でmatplotlibを描画するために使用することができます。私が書いた

この最後のコードは私に上記のような出力が得られた:

class readData(QWidget): 

    def __init__(self): 
    super(readData, self).__init__() 

    self.resize(300, 100) 

    self.btn = QPushButton("Close", self) 
    self.btn.setGeometry(150, 50, 100, 30) 

    self.btn_2 = QPushButton("Search Data", self) 
    self.btn_2.setGeometry(50, 50, 100, 30) 

    self.btn.clicked.connect(self.close) 
    self.btn_2.clicked.connect(self.searchData) 

def searchData(self): 
    arduinoData = serial.Serial('com7', 9600) #We open port com7 

    while True: 
     print "Searching for data" 
     while(arduinoData.inWaiting() == 0): #We wait for the data 
      print "There is no data"    

     print "Reading and converting data" 
     arduinoString = str(arduinoData.readline()) 
     ardString = unicode(arduinoString, errors = "ignore") 
     print "This is the data: " 
     print type(arduinoString) 
     print "" 
     print arduinoString 
     print type(ardString) 

def close(self): 
    #WE CLOSE THE WINDOW AND THE PORT 

を私は2つのボタンを表示するために、単純なQWidgetを開く:1のデータの検索を開始し、それを表示し、別のウィンドウを閉じるにしますとポート。

enter image description here

どのように私は私が必要な番号を表示する(私は本当に今知っ `tの、またはエンコード)をデコードする必要があります。これは、単純なウィンドウですか?私は間違って何をしていますか?あなたが私を助けることを願っています。

答えて

1

文字列は基本的に文字列です。すべての文字は、1バイト以上で表すことができます。 'byte - (1以上)'から 'char'へのこのマッピングは '変換形式'です。いくつかの規則がそこにあります:あなたがアルドゥイーノからいくつかのバイトを受信した場合

  • UTF-8
  • UTF-16
  • ASCIIは、あなたが従う何大会のPythonを伝える必要があります。ここではいくつかの例は以下のとおりです。

    # Receive data example 
        rawData = arduino.readLine() 
        myString = rawData.decode('utf-8') 
        print(myString) 
    
        # Transmit data example 
        myString = "Hello world" 
        rawData = myString.encode('utf-8') 
        arduino.sendLine(rawData) 
    

    私は、これは私はこのことについて読んだことがある

+0

:-)役立ちました願っています。ありがとうございました。私はもう別の問題を抱えています。 Idkなぜ今は何も読まない。 'print 'の後に動作が停止して失敗するようです。データの読み込みと変換" –

+1

'arduinoData.readline()'がハングしているようです。しかし、なぜそれを言うのは難しいです。 arduinoがデータを送信しない可能性がありますか? –

+1

すみません、パブロ、これでお手伝いしたいと思います。しかし、私はArduinoのPythonへのシリアルリンクではまだ自分自身を動かしていません。 PICマイクロコントローラとのTCP/UDP通信の経験があります(そして、PythonプログラムでPC上のデータを読む) –

関連する問題