red rocket писал(а):вместо
#10000000000000000000000000000110
показывает
00000000000000000000000110
#100000
Насколько я понимаю, программа просто тупо считывает 35 байт каждые 300 мс и предполагает, что каждый такой набор байтов будет соответствовать очередной последовательности, начинающейся с „#“, — видимо, по какой-то причине часть байтов теряется (хотя такого вроде не должно происходить с современными буферизированными COM-портами), и потому 35-байтная граница более не соответствует началу последовательности. То есть в функции ReadCommPure надо не просто считывать, а синхронизировать выдаваемое значение с символом начала последовательности.
Причина разбиения строки на две части — тоже хороший вопрос. По идее, все управляющие символы вырезаются в функции CleanStr. Но, возможно, текстовое поле txtRec воспринимает как символ переноса строки какой-нибудь знак из диапазона 127–255? Или там попадается какой-нибудь пробельный символ, а текстовое поле пытается выполнять перенос по словам? Вообще, не проще ли установить txtRec.MultiLine = False? (Конечно, это не решение проблемы, а лишь борьба с симптомами.)