2017-11-02 14 views
3

私はPythonを初めて使い、Arduinoのシリアルポートで取得したデータをMySQLデータベースに保存しようとしていますが、もう一度プログラムを実行する必要があるため、もう一度保存するには、whileループを使用しようとしましたが、データベースには1回だけ保存され、「Arduinoからデータを取得できませんでした!MySQLデータベースにデータを保存する際に問題が発生する

はここに私のコードです:誰もが興味を持っている場合

import serial 
import MySQLdb 


dbConn = MySQLdb.connect("localhost","root","sasa","sms") or die ("could not connect to database") 
cursor = dbConn.cursor() 

device = 'COM3' 

try: 
    print "Trying...",device 
    arduino = serial.Serial(device, 9600) 
except: 
    print "Failed to connect on",device 


try: 
    data = arduino.readline() 
    pieces = data.split("\t") 

    try: 
    cursor.execute("INSERT INTO industrial (db) VALUES (%s)", (pieces[0])) 
    dbConn.commit() 
    cursor.close() 
    except MySQLdb.IntegrityError: 
    print "failed to insert data" 
    finally: 
    cursor.close() 
except: 
    print "Failed to get data from Arduino!" 
+0

どのような目的ですか? arduinoは常にデータをプッシュしており、あなたはいつもそれを読む必要がありますか?これを達成するにはいくつかの方法があります。 – farbiondriven

+1

私は、サウンドセンサーから値を取得し、受信したデータをデータベースに入れようとしています。可能であれば、常にそうでなければなりません。 –

答えて

0

私はそれを持って、それは実際に、私はまだ始まったばかりでwhile True:を本当に簡単入れ、それが正しく更新された、ここでのコードは次のとおりです。

import serial 
import MySQLdb 

while True: 
    dbConn = MySQLdb.connect("localhost","root","sasa","sms") or die ("could not connect to database") 
    cursor = dbConn.cursor() 

    device = 'COM3' 


    try: 
     print "Trying...",device 
     arduino = serial.Serial(device, 9600) 
    except: 
     print "Failed to connect on",device 


    try: 
     data = arduino.readline() 
     pieces = data.split("\t") 


     try: 
     cursor.execute("INSERT INTO industrial (db) VALUES (%s)", pieces) 
     dbConn.commit() 
     cursor.close() 
     except MySQLdb.IntegrityError: 
     print "failed to insert data" 
     finally: 
     cursor.close() 
    except: 
     print "Failed to get data from Arduino!" 
関連する問題