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() を使用して調べましたが、理解できる例が見つかりませんでした。ヘルプやポインタをいただければ幸いです。ありがとうスティーブ