stm32f4 uart'dan birden fazla bayt alma.

Başlatan superconductor, 23 Aralık 2012, 14:32:44

superconductor

İyi günler.
C# ile yazdığım bir arayüz var.Bu arayüzden 1 tane senkron 4 tane veri byte'ı gönderiyorum.Senkron olarak 165 gönderiyorum.

stm tarafında kodlar:
void UART5_IRQHandler(void)
{	
char temp;
temp=USART_ReceiveData(UART5);	
	if(rx_no==0){rx_data[0]=temp;rx_no=1;}
	else if(rx_no==1){rx_data[1]=temp;rx_no=2;}
	else if(rx_no==2){rx_data[2]=temp;rx_no=3;}
	else if(rx_no==3){rx_data[3]=temp;rx_no=4;}
  else if(temp==165){rx_no=0;}
}


şeklinde.
c# kısmı
if (serialPort1.IsOpen)
            {  tx_data[0]=165;
                tx_data[1] = (byte)track_p.Value;
                tx_data[2] = (byte)track_i.Value;
                tx_data[3] = (byte)track_d.Value;
                tx_data[4] = (byte)track_speed.Value;
                serialPort1.Write(tx_data, 0, 5);
            }


bu işi daha kolay ve güvenli nasıl yapabilirim? veri olarak 165 gönderince senkron kayması olabiliyor.Öte yandan C# kısmında iki bayt almak için bu yöntemi kullanamıyorum çünkü eventler kesmeler kadar hızlı çalışmıyor sanırım.PC kısmında bu işi yapmak için stmden 2bayt daha sonra null mü göndermem gerekli?