Re: [問題] 平板藍芽連多個device收Data

作者: ZCBVXIRD (Alonso)   2014-07-28 12:26:18
※ 引述《ZCBVXIRD (Alonso)》之銘言:
: 大家好
: 想請問平板手機一個藍芽是否能同時和多個device連線收Data?
: 目前試過能同時和2~6個連線(同時建多個socket)
: 但收取Data時(getInputStream),
: 都會拿到"同樣"的數據(第2~6號device拿到的和第1號一樣)
: 不知道這是原本就該這樣(沒辦法同時收多組data)
: 還是可能是我的寫法有誤?
: 謝謝!
自己檢查感覺沒有問題
想請有經驗的大大幫我看看哪裡出問題了@@
以下是部分code
MainActivity class下
private class Connect extends Thread {
@Override
public void run() {
...
try {
for (int i = 0; i < 6; i++) {
MAAPP.Open(pECG[i]); 執行MainApplication的Open method
Thread.sleep(10*1000);
}
}
} catch (Exception e) {
}
...
}
MainApplication Class下(下面的code都在同個class下)
public void Open(ECG pECG) {
if (service != null) {
service.schedule(new TdOpen(pECG), 1000, TimeUnit.MICROSECONDS);
} //執行TdOpen(下面的code)
}
//下面這個code 是跟device的連線,因為是implements runnable,
//所以會跟六個device連線(確定是連到6個不同mac的device)
private class TdOpen implements Runnable {
...
public void run() {
BluetoothAdapter mmBtAdapter = BluetoothAdapter.getDefaultAdapter();
BluetoothSocket mSocket = null;
try {
BluetoothDevice dev = mmBtAdapter.getRemoteDevice(mMac);
mSocket = dev.createRfcommSocketToServiceRecord
("00001101-0000-1000-8000-00805F9B34FB");
mSocket.connect();
vConnectSuccess = true;
} catch (Exception exp) {
}
if (vConnectSuccess) {
TdBtReceiving aBtReceiving = new TdBtReceiving(mSocket,
mdevName, mMac);
...
}
...
}
}
//下面這個是做資料讀取,
private class TdBtReceiving implements Runnable {
...
public void run() {
try {
InputStream iStream = btSocket.getInputStream();
ECGproccess mECG = new Digio2_Hemoxi(mHandler, devMac);
mECG.readData(iStream);//呼叫另外一個Class的method處理data
//(public void readData(InputStream piStream) throws Exception)
// 結果6個device的data竟然都是一樣的
}
} catch (Exception e) {
}
...
}
}
排版有點亂@@
不知道能不能看出問題(可以連6個device,最後卻只會收到"一種"data)出在哪裡?
謝謝~!!
若有違反版規會自刪
作者: ZCBVXIRD (Alonso)   2014-07-29 00:42:00
研究後發現,inputstream是共用的,存有6個device傳來的資料(看谁先到誰在前),而6個socket會同時從這個inputstream抓資料,所以會一起拿到一樣的所以應該無解orz

Links booklink

Contact Us: admin [ a t ] ucptt.com