Последовательная связь Python и Arduino

Я использую Python 3.2, пытаясь связаться с Arduino через последовательный порт. Из документации я понял, что Arduino Serial.Read () читает отдельные байты. Однако, когда я попытался реализовать это, Serial.Read () считывает все отправленные мной числа. Вот код для моих Python и Arduino

Например, у меня есть значение 412 для отправки в Arduino.

Python:

xCoordint = 412
xCoordConverted = "%03d" % (xCoordint)
xCoord = [int(i) for i in str(xCoordConverted)]
xSingleDigit0 = chr(int(xCoord[0] + 48))
xSingleDigit1 = chr(int(xCoord[1] + 48))
xSingleDigit2 = chr(int(xCoord[2] + 48))
ser.write (bytes(xSingleDigit0, 'UTF-8'))
ser.write (bytes(xSingleDigit1, 'UTF-8'))
ser.write (bytes(xSingleDigit2, 'UTF-8'))

Ардуино:

char joinCharX[3] ;
int n_avail = Serial.available();
  if(n_avail>0){ 
    for (int i=0;i<3; i++){
      joinCharX[i] = Serial.read();
    }
int xCoords = atoi(joinCharX);
Serial.print(joinCharX[0]);

При возврате joinCharX [0] равен 412, а не 4. Мне было интересно, почему это так и как мне вернуть его для чтения 1 отдельного байта за раз?


person Sinjon    schedule 10.08.2013    source источник


Ответы (1)


Пытаться:

char joinCharX[3] ;
int n_avail = Serial.available();
  if(n_avail>0){ 
    for (int i=0;i<3; i++){
      joinCharX[i] = Serial.read(1);  # Note the parameter
    }
int xCoords = atoi(joinCharX);
Serial.print(joinCharX[0]);

Это должно заставить его читать по одному символу за раз.

Исправление:

Вы не можете ограничить отсутствие символов, как указано выше, но ваша проблема в том, что ваш оператор печати принимает первый символ в качестве начала строки: если вы хотите видеть только первый символ, который вам нужно использовать:

char forprint;
:
:
forprint = joinCharX[0];
Serial.print (forprint);
person Steve Barnes    schedule 10.08.2013
comment
joinCharX [i] = Serial.read (1); - ›он говорит, что не существует соответствующей функции для вызова 'HardwareSerial :: read (int) - person Sinjon; 11.08.2013
comment
Для второй части результаты печати такие же, как и у меня. - person Sinjon; 11.08.2013