write
определяется как:
ssize_t write(int fd, const void *buf, size_t count);
То есть он отправляет count
байтов в fd
из buf
. В вашем случае данными всегда является строка «AZTR \ r», плюс неопределенные данные после этого (если число> 5). Ваша программа не отправляет ни шестнадцатеричные, ни десятичные данные.
Вы хотите отправить двоичные данные или строку из шестнадцатеричных символов?
Для первого варианта вы можете использовать: write(fd, somebuffer, len);
, где некоторый буфер является указателем на любой набор байтов (включая целые и т. Д.).
Для второго варианта сначала преобразуйте данные в шестнадцатеричную строку, используя sprintf
с %02X
в качестве строки формата, затем перейдите к write
этим данным в порт.