我收到的数据与原始数据不同

时间:2018-03-08 09:33:55

标签: android bluetooth-lowenergy

我试图在没有连接到传感器的情况下接收广告数据,我使用了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

谢谢你的帮助

1 个答案:

答案 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数据包的最佳应用是什么。