我试图在没有连接到传感器的情况下接收广告数据,我使用了onScanResult
功能。我logcat
结果,然后我得到:
ScanResult{mDevice=A4:34:F1:3A:AF:XX, mScanRecord=ScanRecord
[mAdvertiseFlags=6, mServiceUuids=null, mManufacturerSpecificData={},
mServiceData={}, mTxPowerLevel=-2147483648, mDeviceName=XXXX],
mRssi=-67, mTimestampNanos=1445086508079000}
mDevice和mDeviceName和mRssi是正确的,然后我尝试获取mScanRecord
,它以字节数组格式,我尝试将其转换为十六进制表示:然后我有这个结果
02010606094D734F6E65000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000
数据首次改变然后保持这样的第一个问题,我收到的数据与我在RPI中使用python脚本测试的原始数据不一样,这是在RPI中扫描的结果< / p>
a4:34:f1:3a:af:ab,54540400201818000e00000000000000,-74
a4:34:f1:3a:af:ab,5252040313061f015500050000020001,-84
谢谢你的帮助
答案 0 :(得分:0)
我注意到的第一件事是你的数据包中<div [formGroup]="form">
<ng-container [ngSwitch]="fieldOption.type">
<mat-form-field *ngSwitchCase="'input'">
<input matInput placeholder="{{fieldOption.label}}" [formControlName]="fieldOption.name">
<mat-error *ngIf="fieldErrors()['required']">
This field is required.
</mat-error>
<mat-error *ngIf="fieldErrors()['maxlength']">
Should be {{fieldOption.maxLength}} characters or less.
</mat-error>
</mat-form-field>
<mat-form-field *ngSwitchCase="'choice'">
<mat-select placeholder="{{fieldOption.label}}" [formControlName]="fieldOption.name">
<mat-option *ngFor="let choice of fieldOption.choices" [value]="choice.value">
{{choice['display_name']}}
</mat-option>
</mat-select>
<mat-error *ngIf="fieldErrors()['required']">
This field is required.
</mat-error>
<mat-error *ngIf="fieldErrors()['maxlength']">
Should be {{fieldOption.maxLength}} characters or less.
</mat-error>
</mat-form-field>
</ng-container>
</div>
表示ADV数据包有110字节的有效载荷数据,这在技术上是不可能的,或者没有意义。假设6E
是您的标头(2个字节)而0201
是设备地址(6个字节)是正确的。您可以使用其他扫描仪扫描您的数据包,例如您的树莓派,仔细检查它。
如何看待这个答案; https://stackoverflow.com/a/22569917/1505341
那里收到的数据包结构有问题。我还在Android上甚至在iOS上使用BLE扫描仪应用程序检查它,以确保无疑。据我所知,北欧有一个很好的。不知道这些天来用于扫描原始BLE数据包的最佳应用是什么。