Снова по сборке сетевого пакета.
- Войдите на сайт для отправки комментариев
Втр, 15/12/2015 - 20:59
Доброго времени суток, снова я к вам за советом!
Необходимо скомпоновать сетевой пакет, где первый байт - ID устройства, следующие 4 байте - номер события.
Пробовал так:
byte ID = 1 unsigned long SequenceId = 0; ; void loop() { Udp.beginPacket("192.168.1.100", 8888); Udp.write(ID); Udp.write(SequenceId, 4); Udp.endPacket(); SequenceId ++; delay(10000); }
Ругается на Udp.write(SequenceId, 4); - Call of overloaded 'write(long unsigned int&, int)' is ambiguous
Если записать так Udp.write(SequenceId);, то используется только 1 байт из 4. Как это исправить?
1. Разбейте
SequenceId
на байты и отправляйте по очереди, черезUdp.write(byte);
.2. Преобразуйте
SequenceId
в массив символов и отправьте черезUdp.write(buffer, size);
Сделал так:
Работает, но как то громоздко выглядит с этими указателями, может можно упростит?.
А как можно преобразовать long в массив?
Сделал так:
Работает, но как то громоздко выглядит с этими указателями, может можно упростит?.
А как можно преобразовать long в массив?
будет хуже
http://arduino.stackexchange.com/questions/5416/convert-long-to-char-arr...
ок, спасибо!
А не проще Udp.write(&SequenceId, sizeof(SequenceId));
?
ну вот зачем?
ну вот зачем?
TC поблагодарил, значит решение нашёл. Я предложил вариант. Какие проблемы?
ну вот зачем?
Никаких. Шутка юмора.
Получаю ошибку: no matching function for call to 'EthernetUDP::write(long unsigned int*, unsigned int)'
Получаю ошибку: no matching function for call to 'EthernetUDP::write(long unsigned int*, unsigned int)'
попробуйте приведение типа