Отправка поплавка из Arduino в Python с серийным - PullRequest
1 голос
/ 27 марта 2019

Я пытаюсь отправить float из arduino и прочитать его на python, используя serial.

Я генерирую числа на Arduino со следующим кодом:

Это код Arduino, он работает

long randNumber;
float avgMe;
float theTemp;

void setup() {
  Serial.begin(9600); // initialize print
  Serial.println("Start session");
}

void loop() {
  avgMe = 0;
  for (int i = 0; i < 10; i++) {
    randNumber = random(0, 11);
    delay(100);
    avgMe = avgMe + randNumber;
  }
  theTemp = avgMe / 10;
  Serial.print(theTemp);

}

Это печатает то, что я хочу захватить в Python:

Start session
4.90
6.80
3.90
5.70
6.10

Это то, что я использовал в python, чтобы схватить его:

# %% Import
import serial
import time
import struct

# %% connect
try:
    ser = serial.Serial('COM3', 115200, timeout=.1)
    time.sleep(2)
    print("Connection to " + 'port' + " established succesfully!\n")
except Exception as e:
    print(e)

# %% loop for some time
t_end = time.time() + 10
while time.time() < t_end:
    data = ser.read(4)
    if data:
        # test = struct.unpack(">fff",data)
        print(data)

time.sleep(1)
ser.close()

Отпечатки Python:

b'\x00\x00\x00\x00'
b'\x00'
b'\x00\x00\x00\x00'
b'\x00\x00\x00\x00'
b'\x00\x00\x00\x00'
b'\x00\x00\x00\x00'
b'\x00'

Но, во-первых, я не могу преобразовать это, также не похоже, что информация там. Мне бы очень хотелось, чтобы вы внесли свой вклад в это

1 Ответ

1 голос
/ 27 марта 2019

Та же проблема у меня возникла, когда я впервые узнал, как отправлять данные через последовательный порт из Arduino. Скорость передачи данных должна быть одинаковой, иначе результаты получатся странными и замечательными.

Если Arduino использует эту скорость передачи

Serial.begin(9600); // initialize print

тогда питону нужна та же скорость передачи

ser = serial.Serial('COM3', 9600, timeout=.1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...