Я прочитал много вопросов и ответов, но не нашел решения. Может быть, мой вопрос не прав, но мне нужно какое-то руководство. Я использую последовательный порт в Linux, который считывает данные с моего устройства Arduino. Всякий раз, когда я хочу отправлять данные из Arduino в Linux, я сначала отправляю два байта, которые указывают на общее количество байтов, которое будет поступать от Arduino. Я конвертирую эти два байта в целочисленное значение и начинаю считывать данные из последовательного порта. Скажем, я хочу, чтобы отправить 300 байт из Ardiuno в Linux, я буду просто писать {1, 44}, а затем преобразовать этот 1 и 44 байт в междунар по следующей формуле:Чтение символа NULL из последовательного порта Linux C
char data[] = {1, 44};
int to_read = data[0]
to_read = to_read << 8;
to_read = to_read | data[1];
return to_read;
это даст мне 300 int value, это работает как шарм. но проблема возникает, когда мне приходится читать данные менее 255. Скажем, я хочу прочитать 100 байт, тогда первые два байта будут {0, 100}. 0 - нулевой символ, последовательный порт не обрабатывает его (я вручную написал 0s для последовательного порта, он всегда дает мне 0 байтов), и моя вся последовательность идет не так. Поэтому мой вопрос: могу ли я читать нулевые символы из последовательного порта, или кто-то, пожалуйста, дайте мне лучшее решение.
спасибо заранее.
Причина № 18, почему я ненавижу, когда люди говорят, что «нуль», когда речь идет о символах. «Нуль» в основном означает «нет значения» - то есть: он выходит за пределы допустимых значений, а «нулевой символ» - это символ с кодом 0. IE: допустимое, если несколько нечетное значение. Вместо этого используйте NUL; это то, что находится в таблицах ASCII. : P – cHao
Точка, символ 0 по-прежнему является нормальным символом. Это просто имеет особое значение * для C, когда вы работаете с nul-terminated byte string *. С другой стороны, последовательный порт все равно. – cHao
Вы можете показать нам код, как настроить последовательные устройства с обеих сторон, и как вы затем отправляете и получаете данные через эти устройства. – alk