我是Win7和WMI的新手.请告诉我从WiFi到哪里查看有效接入点以及如何为每个接入点获取ssid/rssi.
我用过:
ManagementClass mc = new ManagementClass("root\\WMI", "MSNdis_80211_ServiceSetIdentifier", null);
ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(@"root\wmi","SELECT * FROM MSNdis_80211_BSSIList");
Run Code Online (Sandbox Code Playgroud)
但我得到0结果.这个类是否支持Win7?有人可以帮忙吗?
我想在我的蓝牙设备范围内识别蓝牙设备,这意味着我想获得特定的设备接收信号强度指示器(RSSI).
是否有任何Java API用于获取特定设备的RSSI?
如果存在,请提供有关该Java API的信息.
我是Android新手,我的应用程序使用蓝牙从小型称重传感器接收数据.虽然在某些设备(三星)中,BT信号强度(RSSI)按预期变化(从大约-20,在短距离,到大约-80,在10米),在一些其他(一个LG型号,至少)RSSI非常奇怪,短距离大约200(正值!).我假设LG手机没有提供dBm的RSSI值.在所有情况下,三星平板电脑和LG手机始终连接到同一个远程设备(我的客户正在开发的放大器样本).实际上我的问题是,在这种情况下是否正常,不同的Android设备(或不同的Android版本)对同一API调用的回答不同.
我想阅读华为E3531的RSSI.所以我发现一些文档显示了使用AT命令获取这些信息的简单方法.问题是我甚至无法连接到我的华为E3531.我的意思是,它作为一个调制解调器工作得很好.我有很好的联系.但是当我在dev中寻找设备时,我发现2个设备("sdb"和"sgm")似乎是2个光盘,但与串口无关.
所以我尝试了一些事情,我发现: - 在我插入华为后,我发现Idvendor和Idproduct做了一个lsusb. - 他们做了一个sudo modprobe usbserial vendor = 0X"Idvendor"product = 0X"Idproduct" - 然后当我做dmesg我可以读到:
[ 1038.498282] usbcore: registered new interface driver usbserial
[ 1038.498299] usbcore: registered new interface driver usbserial_generic
[ 1038.498312] usbserial: USB Serial support registered for generic
Run Code Online (Sandbox Code Playgroud)
通常我应该有类似的东西:
usb 1-1: generic converter now attached to ttyUSB0
Run Code Online (Sandbox Code Playgroud)
我想我不得不说从我的mac看到sdb和sgm是不可能的,所以我是从我的Ubuntu做的.如果我启用我的wifi,调制解调器无法连接(所以我没有看到sdb和sgm)
如果有人需要它,这是dmesg的第一部分:
[ 742.756888] usb 3-1: USB disconnect, device number 6
[ 743.123706] usb 3-1: new high-speed USB device number 7 using xhci_hcd
[ 743.252854] usb 3-1: New USB device found, …
Run Code Online (Sandbox Code Playgroud) 我正在使用Moko H2 信标并使用此库来获取信标列表 我成功获取信标列表
扫描后我收到此类回复
[
{
"mac": "F2:EE:97:63:1B:B6",
"validDataHashMap": {
"20": {
"data": "20000bc117c0006673d201552aa1",
"type": 2
}
},
"rssi": -53
},
{
"name": "BeaconX",
"mac": "C4:7D:65:69:95:B7",
"validDataHashMap": {
"0afcc47d656995b7220164426561636f6e58": {
"data": "0afcc47d656995b7220164426561636f6e58",
"type": 4
}
},
"rssi": -58
},
{
"name": "BeaconX",
"mac": "D0:24:EA:4E:1F:B3",
"validDataHashMap": {
"0afcd024ea4e1fb3220164426561636f6e58": {
"data": "0afcd024ea4e1fb3220164426561636f6e58",
"type": 4
},
"20": {
"data": "20000bd91980005b4af60130014a",
"type": 2
}
},
"rssi": -59
},
{
"mac": "D3:B9:AF:E1:D7:D3",
"validDataHashMap": {
"1000016d6f6b6f736d61727400": {
"data": "1000016d6f6b6f736d61727400",
"type": 1 …
Run Code Online (Sandbox Code Playgroud) 在我的一个应用程序中,我需要显示与我的手机配对的所有wi-fi和蓝牙设备,以及它们的信号强度.有了wi-fi,我可以显示信号强度(RSSI).但我的蓝牙问题.我搜索了一些适合这项任务的方法; 我找到了一种方法:
intent.getShortExtra(BluetoothDevice.EXTRA_RSSI, Short.MIN_VALUE);
Run Code Online (Sandbox Code Playgroud)
但它只显示未与我的手机配对的新设备RSSI.是否有任何想法让所有蓝牙设备RSSI?
我试图通过点击按钮获得连接的蓝牙设备的当前RSSI值.但是它总是只返回-32768!不知道有什么不对!然而,当它第一次连接时,我能够获得正确的RSSI.
private Button.OnClickListener buttonRSSIOnClickListener = new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(BluetoothDevice.ACTION_FOUND);
short rssi = intent.getShortExtra(BluetoothDevice.EXTRA_RSSI,Short.MIN_VALUE);
Toast.makeText(getApplicationContext()," RSSI: " + rssi + "dBm", Toast.LENGTH_SHORT).show();
}};
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?
有谁知道从 rssi 将 GSM 网络覆盖率计算为百分比 (0 .. 100) 的公式吗?对于 8 位 AVR 微控制器 CPU 来说应该是安全的,没有硬核数学运算,如对数或除以不是 2^n 的东西(首选位移)。创建具有 32 个可能百分比值的数组是一个糟糕的解决方案。
可能的 rssi 值(0..31 是有效值):
0 -113 dBm or less
1 -111 dBm
2...30 -109... -53 dBm
31 -51 dBm or greater
99 not known or not detectable
Run Code Online (Sandbox Code Playgroud)
我想要的近似值:
RSSI %
0 0
1 3
2 6
3 10
4 13
5 16
6 19
7 23
8 26
9 29
10 32
11 36
12 39
13 42
14 …
Run Code Online (Sandbox Code Playgroud) 我正在Android Studio中进行BLE项目,并想读取我已连接的设备的RSSI值。到目前为止,我已经能够通过LE Scan发现新设备并从那里获取其RSSI。但是,一旦我连接到设备,就无法再运行扫描并获取RSSI。
这是用于在连接新设备之前发现它们的代码。但是不确定与我的问题有多相关:
private BluetoothAdapter.LeScanCallback mLeScanCallback =
new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device,final int rssi, byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mLeDeviceListAdapter.addDevice(device, rssi);
//mLeDeviceListAdapter.notifyDataSetChanged();
try {
mLeDeviceListAdapter.notifyDataSetChanged();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
};
Run Code Online (Sandbox Code Playgroud)
提前致谢