Arduinodan Androide BT ile veri aktarmak

Başlatan hakanmelik, 21 Aralık 2015, 21:31:27

hakanmelik

Merhaba arkadaşlar,

Arduino ve sensörden veri okuyup HC-06 blueetooth modülü ile Android uygulamasına veri gönderiyorum. Bunun için developer.android sitesisindeki BluetootChat örneğini kullanıyorum. Bu uygulama ile bağlandım ve veri alışverişi sıkıntısız gerçekleşiyor.

Ama şöyle bir sorunum var. Andoid tarafında 3 adet TextView'i güncellemek istiyorum ama başaramıyorum. Sıkıntı ise gelen veri byte tipinde ve Arduinodan veri gönderirken hepsini aynı anda gönderiyor(3 sensör değerini, int olarak). Yani ben ayırt edemiyorum hangisi hangi veri. Peş peşe hepsini gönderiyor.

Android tarafında  Handler metodu altındaki
case Constants.MESSAGE_READ:

seçeneğinin altında varsayılan olarak


byte[] readBuf = (byte[]) msg.obj;


bu geliyor ve ben

sicaklikTX.setText( readBuf[0]  );

yapınca veriyi alabiliyorum. Eğer Arduino tarafında 3 tane veri gönderdiysem hepsini sırayla ekrana basıyor haliyle sadece son gönderiğim ekranda görünüyor. Yani eğer Arduino tarafında aşağıdaki gibi tek veri gönderseydim sıkıntı olmuyordu,

SoftwareSerial bt(12, 13);

bt.write(sicaklık);



Kısaca: Aynı kanaldan birden fazla veriyi nasıl gönderirim ve istediğim yere yazabilirim.

Şimdiden teşekkürler.

erdcan

uygulama kodlarınızı göremediğimden pratik çözüm önerisi olarak göndereceğiniz verilerin arasına karakter koyun.hersensör değerinden sonra# işareti ile veriyi gönderin. Android tarafında da # işaretini yakalayınca sensör değerini almış olursunuz.

peko

Alıntı Yaphepsini sırayla ekrana basıyor haliyle sadece son gönderiğim ekranda görünüyor.


byte[] bytes = {...}
String str = new String(bytes, "UTF-8"); // for UTF-8 encoding
byte[] b = new byte[1];
fos.read(b);
fos.close();
String message = new String(b);


StringBuilder builder = new StringBuilder();
for (String details : list2) {
   builder.append(details + "\n");
}

custName.setText(builder.toString());


" Bazıları zeka'sını iş'i zorlaştırmak için, bazıları ise kolaylaştırmak için kullanır.. "

hakanmelik

@erdcan
O karakter olayını denedim ama ama tam beceremedim.


hakanmelik

@peko
Hocam ilk yazdığınız kodda fos olayını anlamadım.
İkincisinde de for yapısını tam anlamadım. Biraz yardımcı olabilir misiniz ?

peko


Alıntı YapKısaca: Aynı kanaldan birden fazla veriyi nasıl gönderirim ve istediğim yere yazabilirim.

byte[] readBuf = (byte[]) msg.obj;
String message = new String(readBuf);

Bu şekilde message olarak aldığın bilgi nedir yazabilir misin?
" Bazıları zeka'sını iş'i zorlaştırmak için, bazıları ise kolaylaştırmak için kullanır.. "

hakanmelik

@peko
Eğer readBuf[0] dan okursam istediğim değeri sağlıklı okuyorum ama message den alirsam gelen veri biraz değişiyor. Mesela 30 ise gelen veri 45-50 gibi bisey oluyor .

protezdiyot

Hakan bey merhaba, bende benzer bir işlem yapmak istiyorum ve 3 gündür uğraşıyorum ama arpa boyu yol alamadım. Yardımcı olabilirseniz sevinirim. Öncelikle benim problemim android stüdyo. Elimde hc06 Bluetooth ile yapılmış bir proje var ve ben bu projeyi android stufyo ile açınca sadece kodları görebiliyorum. Telefonun ekranında butonları nasıl yerleştirilmiş bu ekranı göremiyorum. Bunu nasıl açabilirim? Yardımcı olabilirseniz mutlu olurum.

protezdiyot

Konu ile alakalı aşağıdaki linkte bir başlık açtım. İsterseniz oraya da yazabilirsiniz... Şimdiden teşekkürler  https://www.picproje.org/index.php?topic=62633.msg485061.msg#485061

hakanmelik

@protezdiyot

Hocam BluetoothChat örneğini %90 çözdüm. Muhtemelen senin çözümün bende. Bana mail adresini ver benim projeyi sana atayım gerekli yerleri düzenleyip kullanırsın.

Ben byte olarak veri alıp gönderebiliyorum.


protezdiyot

@hakanmelik mail attım adresinize. Teşekkürler şimdiden

ceka

çoktandır foruma girmedim belki aynı sorunu yaşayanlar vardır diye ekliyorum daha fazla yazı yazmaya gerek yok




https://www.youtube.com/watch?v=5YovICoYCLg&t=254s