Вы не читаете байты, вы читаете текст.Который создается путем преобразования байтов, которые получает порт, в соответствии со значением свойства SerialPort.Encoding.По умолчанию используется Encoding.ASCII, кодировка, которая содержит символы только для значений байтов от 0 до 127. Значения байтов вне этого диапазона заменяются на «?».символ.
Что объясняет, что вы видите.Выбор другой кодировки маловероятен в вашем случае, используйте вместо этого SerialPort.Read ().Эквивалентом ReadExisting является вызов Read () с достаточно большим аргументом count .Вы получите все, что подходит, фактическое количество байтов, скопированных в буфер, является возвращаемым значением метода.Блокируется, когда входной буфер пуст.Это может произойти только в обработчике событий DataReceived, когда e.EventType не равен SerialData.Chars.Обычно это не проблема.
Помните, что ваш вызов pictureBox_rawData.Invalidate () недопустим.DataReceived работает в потоке потоков.Вы можете касаться только элементов управления в потоке пользовательского интерфейса.Вам нужно будет использовать Control.BeginInvoke ().