Merhaba,
Seri porttan K3e3143 şeklinde veri alıyorum.Burada 'K', '3e', '31', '43' sayılarını 4 ayrı değişkene atmak istiyorum.Bunu MicroC PIC ile nasıl yapabilirim?Sanırım pointer kullanmam gerekiyor ama nasıl yapacağımı anlayamadım.
Bu veriler zaten uart üzerinden byte byte gelir. Uart uzerinden 32 bitlik veri bir anda gonderilemezki.
UART üzerinden byte olarak transfer gerçekleşir. Dizi değişkenine aktarak yapabilirsiniz.
Merhaba,
Data, 'K' olarak gönderilmez."K" harfi HEX'4B' olarak yollanır.C# bilmiyorum ama VB.Net'te PC'ye hex olarak gelen dataların DEC değerleri okunur.Yani PIC'in "K" harfi için yolladığı HEX'4B' değeri DEC75 olarak okunur.
Alıntı"Burada 'K', '3e', '31', '43' sayılarını 4 ayrı değişkene atmak "
Bakınız
http://www.asciitable.com/ (http://www.asciitable.com/)
FF ile and işlemi yapıpı kalan değeri byte'a convert ederseniz yada byte'ın içine atarsanız ilk byte'ı elde edersiniz.
2. byte için de önce 8 birim sağa kaydırıp aynı işlemi yapmak gerekiyor.
Diğerleri de aynı mantıkda devam ediyor.
Ama dedikleri gibi uart zaten byte gönderiyor.
Cevap yazan tüm hocalar sağolun.Uart'tan verilerin byte byte gelebileceği kısmını unutmuşum ben.Terminalden o formatta okuyunca kafam karıştı.Gelen verileri diziye alarak hallettim.Teşekkürler.
ola ki kullanmak isteyen olur,
#define BYTE(var,index) *(((unsigned char*)&var)+index)
preprocessor makrosu ile byte okuma ve yazma yapılabiliyor.
degisken =0x1234;
ise
BYTE(degisken,0) ile 4'ü elde edebiliyorsunuz,
BYTE(degisken,0)=5; derseniz de degisken 1235 oluyor.
@kimlenbu
Bilgi için teşekkürler...
Alıntı yapılan: kimlenbu - 22 Ocak 2014, 11:53:43
ola ki kullanmak isteyen olur,
#define BYTE(var,index) *(((unsigned char*)&var)+index)
preprocessor makrosu ile byte okuma ve yazma yapılabiliyor.
degisken =0x1234;
ise
BYTE(degisken,0) ile 4'ü elde edebiliyorsunuz,
BYTE(degisken,0)=5; derseniz de degisken 1235 oluyor.
BYTE(degisken,0) ile 0x34 elde edilir 0x4 değil. zaten 0x1234 16 bitlik bir sayı.
bilgisayara mı göndereceksin ?
c# mı yada vb.net mi kullanıyorsun.