Отправка JSON строки с Python на Arduino
Решил написать программу которая из базы данных sqlite берет строку в виде {"comand": "forward", "go": 100} и в Python преобразует ее в json. После отправляет json строку в Serial port Ардуины, где в свою очередь проходит десериализация.
Код для Ардуины и Python:
Python:
import serial
import json
import sqlite3
from sqlite3 import Error
ser = serial.Serial(port='COM7',baudrate=115200)
ser.flush()
VA_CMD_LIST_Answer ={
}
def viewA():
CMD ={
}
try:
Сonnection = sqlite3.connect('CommandB.db')
cursor = Сonnection.cursor()
print("Подключен к SQLite")
cursor.execute("SELECT only,name,answer FROM cmd;")
all_results = cursor.fetchall()
for x in all_results:
if x[0] == 2:
CMD[x[1]] = x[2]
return CMD
except sqlite3.Error as error:
print("Ошибка при работе с SQLite", error)
finally:
if Сonnection:
Сonnection.close()
print("Соединение с SQLite закрыто")
VA_CMD_LIST_Answer.update(viewA())
for x in VA_CMD_LIST_Answer.items():
print(x[1])
ser.write(str.encode(json.dumps(x[1])))
Arduino:
#include <ArduinoJson.h>
StaticJsonDocument<256> com;
String comand = "";
void setup() {
pinMode( 2 , OUTPUT );
Serial.begin(115200);
}
void loop() {
if (Serial.available())
{
DeserializationError error = deserializeJson(com, Serial);
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.f_str());
digitalWrite( 2 , LOW );
}
else
{
comand = com["comand"].as<String>();
digitalWrite( 2 , HIGH );
}
}
}
Но сколько бы я не пытался отправлять разные строки с Python, лампочка на Arduino так и не загоралась. Тестил разные способы отправки json строки в порт, но итог был таким же. Может я неправильно использую pyserial и json, поэтому прошу помочь с этим.