Herkese merhaba.
HC05 Bluetooth modül üzerinden x;y formatında datalar alıyorum. x her zaman 1 byte ve harften oluşuyor. y ise içinde tam sayı barındıran 1 ile 4 byte arasında uzunluğu değişebilen dizi ve negatif sayılar da içerebiliyor.
x ve y içeriğini ayıklayabiliyorum.
y nin içeriğindeki datayı int değişkenine atamam gerekiyor.
Gelen datayı byte byte işleyerek bol miktarda if-else kullanarak yapmak istemiyorum çünki ortalık çok karışıyor.
atoi() fonksiyonu önerilmiş. Lakin bilgisayar programcılığında bu fonksiyon direk kullanılabilirken sanırım işlemci kodu yazarken pointer ile kullanılması gerekiyor. Ya da ben öyle anladım. Sonuç itibarı ile atoi() fonksiyonu sürekli pointer ile ilgili bir hata verip çalışmıyor. Bu arada pointer kullanımı ile ilgili sıkıntılarım olduğunu itiraf etmem lazım.
Negatif değerler dahil bu dönüşümü yapabileceğim fonksiyon atoi() midir? Eğer bu ise nasıl kullanmalıyım? mümkün ise kullanılacak değişkenlerin tanımı dahil bir örnek verir misiniz?
Ya da bu dönüşümü yapabileceğim pratik ve sağlıklı başka hangi yöntemler var?
Keyword: substring
İnt dönüşü yapılacak kısım bölündükten sonra atoi
Dil belirtilmemiş ama Arduino diye tahmin ediyorum.
union araştırmanızı öneriyorum. Veriyi gönderen programıda sizmi yazıyorsunuz. Veri gönderirken veya kaydederken union yapılarını kullanmayı tercih ediyorum. Temel mantık aynı adresi gösteren farklı veri tipleri oluyor. Hesaplamalarda kendi tipini kullanırken veri gönderir veya alırken byte dizisini kullanmayı tercih ediyorum. Cepten yazdığımdan uzun uzun yazamıyorum
Alıntı yapılan: fide - 15 Nisan 2024, 20:33:23Keyword: substring
Dil belirtilmemiş ama Arduino diye tahmin ediyorum.
Evet belirtmeyi unuttum. İşlemci STM32F030F4. Platform Cube ide.
Alıntı yapılan: sigmoid - 15 Nisan 2024, 21:00:14union araştırmanızı öneriyorum. Veriyi gönderen programıda sizmi yazıyorsunuz. Veri gönderirken veya kaydederken union yapılarını kullanmayı tercih ediyorum. Temel mantık aynı adresi gösteren farklı veri tipleri oluyor. Hesaplamalarda kendi tipini kullanırken veri gönderir veya alırken byte dizisini kullanmayı tercih ediyorum. Cepten yazdığımdan uzun uzun yazamıyorum
Diğer taraf telefon hocam. App Inventor. Anlattıklarınız mantığına yattı. Ama bunun üstesinden gelebilecek kadar bilgim yok malesef. Araştırıp deniyeyim. Ama işin içine gene pointer giriyor maalesef.
Alıntı yapılan: papsukkal - 15 Nisan 2024, 18:12:23Herkese merhaba.
HC05 Bluetooth modül üzerinden x;y formatında datalar alıyorum. x her zaman 1 byte ve harften oluşuyor. y ise içinde tam sayı barındıran 1 ile 4 byte arasında uzunluğu değişebilen dizi ve negatif sayılar da içerebiliyor.
haritalandırma gibi vs. birşey mi yapıyorsunuz hocam ?
Alıntı yapılan: mustafa_cmbz - 15 Nisan 2024, 22:40:51haritalandırma gibi vs. birşey mi yapıyorsunuz hocam ?
Mustafa Hocam kontrolü tamamen telefonda olan cihaz yapıyorum. İki taraflı haberleşme var.
Bluetooth bağlantısı yapıldığında cihaz o anki durumunu telefona bildiriyor. Daha sonra telefondan yapılırsa eğer değişiklikler cihaza aktarılıyor. İlk bytete bulunan harf sonraki bytelerdeki rakamların ne için kullanılacağını belirliyor. Cihazdan telefona giden datalarda sorun yok. ancak telefondan cihaza giden dataları okumayı sağlıklı yapamıyorum. Her byte içeriğini hesaplayıp int değişkene atıyorum ancak tek basamak, iki basamak, eksi tek basamak ve eksi çift basamak için ayrı fonksiyon yazmam gerekiyor. Bunun daha basit ve kolay yöntemlerini arıyorum
Keyword: Nmea0183
GPS verileri uart üzerinden gönderilirken
anahtar,A,B,C,D,E,F...
şeklinde gönderiliyor, ilk virgülden ikinciye kadar tarih, ikinciden üçüncüye kadar enlem, boylam, yön, açı gibi gibi devam ediyor.
Gönderici taraf siz iseniz araya gönderdiğiniz veri içinde bulunmayan ?@,!#-; gibi seperatör karakter kullanın. Bu sayede seperatör ile verileri ayırıp sonra tip dönüşümü yaparsınız. Hem anlaşılır hem de geliştirmeye açık olur. Bugün 5 komut varsa yarın 50 tane olabilir. Dereyi geçerken at değiştirmek zorunda kalmazsınız.
Alıntı yapılan: fide - 16 Nisan 2024, 09:23:00Keyword: Nmea0183
GPS verileri uart üzerinden gönderilirken
anahtar,A,B,C,D,E,F...
şeklinde gönderiliyor, ilk virgülden ikinciye kadar tarih, ikinciden üçüncüye kadar enlem, boylam, yön, açı gibi gibi devam ediyor.
Gönderici taraf siz iseniz araya gönderdiğiniz veri içinde bulunmayan ?@,!#-; gibi seperatör karakter kullanın. Bu sayede seperatör ile verileri ayırıp sonra tip dönüşümü yaparsınız. Hem anlaşılır hem de geliştirmeye açık olur. Bugün 5 komut varsa yarın 50 tane olabilir. Dereyi geçerken at değiştirmek zorunda kalmazsınız.
Hocam Formatım bu zaten. Tip dönüşümünde sıkıntı yaşıyorum. STM e gelen veriyi de ayrıştırıyorum, ama sayıları char formatındaki diziden int tipindeki değişkene sağlıklı aktaramıyorum.
Alıntı yapılan: papsukkal - 15 Nisan 2024, 18:12:23HC05 Bluetooth modül üzerinden x;y formatında datalar alıyorum. x her zaman 1 byte ve harften oluşuyor. y ise içinde tam sayı barındıran 1 ile 4 byte arasında uzunluğu değişebilen dizi ve negatif sayılar da içerebiliyor.
y nin içeriğindeki datayı int değişkenine atamam gerekiyor.
Bu metinden y içeriğini sağlıklı olarak parse edebildiğiniz anlaşılmıyor.
Parse işlemini içerecek şekilde öneride bulundum.
@fide haklısın. Şimdi ben de okuyunca sizin gibi algıladım.
Düzelttim.