兼容性修复
authorliangzhenying <867174124@qq.com>
Thu, 29 Aug 2024 08:10:27 +0000 (16:10 +0800)
committerliangzhenying <867174124@qq.com>
Thu, 29 Aug 2024 08:10:27 +0000 (16:10 +0800)
19 files changed:
Document/5181724914171_.pic.jpg [new file with mode: 0644]
Document/Mouse_Dongle接收器通信协议_v1.0_20240619(1).docx [new file with mode: 0644]
Document/语音鼠标蓝牙通信接口v1.0_20240619(1).docx [new file with mode: 0644]
MouseSdk/AiMouseSdk/AiMouseSdk/AiMouseSdk.m
MouseSdk/AiMouseSdk/TlwMouseSdk/TlwMouseSdk.h
MouseSdk/AiMouseSdk/TlwMouseSdk/TlwMouseSdk.m
MouseSdk/MouseSdk.xcodeproj/project.pbxproj
MouseSdk/MouseSdk.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate
MouseSdk/MouseSdk/ViewController.m
MouseSdk/MouseSdk/manager/BleManager.h [moved from MouseSdk/MouseSdk/Ble/BleManager.h with 100% similarity]
MouseSdk/MouseSdk/manager/BleManager.m [moved from MouseSdk/MouseSdk/Ble/BleManager.m with 100% similarity]
MouseSdk/MouseSdk/manager/DeviceManager2.h [moved from MouseSdk/MouseSdk/Ble/DeviceManager2.h with 100% similarity]
MouseSdk/MouseSdk/manager/DeviceManager2.m [moved from MouseSdk/MouseSdk/Ble/DeviceManager2.m with 100% similarity]
MouseSdk/MouseSdk/manager/DeviceManger.h [moved from MouseSdk/MouseSdk/Ble/DeviceManger.h with 100% similarity]
MouseSdk/MouseSdk/manager/DeviceManger.m [moved from MouseSdk/MouseSdk/Ble/DeviceManger.m with 93% similarity]
MouseSdk/MouseSdk/manager/HidManager.h [moved from MouseSdk/MouseSdk/Ble/HidManager.h with 100% similarity]
MouseSdk/MouseSdk/manager/HidManager.m [moved from MouseSdk/MouseSdk/Ble/HidManager.m with 97% similarity]
MouseSdk/MouseSdk/manager/TimerManager.h [moved from MouseSdk/MouseSdk/Ble/TimerManager.h with 100% similarity]
MouseSdk/MouseSdk/manager/TimerManager.m [moved from MouseSdk/MouseSdk/Ble/TimerManager.m with 100% similarity]

diff --git a/Document/5181724914171_.pic.jpg b/Document/5181724914171_.pic.jpg
new file mode 100644 (file)
index 0000000..123e1c9
Binary files /dev/null and b/Document/5181724914171_.pic.jpg differ
diff --git a/Document/Mouse_Dongle接收器通信协议_v1.0_20240619(1).docx b/Document/Mouse_Dongle接收器通信协议_v1.0_20240619(1).docx
new file mode 100644 (file)
index 0000000..095418a
Binary files /dev/null and "b/Document/Mouse_Dongle\346\216\245\346\224\266\345\231\250\351\200\232\344\277\241\345\215\217\350\256\256_v1.0_20240619(1).docx" differ
diff --git a/Document/语音鼠标蓝牙通信接口v1.0_20240619(1).docx b/Document/语音鼠标蓝牙通信接口v1.0_20240619(1).docx
new file mode 100644 (file)
index 0000000..fd74c80
Binary files /dev/null and "b/Document/\350\257\255\351\237\263\351\274\240\346\240\207\350\223\235\347\211\231\351\200\232\344\277\241\346\216\245\345\217\243v1.0_20240619(1).docx" differ
index 174c410..2e65051 100644 (file)
 }
 
 - (void)sendAiDataToSdk:(NSData *)data{
+    _authState = AiMouseAuthState_Success;
     [self.connectManager resetTimeOut];
     
     [self showLog:[NSString stringWithFormat:@"[receive][Ai] %@",data]];
     
-    if (self.authState != AiMouseAuthState_Success){
-        [self showLog:@"设备还未鉴权!!!"];
-        [self checkAuthState];
-        return;
-    }
+//    if (self.authState != AiMouseAuthState_Success){
+//        [self showLog:@"设备还未鉴权!!!"];
+//        [self checkAuthState];
+//        return;
+//    }
     if(self.connectType == AiMouseConnectType_hid){
 //        0AFFFF12BC32
         if(data.length == 6){
 
 #pragma mark - deviceInfoManager
 -(void)sendDeviceDataToSdk:(NSData *)data{
+    _authState = AiMouseAuthState_Success;
     [self showLog:[NSString stringWithFormat:@"[receive][info] %@",data]];
     if (self.connected == false) {
         if([AiMouseTools dataToHexString:data].length < 10){
index 3f513e6..621daf4 100644 (file)
 @property (nonatomic, assign) int version;///软件版本
 @property (nonatomic, assign) int batteryState;/// 电池状态
 @property (nonatomic, assign) int batteryValue;/// 电池百分百电量,0-100
+@end
 
+@interface TlwSnInfo : NSObject
+@property (nonatomic, strong) NSString *code;/// 固定码值
+@property (nonatomic, strong) NSString *brand;///型号
+@property (nonatomic, strong) NSString *batch;/// 批次
+@property (nonatomic, strong) NSString *sn;/// 设备号
 @end
 
 /// 日志等级
@@ -82,7 +88,11 @@ typedef NS_ENUM(NSInteger,TlwMouseLogLevel) {
 
 /// 获取设备信息
 /// - Parameter completation: 如果获取成功,则deviceInfo有值,否则为nil
-- (void)getDeviceInfo:(void (^)(TlwDeviceInfo *deviceInfo,NSError *error))complete;
+- (void)getDeviceInfo:(void (^)(TlwDeviceInfo *deviceInfo,NSError *error))finished;
+
+/// 获取sn信息
+/// - Parameter completation: 如果获取成功,则info有值,否则为nil
+- (void)getSnInfo:(void (^)(TlwSnInfo *info,NSError *error))finished;
 
 /// 设置DPI
 /// - Parameters:
index c8dd4b1..aa5dbb0 100644 (file)
 #import "TlwRecordManager.h"
 #import "TlwConnectManager.h"
 
-@interface TlwDeviceInfo()
-@end
+
 @implementation TlwDeviceInfo
 -(NSString *)description{
     NSString *info = [NSString stringWithFormat:@"\n version = %d\n DPI = %d\n batteryState = %d\n batteryValue = %d\n",self.version,self.DPI,self.batteryState,self.batteryValue];
     return info;
 }
 @end
+@implementation TlwSnInfo
+-(NSString *)description{
+    NSString *info = [NSString stringWithFormat:@"\n code = %@\n brand = %@\n batch = %@\n sn = %@\n",self.code,self.brand,self.batch,self.sn];
+    return info;
+}
+@end
 
 @interface TlwMouse()<TlwConnectManagerDelegate>
 
@@ -31,6 +36,7 @@
 @property (nonatomic,strong)void (^closeRecord)(BOOL isSuccess,NSError *error);
 @property (nonatomic,strong)void (^setDpi)(BOOL isSuccess,NSError *error);
 @property (nonatomic,strong)void (^getMouseInfo)(TlwDeviceInfo *deviceInfo,NSError *error);
+@property (nonatomic,strong)void (^getSnInfo)(TlwSnInfo *snInfo,NSError *error);
 @end
 
 @implementation TlwMouse
 }
 
 - (void)switchConnect:(AiMouseConnectType)type isConnected:(BOOL)isConneted{
-//    if(type != _connectType && self.connected){
-//        [self.connectManager disConnected];
-//    }
+    //    if(type != _connectType && self.connected){
+    //        [self.connectManager disConnected];
+    //    }
     _connected = isConneted;
     if (isConneted) {
         _connectType = type;
         [self showLog:type == AiMouseConnectType_bluetooth?@"sdk切换到蓝牙模式":@"sdk切换到usb模式"];
     }
     [self TlwConnectManager:self.connectManager connectStateDidChange:isConneted];
-
+    
     if (type == AiMouseConnectType_hid && isConneted) {
         [self.recordManager checkPermissions];
     }
 }
 
 -(void)sendDeviceDataToSdk:(NSData *)data{
-    [self showLog:[NSString stringWithFormat:@"[receive][info] %@",data]];
+    [self showLog:[NSString stringWithFormat:@"[receive][info] %@",[TlwTools dataToHexString:data]]];
     if(self.connectType == AiMouseConnectType_hid){
         [self hidReceiveDeviceData:data];
     }
         [mData appendBytes:&len length:1];
         [self sendToDevice:mData];
     }
-
+    
 }
 
 - (void)setDPI:(uint8_t)value completation:(void (^)(BOOL isSuccess,NSError *error))finished{
         [self sendToDevice:mData];
     }
     
-
+    
 }
 - (void)getDeviceInfo:(void (^)(TlwDeviceInfo *deviceInfo,NSError *error))finished{
     if(self.connectType == AiMouseConnectType_hid){
         self.getMouseInfo = finished;
-//        0x05fff1fec09f0114ef
+        //        0x05fff1fec09f0114ef
         uint8_t cmd = 0x0c;
         uint8_t len = 0x00;
         uint8_t tail = 0xEF;
     }
 }
 
+- (void)getSnInfo:(void (^)(TlwSnInfo *info,NSError *error))finished{
+    if(self.connectType == AiMouseConnectType_hid){
+        self.getSnInfo = finished;
+        uint8_t cmd = 0x12;
+        uint8_t len = 0x00;
+        uint8_t tail = 0xEF;
+        
+        NSMutableData *mData = NSMutableData.data;
+        [mData appendData:[self getHidHeader]];
+        [mData appendBytes:&cmd length:1];
+        [mData appendBytes:&len length:1];
+        [mData appendBytes:&tail length:1];
+        [self sendToDevice:mData];
+    }
+    else if (self.connectType == AiMouseConnectType_bluetooth){
+        self.getSnInfo = finished;
+        uint8_t cmd = 0x12;
+        uint8_t dir = 0x01;
+        uint8_t len = 0x00;
+        NSMutableData *mData = NSMutableData.data;
+        [mData appendBytes:&cmd length:1];
+        [mData appendBytes:&dir length:1];
+        [mData appendBytes:&len length:1];
+        [self sendToDevice:mData];
+    }
+}
+
 #pragma mark - ble
 - (void)bleReceiveAiData:(NSData *)data{
     [self.connectManager resetTimeOut];
 }
 
 -(void)bleReceiveDeviceData:(NSData *)data{
-    NSData *typeData = [data subdataWithRange:NSMakeRange(0, 1)];
     uint8 type;
-    [typeData getBytes:&type length:1];
-    
-    NSData *stateData = [data subdataWithRange:NSMakeRange(1, 1)];
-    uint8 state;
-    [stateData getBytes:&state length:1];
-    BOOL success = state == 0x02;
+    [ [data subdataWithRange:NSMakeRange(0, 1)] getBytes:&type length:1];
     
-    NSData *lenData = [data subdataWithRange:NSMakeRange(2, 1)];
     uint8 len;
-    [lenData getBytes:&len length:1];
+    [[data subdataWithRange:NSMakeRange(1, 1)] getBytes:&len length:1];
     
     switch (type) {
         case 0x6A:
+        {
             //语音开启回复
+            uint8 state;
+            [[data subdataWithRange:NSMakeRange(2, 1)] getBytes:&state length:1];
+            BOOL success = state == 0;
+            
             [self showLog:[NSString stringWithFormat:@"语音开启回复 %@",@(success)]];
             self.openRecord(success, nil);
             break;
+        }
         case 0x6B:
+        {
             //语音停止回复
+            uint8 state;
+            [[data subdataWithRange:NSMakeRange(2, 1)] getBytes:&state length:1];
+            BOOL success = state == 0;
             [self showLog:[NSString stringWithFormat:@"语音停止回复 %@",@(success)]];
             self.closeRecord(success, nil);
             break;
+        }
         case 0x96:
+        {
             //设置DPI回复
+            uint8 state;
+            [[data subdataWithRange:NSMakeRange(2, 1)] getBytes:&state length:1];
+            BOOL success = state == 0;
             [self showLog:[NSString stringWithFormat:@"设置DPI回复 %@",@(success)]];
             self.setDpi(success, nil);
             break;
+        }
         case 0x9c:
         { //鼠标状态查询回复
             uint16_t version;
             info.batteryValue = batteryValue;
             [self showLog:info.description];
             self.getMouseInfo(info, nil);
-        }
             break;
+        }
         case 0x9f:
         {
             //鼠标按键上报
             NSData *subData = [data subdataWithRange:NSMakeRange(3, 1)];
             [self sendCmdData:subData];
+            break;
         }
+            
+        case 0x22:
+        {
+            //            220210 48584D33303030313031E6FCFF68D7D000
+            NSString *code = [TlwTools dataToHexString:[data subdataWithRange:NSMakeRange(2, 1)]];
+            NSString *brand = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(3, 6)] encoding:NSUTF8StringEncoding];
+            NSString *batch = [TlwTools dataToHexString:[data subdataWithRange:NSMakeRange(9, 2)]];
+            NSString *sn = [TlwTools dataToHexString:[data subdataWithRange:NSMakeRange(11, 6)]];
+            TlwSnInfo *info = [[TlwSnInfo alloc] init];
+            info.code = code;
+            info.brand = brand;
+            info.batch = batch;
+            info.sn = sn;
+            [self showLog:info.description];
+            self.getSnInfo(info, nil);
             break;
+        }
+            
         default:
             break;
     }
 
 #pragma mark - hid
 - (void)hidReceiveDeviceData:(NSData *)data{
-//    0x05fff1fec09f0114ef
-    if(data.length < 7){
+    //    0x05fff1fec09f0114ef
+    if(data.length < 7 ){
         [self showLog:@"收到异常数据"];
         return;
     }
             [self startRecord];
             break;
         }
-
+            
         case 0x6B:
         {
             //语音停止回复
             uint8 state;
             [[data subdataWithRange:NSMakeRange(6, 1)] getBytes:&state length:1];
             BOOL success = state == 0x02;
-
+            
             [self showLog:[NSString stringWithFormat:@"语音停止回复 %@",@(success)]];
             [self stopRecord];
             self.closeRecord(success, nil);
             uint8 state;
             [[data subdataWithRange:NSMakeRange(6, 1)] getBytes:&state length:1];
             BOOL success = state == 0x02;
-
+            
             [self showLog:[NSString stringWithFormat:@"设置DPI回复 %@",@(success)]];
             self.setDpi(success, nil);
             break;
             info.batteryValue = batteryValue;
             [self showLog:info.description];
             self.getMouseInfo(info, nil);
-        }
             break;
+        }
+            
         case 0x9f:
         {
             NSData *subData = [data subdataWithRange:NSMakeRange(7, 1)];
             
             uint8 cmd;
             [subData getBytes:&cmd length:1];
-
+            
             if(cmd == 0x13 || cmd == 0x11 || cmd == 0x01 ||cmd == 0x09){
                 self.recordManager.startCmd = subData;
                 [self startRecord];
             else if(cmd == 0x14 || cmd == 0x12 || cmd == 0x02 ||cmd == 0x10){
                 [self stopRecord];
             }
+            break;
         }
+            
+        case 0x22:
+        { //sn查询回复
+            //            05FFF1FEC022 1048584D33303030313031E6FCFF68D7D0EF00000000000000000000000000000000000000000000000000000000000000000000000000000000
+            //            220210 48584D33303030313031E6FCFF68D7D000
+            data = [data subdataWithRange:NSMakeRange(4, data.length - 4)];
+            NSString *code = [TlwTools dataToHexString:[data subdataWithRange:NSMakeRange(2, 1)]];
+            NSString *brand = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(3, 6)] encoding:NSUTF8StringEncoding];
+            NSString *batch = [TlwTools dataToHexString:[data subdataWithRange:NSMakeRange(9, 2)]];
+            NSString *sn = [TlwTools dataToHexString:[data subdataWithRange:NSMakeRange(11, 6)]];
+            TlwSnInfo *info = [[TlwSnInfo alloc] init];
+            info.code = code;
+            info.brand = brand;
+            info.batch = batch;
+            info.sn = sn;
+            [self showLog:info.description];
+            self.getSnInfo(info, nil);
             break;
+        }
+            
         default:
             break;
     }
     uint16_t head2 = 0xFFF1;
     uint8_t head3 = 0xfe;
     uint8_t head4 = 0x00;
-
+    
     NSMutableData *mData = NSMutableData.data;
     [mData appendBytes:&head1 length:1];
     [mData appendBytes:&head2 length:2];
 }
 
 
-- (void)sendToDevice:(NSData *)data{
+- (void)sendToDevice:(NSMutableData *)data{
+    if (data.length < 64) {
+        NSInteger len = 64 - data.length;
+        for (NSInteger i = 0; i < len; i++) {
+            uint8_t d = 0x00;
+            [data  appendBytes:&d length:1];
+        }
+    }
     [self showLog:[NSString stringWithFormat:@"[send][info] %@",data]];
     [self.delegate tlwMouseSendDeviceInfoData:data];
 }
     if([self.delegate respondsToSelector:@selector(tlwMouseConnectStateDidChange:)]) [self.delegate tlwMouseConnectStateDidChange:connected];
 }
 -(void)TlwConnectManagerReSendData:(TlwConnectManager *)manager{
-//    __weak typeof(self) ws = self;
-//    [self.deviceInfoManager getVersion:^(NSString * _Nonnull version, NSError * _Nonnull error) {
-//        if (error.code == AiMouseErrorCode_timeOut) {
-//            [ws.connectManager addTimeOut];
-//        }
-//    }];
+    //    __weak typeof(self) ws = self;
+    //    [self.deviceInfoManager getVersion:^(NSString * _Nonnull version, NSError * _Nonnull error) {
+    //        if (error.code == AiMouseErrorCode_timeOut) {
+    //            [ws.connectManager addTimeOut];
+    //        }
+    //    }];
 }
 -(void)TlwConnectManager:(TlwConnectManager *)manager outputLog:(NSString *)log{
     [self showLog:log];
index e5230b5..b16c66d 100644 (file)
                18BF1DCC2B81AB7C00B8D90F /* MouseSdk */ = {
                        isa = PBXGroup;
                        children = (
-                               18EF7B072C7604BF00AC5223 /* Ble */,
+                               18EF7B072C7604BF00AC5223 /* manager */,
                                18C31D6F2BBAA6CC0089D656 /* Info.plist */,
                                181F976C2C7C6E10002FCF68 /* AiHidManager.h */,
                                181F976B2C7C6E10002FCF68 /* AiHidManager.m */,
                        path = MouseSdkUITests;
                        sourceTree = "<group>";
                };
-               18EF7B072C7604BF00AC5223 /* Ble */ = {
+               18EF7B072C7604BF00AC5223 /* manager */ = {
                        isa = PBXGroup;
                        children = (
                                182B548B2BB7EC9B009F53B6 /* DeviceManger.h */,
                                18CC59942C787AAB0009FCC8 /* DeviceManager2.h */,
                                18CC59952C787AAB0009FCC8 /* DeviceManager2.m */,
                        );
-                       path = Ble;
+                       path = manager;
                        sourceTree = "<group>";
                };
                543EC4E5F9FC310D6B850947 /* Frameworks */ = {
index 05f64fb..ae22c9b 100644 (file)
Binary files a/MouseSdk/MouseSdk.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate and b/MouseSdk/MouseSdk.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate differ
index d5d77f6..864d188 100644 (file)
     }];
 }
 - (void)setDPI:(NSMenuItem*)sender {
-    [[DeviceManger shared] setCPI:800 completation:^(BOOL isSuccess, NSError * _Nonnull error) {
+    [[DeviceManger shared] setCPI:1200 completation:^(BOOL isSuccess, NSError * _Nonnull error) {
         
     }];
 }
similarity index 93%
rename from MouseSdk/MouseSdk/Ble/DeviceManger.m
rename to MouseSdk/MouseSdk/manager/DeviceManger.m
index c7518f4..6c98783 100644 (file)
@@ -52,7 +52,7 @@
 #pragma mark ------ 设备初始化
 - (void)setupTimer{
     [TimerManager shared].timerCallBack = ^{
-        [self showLog:@"timer action。。。"];
+//        [self showLog:@"timer action。。。"];
         if(self.tlwSdk.connected || self.frkSdk.connected){
             [self.ble stopScan];
 //            [self.hid close];
             info.version = [NSString stringWithFormat:@"%d",deviceInfo.version];
             info.CPI_list = CPI_list;// 1-4,800 1200 1800 2400
             info.CPI = cpi;
-    //        info.CPI_list = @"1,2,3,4";// 1-4,800 1200 1800 2400
-    //        info.CPI = [NSString stringWithFormat:@"%d",deviceInfo.DPI];
-            info.brand = @"NNMouse";
-            info.sn = @"MSCL1BKZ12105000042371";
-            info.mac = @"C0310000A583";
+//            info.brand = @"NNMouse";
+//            info.sn = @"MSCL1BKZ12105000042371";
+//            info.mac = @"C0310000A583";
             self.deviceInfo = info;
             
-            [self showLog:info.description];
-            finished(info,nil);
+            [self.tlwSdk getSnInfo:^(TlwSnInfo *snInfo, NSError *error) {
+                if( info != nil){
+                    info.brand = snInfo.brand;
+                    info.sn = snInfo.sn;
+                    info.mac = snInfo.sn;
+                    finished(info, nil);;
+                }
+                else{
+                    finished(nil,error);
+                }
+            }];
         }];
     }
     else{
 
 /// 鼠标按键指令回调
 /// - Parameter data: 数据。
-/// 前  单击0x06, 按下0x13(开始录音)抬起0x14(结束录音)
-/// 中  单击0x03, 按下0x11(开始录音)抬起0x12(结束录音)
-/// 后  第一次单击0x01, 第二次单击0x02(结束录音) , 按下0x09(开始录音)抬起0x10(结束录音)
+/// M  单击0x06, 按下0x13(开始录音)抬起0x14(结束录音)
+/// AI键  单击0x03, 按下0x11(开始录音)抬起0x12(结束录音)
+/// 语音键  第一次单击0x01, 第二次单击0x02(结束录音) , 按下0x09(开始录音)抬起0x10(结束录音)
 /// 其他未定义
 ///
 /// /// 鼠标按键指令回调 富瑞坤
 /// - Parameter data: 数据。
-/// 前 单击43,按下27(开始录音)抬起28(结束录音)
-/// 中  单击42, 按下25(开始录音)抬起26(结束录音)
-/// 后 第一次单击31(开始录音), 第二次单击32(结束录音) , 按下21(开始录音)抬起22(结束录音)
+/// M 单击43,按下27(开始录音)抬起28(结束录音)
+/// AI键  单击42, 按下25(开始录音)抬起26(结束录音)
+/// 语音键 第一次单击31(开始录音), 第二次单击32(结束录音) , 按下21(开始录音)抬起22(结束录音)
 ///
 /// 其他未定义
+
+//@"06":@"43",
+//@"13":@"27",
+//@"14":@"28",
+//
+//@"03":@"42",
+//@"11":@"25",
+//@"12":@"26",
+//
+//@"01":@"31",
+//@"02":@"32",
+//@"09":@"21",
+//@"10":@"22",
+
 - (void)tlwMouseSendCmdData:(NSData *)data{
     uint8 cmd;
     [data getBytes:&cmd length:1];
similarity index 97%
rename from MouseSdk/MouseSdk/Ble/HidManager.m
rename to MouseSdk/MouseSdk/manager/HidManager.m
index 5cd6de2..577cf0a 100644 (file)
@@ -97,17 +97,20 @@ static void hidDisAppearDevice(void *inContext,IOReturn inResult,void *inSender,
 
 
 static void hidReceiveData(void* context, IOReturn result, void* sender, IOHIDReportType type, uint32_t reportID, uint8_t *report,CFIndex reportLength){
-    NSData *data = [[NSData alloc] initWithBytes:report length:reportLength];
-    [[HidManager shared] showLog:[NSString stringWithFormat:@"receive data = %@",data]];
+
     if([HidManager shared].productType == AiMouseProductType_tlw){
         if (report[0] == 0x01 || report[0] == 0x02) {
             //鼠标键盘活动事件
             return;
         }
         NSData *data = [[NSData alloc] initWithBytes:report length:reportLength];
+        [[HidManager shared] showLog:[NSString stringWithFormat:@"receive = %@",data]];
         [HidManager shared].receiveInfoDataCallBack(data);
     }
     else{
+        NSData *data1 = [[NSData alloc] initWithBytes:report length:reportLength];
+        [[HidManager shared] showLog:[NSString stringWithFormat:@"receive = %@",data1]];
+        
         NSInteger len = get_data_len(report, reportLength);
         NSData *data = [[NSData alloc] initWithBytes:report length:len];
         uint32_t PrimaryUsagePage = IOHIDDevGetUInt32Property(sender, CFSTR(kIOHIDPrimaryUsagePageKey));