намерен е бъг във приемащата функция на c# класа на серийния порт !!!! при стандартната функция порпуска първия байт в приемането на съобщението което се получав от друг хардуер, примерно платки с процесори на микорчип, распбери пико, ардуино и други. прекъсващат функция във класа, която трябва да приеме определено количество байтове се активира, но не приема нищо и буфера записва само нули 0x00, като това обърква функциите за обработка на приетата информация които трябва да се задейства след приемане на съобщението.
функцията за приемане на данни е направена на принципа на прекъсване при събитие. или казано така, когато във серийния порт, хардуерния модул на компютъра постъпят някакви байтове с информация, прекъсването е отчетено от софтуера, започва да се пълни буфера с приемащите се байтове. само че, преди да започне същинското приемане на полезната информация, хардуерните серийни портове си обменят системни сигнали, които им трябват за да се разберат какво ще правят, на каква скорост и други такива. точно тука се получава проблема. има пристигаща системна информация, а полезната не идва. приемащата функция се задейства и излъгва софтуера, че нещо приема, пък то нищо не приема !!!
//=================================================================================================
малко графики как се решава този проблем със няколко реда лесен код, като се използва готова функция от същия клас на серийния порт във с# във визуал студиото.

//=================================================================================================
графика на стандартната функция, която е даде на във c# студиото за приемане на данни във вид на чисти байтове 0-255 <> 0x00-0xFF.

//=================================================================================================
графика на редактираната функция в приемането, която важи за всички видове приемане на инфомация като байтове, стрингове, каквото и да е. с преброяването на приетите байтове, които наистина са постъпили във серийния порти, можете да контролирате следващите процеси и работа на функции след като вече наистина сте приели коректните съобщения.

//=================================================================================================
резултат от редактирането на функцията след като вече приема коректно и показва / обработва получената коректно информация във поредното съобщение.

//=================================================================================================
опция на тестването за специалистите може да бъде да покажете в момента на приемането броя на получените байтове, като там където има проблем не се вижда нищо отпечатано и байтовете като преброени са нула /0/. това може да ви помогне да намерите грешки във софтуера за платките, които проавите, както и дебъг на комуникацията при по-големи обеми от данни. в този случай моят буфер за приемане / предаване е само 32 байта, но се изпълнява много пъти, да кажем до няклоко стотин килобайта. може да мегабайти има задачи, в които се налага да се обменят сериозни количества данни :)

