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