2

Arduinoのアナログ入力からUDP経由でデータを受信するために実行しているpythonスクリプトがあります。

import socket

UDP_IP = "10.0.0.222"
UDP_PORT = 50000

sock = socket.socket(socket.AF_INET, # Internet
                     socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))

while True:
    data, addr = sock.recvfrom(12) # buffer size is 32 bytes
    print len(data) #check length of data recived
    sensors = struct.unpack('>hhhhhh', data)
    print sensors

Arduino は、12 バイトのパケットで 6 つのアナログ読み取り値のパケットを送信しています。各読み取り値は、2 バイトの 16 ビット整数で、LSB が最初に、次に MSB が続きます。Arduino の測定値の 1 つの値が 255 を下回るまで、スクリプトは正常に動作しています。この時点で、Arduino はヌル文字 \x00 を送信します。これが発生すると、スクリプトはそれ以上データを読み取らず、実行を停止します。私が抱えている問題は、UDP データを文字列に読み込むことだと思います。sock.recv_into() を使用して調べましたが、理解できる例が見つかりませんでした。ヘルプやポインタをいただければ幸いです。ありがとうスティーブ

4

1 に答える 1