dizi katarı hakkında

Başlatan mustan79, 21 Ağustos 2016, 17:38:11

mustan79

merhabalar,

konuyu doğru yere mi açtım bilmiyorum ama yardımcı olursanız sevinirim. Pc tarafında C# ile program yazdım butona basınca rs232 ile bağlı olan stm32f0 devreme güncel saat ve tarih bilgisini iletiyor. stm32f0 tarafında rx kesmesi ile veriyi rx_buffer dizisine alıyorum. bu verileri saniye, dakika ve saat olarak ayırıp oluşturduğum sayıcıya aktarmak istiyorum. kodlar aşağıda

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); // Enable USART1 Receive Interrupt
	
	while(1){
		__WFI(); // Wait for an interrupt rather than grind endlessly

		while (!line_valid) // A new line has arrived
        {
					UART_SendBuf((char*)rx_buffer, rx_index); 
					CurrentTime.Second = rx_buffer[0] && rx_buffer[1];
					CurrentTime.Minute = rx_buffer[3];
					CurrentTime.Hour   = rx_buffer[6];
          line_valid = 0; // clear pending flag
        }


gelen veriler rx_buffer içerisinde ayrı ayrı karakter olarak geliyor. ama saniyeyi göstermem için rx_buffer[0] ile rx_buffer[1] yanyana göstermem gerekiyor. bu konuda yardımınıza ihtiyacım var. verilerin aktarımı için yapabileceğim alternatiflerde olabilir. teşekkürler.

yldzelektronik

gelen katar içerisinde ilk iki byte sizin saniye veriniz.bunu yapmak yerine tek byte ile gönderin.anladığım kadarıyla siz stringe çevirip de gönderiyorsunuz. bunun yerine byte olarak gönderin.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

mustan79

selam

PC tarafında c# ile yaptığım programda veriyi internetten bulduğum bir fonksiyon içerisinde yolluyorum. c# fazla bilmiyorum dediğin aklıma geldi ama fonksiyonda nasıl yolluyor bulamadım dediğiim gibi c# bilgisi sınırlı. copy-paste şeklinde genelde, şuan kodlar yanımda değil yarın yollarım c# kodlarını...

bu sebeple mcu tarafında bunu halletmeye çalışıyorum. ama işte 2 farklı byte bir string ya da tek bir byte nasıl yapılır ? sorumum bu şimdilik :)

teşekkürler cevap için

8051-ARM

Alıntı yapılan: mustan79 - 22 Ağustos 2016, 23:03:59
selam

PC tarafında c# ile yaptığım programda veriyi internetten bulduğum bir fonksiyon içerisinde yolluyorum. c# fazla bilmiyorum dediğin aklıma geldi ama fonksiyonda nasıl yolluyor bulamadım dediğiim gibi c# bilgisi sınırlı. copy-paste şeklinde genelde, şuan kodlar yanımda değil yarın yollarım c# kodlarını...

bu sebeple mcu tarafında bunu halletmeye çalışıyorum. ama işte 2 farklı byte bir string ya da tek bir byte nasıl yapılır ? sorumum bu şimdilik :)

teşekkürler cevap için

Merhaba Hocam ben bu şekilde yaptım C de iyi değilim elimden geldiği kadarı bir şeyler yapıyorum.

void saat_al()
{			
			lcd_clr();
			gun=(RxBuf[2]- 0x30)* 0x10;
			gun+=RxBuf[3]- 0x30;
			
			ay=(RxBuf[4]- 0x30)* 0x10;
			ay+=RxBuf[5]- 0x30;
			
			yil=(RxBuf[8]- 0x30)* 0x10;
			yil+=RxBuf[9]- 0x30;
			
			saat=(RxBuf[10]- 0x30)* 0x10;
			saat+=RxBuf[11]- 0x30;	
	
			dak=(RxBuf[12]- 0x30)* 0x10;
			dak+=RxBuf[13]- 0x30;
			
			san=(RxBuf[14]- 0x30)* 0x10;
			san+=RxBuf[15]- 0x30;
	
			RTC_Config();
			yatay_basla = 117;		
			Font3("TARİH SAAT GÜNCELLENDİ",yatay_basla,120,24,0x0000A0,0xFFFFFF,Arial_24);
			delay_ms(1000);

			
}


mustan79

@8051-ARM teşekkür ederim sorunu senin yöntemle biraz farklı ama aynı şekilde çözdüm. teşekkürler.
a = ((rx_buffer[0]-'0') * 10) + (rx_buffer[1]-'0'); // saat bilgisi
b = ((rx_buffer[3]-'0') * 10) + (rx_buffer[4]-'0'); // dakika
c = ((rx_buffer[6]-'0') * 10) + (rx_buffer[7]-'0'); // saniye

8051-ARM

@mustan79 hocam rica ederim yardımcı olabildiysem ne mutlu bana.