Передача 4 байтового int c arduino due через com порт

max_sl
Offline
Зарегистрирован: 15.08.2016

Добрый день. Есть необходимость передавать некотрые данные с ардуино дью через com порт на компьютер посредством Serial.write(). Но, как оказалось, Serial.write не передает данные длиннее одного байта 0-255. На данному форуме люди попытались сделать через деление и смещение

http://forum.arduino.cc/index.php?topic=323119.0

Нет ли вариантов попроще?

 

ptr
Offline
Зарегистрирован: 28.05.2016
void send_long(long l)
{
  unsigned char *c=(unsigned char *)&l;

  Serial.write(*(c++));
  Serial.write(*(c++));
  Serial.write(*(c++));
  Serial.write(*(c));
}

В обратном порядке:

void send_long(long l)
{
  unsigned char *c=(unsigned char *)&l;

  Serial.write(*(c+=3));
  Serial.write(*(--c));
  Serial.write(*(--c));
  Serial.write(*(--c));
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

max_sl пишет:

Добрый день. Есть необходимость передавать некотрые данные с ардуино дью через com порт на компьютер посредством Serial.write(). Но, как оказалось, Serial.write не передает данные длиннее одного байта 0-255. На данному форуме люди попытались сделать через деление и смещение

http://forum.arduino.cc/index.php?topic=323119.0

Нет ли вариантов попроще?

А что нужно передать? Просто четырёхбайтовое значение? Каким байтом вперёд, младшим или старшим? Если просто передать 4-байтовое число, то кто Вам мешает передать его четрьмя вызовами write?

int32_t number = 12345678L; // 4-байтовое число
uint8_t * nPtr = (uint8_t *) & number;  // указатель на младший байт
Serial.write(*nPtr++); // передача байта с последующим продвижением указателя.
Serial.write(*nPtr++); // и так 4 раза
Serial.write(*nPtr++);
Serial.write(*nPtr);

 

ptr
Offline
Зарегистрирован: 28.05.2016

2 ЕвгенийП: Пора разделить обязанности )

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Так оно ж параллельно пишется. Постишь и видишь, что пока писал - кто-то уже запостил. Ничего страшного, много - не мало, ТС разберётся.

ptr
Offline
Зарегистрирован: 28.05.2016

Тут личка есть? А то хотелось бы с ЕвгенийП ближе познакомиться, скайпами обменяться...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Нету лички. И скайпа у меня можно сказать нету. Формально есть, но я запускаю его ТОЛЬКО когда по работе дистанционное совещание намечено, и вырубаю сразу после совещания. Ни какие вызовы никогда не отвечаю и т.п.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ptr пишет:

Тут личка есть? А то хотелось бы с ЕвгенийП ближе познакомиться, скайпами обменяться...

Кстати, хотите поболтать и по рюмке чаю сообразить - можно вот здесь.