Итак, у меня возникла проблема с моей последовательной связью между Python и Arduino Uno. У меня есть Python, отправляющий номер 38 (вместе с другими номерами) через последовательную связь bytearray в Arduino, а затем обратно на Python.Последовательная связь Python Arduino
Массива Я посылаю это:
[230, 0, 0, 0, 38]
И массив он распечатка (при использовании печати()) является:
bytearray(b'\xe6\x00\x00\x00&
Амперсанда есть, потому что есть странно nuance в печати bytearray, что, когда число находится между определенным диапазоном (извините, я не помню диапазон), он печатает его в ASCII, а не в шестнадцатеричном виде, поэтому массив, который я отправляю в Arduino, должен все еще иметь все Информация нужна.
Я получаю информацию в Arduino по:
char values[5];
Serial.readbytes(values, 5);
После того, как Arduino reveives информацию, я использую Serial.write, чтобы отправить его обратно в Python, где я распечатать их, чтобы гарантировать, что я получил правильный Информация. Этот вывод получен в Python является:
b'\xe6\x00\x00\x00\xf6'
, где 0xE6 230 (правильный) и 0xf6 является 246, который является неправильным, оно должно быть шестнадцатеричное значение 38, которое является 0x26.
Есть ли у кого-нибудь предложения относительно того, как это исправить? Любые предложения или помощь будут оценены!
EDIT: Нашел мою проблему, у меня случайно был отрицательный минус '0', потому что в какой-то момент я подумал, что мне нужно преобразовать информацию из ASCII в шестнадцатеричный, но оказывается, что я этого не делаю. Спасибо за помощь!
в c/C++ bytestrings обычно должны заканчиваться на «\ 0» (ive использовало много и много серийных и pyserial arduino, и я могу сказать вам, что это работает отлично в самом деле я пробовал ...) –
Можете ли вы также попробовать отправить что-то еще, кроме '0', в другие позиции индекса массива? (просто чтобы посмотреть, вернутся ли они так, как ожидалось.) Кроме того, это python 3 или python 2? – Dan
Также попробуйте отправить '38' первым и' 230' последним и сообщите нам, что результаты этого были – Dan