|
@@ -89,17 +89,38 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-- (int)getBCC:(NSData*)data
|
|
|
+- (void)upLoadFileFunServiceResponseFun:(NSDictionary *)dataDict
|
|
|
{
|
|
|
- int bcc = 0;
|
|
|
- for (int i = 0; i < [data length]; i++) {
|
|
|
- Byte buffer;
|
|
|
- [data getBytes:&buffer range:NSMakeRange(i, 1)];
|
|
|
- bcc = (UInt8) (bcc ^ buffer);
|
|
|
+ if (self.indexOfUploadFlie < self.cutFileDataArr.count - 1) {
|
|
|
+ self.indexOfUploadFlie ++;
|
|
|
+ [self upLoadFileFun];
|
|
|
+
|
|
|
|
|
|
- //HLog(@"bcc 222 %d",bcc);
|
|
|
}
|
|
|
-
|
|
|
+ else{
|
|
|
+ HLog(@"上传完成");
|
|
|
+ }
|
|
|
+}
|
|
|
+//- (int)getBCC:(NSData*)data
|
|
|
+//{
|
|
|
+// int bcc = 0;
|
|
|
+// for (int i = 0; i < [data length]; i++) {
|
|
|
+// Byte buffer;
|
|
|
+// [data getBytes:&buffer range:NSMakeRange(i, 1)];
|
|
|
+// bcc = (UInt8) (bcc ^ buffer);
|
|
|
+//
|
|
|
+// //HLog(@"bcc 222 %d",bcc);
|
|
|
+// }
|
|
|
+//
|
|
|
+// return bcc;
|
|
|
+//}
|
|
|
+
|
|
|
+- (Byte)getBCC:(NSData *)data {
|
|
|
+ Byte bcc = 0;
|
|
|
+ unsigned char *bytes = (unsigned char *)[data bytes];
|
|
|
+ for (int i = 0; i < [data length]; i++) {
|
|
|
+ bcc = (Byte)(bcc ^ bytes[i]);
|
|
|
+ }
|
|
|
return bcc;
|
|
|
}
|
|
|
|
|
@@ -120,7 +141,7 @@
|
|
|
|
|
|
NSUInteger allLength = data.length;
|
|
|
|
|
|
- NSUInteger subs = 1*1024;//4096;//要切片的大小,我这里设置的是4096字节
|
|
|
+ NSUInteger subs = 5*1024;//4096;//要切片的大小,我这里设置的是4096字节
|
|
|
|
|
|
NSInteger index = 0;//起始位置
|
|
|
|
|
@@ -159,19 +180,43 @@
|
|
|
return dataArray;
|
|
|
}
|
|
|
|
|
|
+// int转NSData
|
|
|
+- (NSData *)int2Data:(int)i{
|
|
|
+ Byte b0 = i & 0xff;
|
|
|
+ Byte b1 = i >> 8 & 0xff;
|
|
|
+ Byte b2 = i >> 16 & 0xff;
|
|
|
+ Byte b3 = i >> 24 & 0xff;
|
|
|
+ // 有大小端模式问题?
|
|
|
+ //Byte result[] = {b0, b1, b2, b3};
|
|
|
+ Byte result[] = {b3, b2, b1, b0};
|
|
|
+ return [NSData dataWithBytes:result length:sizeof(result)];
|
|
|
+}
|
|
|
+
|
|
|
+// short转NSData
|
|
|
+- (NSData *)short2Data:(short)i{
|
|
|
+ Byte b0 = i & 0xff;
|
|
|
+ Byte b1 = i >> 8 & 0xff;
|
|
|
+ // 有大小端模式问题?
|
|
|
+ //Byte result[] = {b0, b1, b2, b3};
|
|
|
+ Byte result[] = { b1, b0};
|
|
|
+ return [NSData dataWithBytes:result length:sizeof(result)];
|
|
|
+}
|
|
|
+
|
|
|
#pragma mark 可以发送文件了
|
|
|
/*
|
|
|
文件数据字节流byte[]
|
|
|
格式1:下载日志文件压缩包
|
|
|
- |head|msgType|taskId|datalen| curNum | totalNum| data |bcc校验|end|
|
|
|
- 长度: 1 1 6 4 2 2 datalen-4 1 1
|
|
|
+ |head|msgType|taskId| datalen | curNum | totalNum| data |bcc校验|end|
|
|
|
+ 长度: 1 1 6 (curNum+totalNum+data) 4 4 datalen- 8 1 1
|
|
|
0x68 0x0e 0x16
|
|
|
bcc校验从第1位 也就是从msgType起 到 校验位前(不包含校验位)数据作bcc校验
|
|
|
*/
|
|
|
- (void)upLoadFileFun
|
|
|
{
|
|
|
-
|
|
|
- //NSMutableArray *sendDataArray =[NSMutableArray new];
|
|
|
+ HLog(@"上传文件%ld/%ld",self.indexOfUploadFlie +1,self.cutFileDataArr.count);
|
|
|
+ //data
|
|
|
+ NSData *curData = self.cutFileDataArr[self.indexOfUploadFlie];
|
|
|
+ HLog(@"headData:%@",curData);
|
|
|
|
|
|
//head
|
|
|
unsigned char headNum = 104;
|
|
@@ -179,7 +224,8 @@
|
|
|
HLog(@"headData:%@",headData);
|
|
|
|
|
|
//msgType
|
|
|
- unsigned char msgType = 12;
|
|
|
+ //unsigned char msgType = 12;
|
|
|
+ unsigned char msgType = 15;
|
|
|
NSData *msgTypeData = [NSMutableData dataWithBytes:&msgType length:sizeof(msgType)];
|
|
|
HLog(@"msgTypeData:%@",msgTypeData);
|
|
|
|
|
@@ -188,24 +234,25 @@
|
|
|
HLog(@"taskIdData:%@",taskIdData);
|
|
|
|
|
|
//datalen
|
|
|
- int datalenNum = 1024;
|
|
|
- NSData *datalenData = [NSData dataWithBytes:&datalenNum length:sizeof(datalenNum)];
|
|
|
+ int datalenNum = int([curData length] +(4+4));
|
|
|
+ //NSData *datalenData = [NSData dataWithBytes:&datalenNum length:sizeof(datalenNum)];
|
|
|
+ NSData *datalenData = [self int2Data:datalenNum];
|
|
|
HLog(@"datalenData %@",datalenData);
|
|
|
|
|
|
+
|
|
|
//curNum
|
|
|
- short curNum = (short)self.indexOfUploadFlie;
|
|
|
- NSData *curNumData = [NSData dataWithBytes:&curNum length:sizeof(curNum)];
|
|
|
+ int curNum = (int)self.indexOfUploadFlie;
|
|
|
+ //NSData *curNumData = [NSData dataWithBytes:&curNum length:sizeof(curNum)];
|
|
|
+ NSData * curNumData = [self int2Data:curNum];
|
|
|
HLog(@"curNumData:%@",curNumData);
|
|
|
|
|
|
//totalNum
|
|
|
- short totalNum = (short)self.cutFileDataArr.count;
|
|
|
- NSData *totalNumData = [NSData dataWithBytes:&totalNum length:sizeof(totalNum)];
|
|
|
+ int totalNum = (int)self.cutFileDataArr.count;
|
|
|
+ //NSData *totalNumData = [NSData dataWithBytes:&totalNum length:sizeof(totalNum)];
|
|
|
+ NSData * totalNumData = [self int2Data:totalNum];
|
|
|
HLog(@"totalNumData:%@",totalNumData);
|
|
|
|
|
|
- //data
|
|
|
- NSData *curData = self.cutFileDataArr[self.indexOfUploadFlie];
|
|
|
- HLog(@"headData:%@",curData);
|
|
|
-
|
|
|
+
|
|
|
NSMutableData *checkBCCData = [NSMutableData new];
|
|
|
[checkBCCData appendData:msgTypeData];
|
|
|
[checkBCCData appendData:taskIdData];
|
|
@@ -214,11 +261,14 @@
|
|
|
[checkBCCData appendData:totalNumData];
|
|
|
[checkBCCData appendData:curData];
|
|
|
|
|
|
- int bccCheck = [self getBCC:checkBCCData];
|
|
|
+ int length = [curData length];
|
|
|
+ HLog(@"curData length %d",length);
|
|
|
+
|
|
|
+ Byte bccCheck = [self getBCC:checkBCCData];
|
|
|
HLog(@"bcc 000 %d",bccCheck);
|
|
|
|
|
|
//bcc校验
|
|
|
- unsigned char bccNum = (unsigned char)bccCheck;
|
|
|
+ char bccNum = (char)bccCheck;
|
|
|
NSData *bccData = [NSMutableData dataWithBytes:&bccNum length:sizeof(bccNum)];
|
|
|
HLog(@"%@",bccData);
|
|
|
|
|
@@ -233,6 +283,7 @@
|
|
|
[sendData appendData:bccData];
|
|
|
[sendData appendData:endData];
|
|
|
|
|
|
+ HLog(@"sendData length %ld",[sendData length]);
|
|
|
[self.commandChannelManager rc_sendData:sendData];
|
|
|
HLog(@"文件上传sendData %@",sendData);
|
|
|
}
|