Я купил себе модуль ENC28J60 и разбираюсь с передачей данных по UDP. Использую библиотеку UIPEthernet. Все работает, но…
Правильно ли я понимаю, что с помощью этой библиотеки можно принимать и передавать только массивы char? Это ведь обидно, хочется передавать данные с датчиков.
Массивы char это байты, а если можно передавать байты - значит можно передавать что угодно. Любые другие типы данных могут быть представлены как массивы байт
Я тоже так подумал сначала.
Использую функции read() и write(), аргумент там - указатель на char. Так вот, когда я с компьютера посылаю данные типа float, read() прочитывает в буфер char пустую строку.
Такое ощущение, что функция видит, что получила не код символа и игнорирует данные.
ну вот и ответ. Вы реально ничего не шлете
Я не имею много опыта с этой библиотекой, но мне кажется если вы на приемнике принимаете пакет, то и на передатчике тоже надо отсылать пакет, а не просто бросать 4 байта в мировой эфир.
У библиотеки есть примеры, начните с них
Borland Delphi (или как там оно сейчас зовётся)? Там точно имя массива служит указателем, как того ожидает функция?
Если с char всё проходит, то должно и вот так пройти, если уж втупую проверять:
(char*) &fbuf[0]. Не знаю, как в дельфях с указателями работают, по сишному принципу наколхозил.