print(" (data):{}\r\n".format(len(data)))
tmpdata = str(data)
head = tmpdata[0:2] #FE
- if head != CAT1_FILE_DATA_HEAD and len(tmpdata) <= 8: #必须大于8 FF+012C+DATA+crc(一个字节89)
+ if head != CAT1_FILE_DATA_HEAD or len(tmpdata) <= 8: #必须大于8 FF+012C+DATA+crc(一个字节89)
print("head {}\r\n".format(head))
self.__Socket_UDP_file_noreply(CAT1_SEND_HEAD_ERR,"head error!")
return
if len(str(data_buf)) == 0 or len(str(data_buf)) != datalen: #数据为空
self.__Socket_UDP_file_noreply(CAT1_WRITE_FILE_ERROR,"crc error or data null!")
return
- crclist=self.crc_cal(data_buf)
- newcrc = crclist[1]
- news = crclist[0]
- if len(str(crc)) == 0:
- self.__Socket_UDP_file_noreply(CAT1_CRC_ERROR,"crc error!")
- return
- decnumCrcCal = int("0x" + str(newcrc), 16) #转换成十进制数
- decnumCrc = int("0x" + str(crc), 16) #转换成十进制数
- print("crc:{} newcrc:{}\r\n".format(crc,newcrc,decnumCrc,decnumCrcCal))
- if decnumCrcCal != decnumCrc and news == 0:
- print("newcrc is not === crc crc校验出错不一致\r\n")
- self.__Socket_UDP_file_noreply(CAT1_CRC_ERROR,"crc error!")
- return
+ # crclist=self.crc_cal(data_buf)
+ # newcrc = crclist[1]
+ # news = crclist[0]
+ # if len(str(crc)) == 0:
+ # self.__Socket_UDP_file_noreply(CAT1_CRC_ERROR,"crc error!")
+ # return
+ # decnumCrcCal = int("0x" + str(newcrc), 16) #转换成十进制数
+ # decnumCrc = int("0x" + str(crc), 16) #转换成十进制数
+ # print("crc:{} newcrc:{}\r\n".format(crc,newcrc,decnumCrc,decnumCrcCal))
+ # if decnumCrcCal != decnumCrc and news == 0:
+ # print("newcrc is not === crc crc校验出错不一致\r\n")
+ # self.__Socket_UDP_file_noreply(CAT1_CRC_ERROR,"crc error!")
+ # return
data = str(data_buf)
path = "{}/{}".format(BAK_FILE_PATH,str(self.fileNameTmp))
print("py path:{} self.fileNameTmp:{}\r\n".format(path,self.fileNameTmp))
#define DEFAULT_TIMEOUT_TIME 10 //间隔超时时间10s
#define DEFAULT_TIMEOUT_COUNT (60/DEFAULT_TIMEOUT_TIME) //10s倒计时 计时6次总共是1分钟
-#define READ_FILE_DATA_MAX_SIZE 400 // 一次读文件数据最大的size 数据长度不包含头 长度 CRC位
+#define READ_FILE_DATA_MAX_SIZE 900 // 一次读文件数据最大的size 数据长度不包含头 长度 CRC位
#define CAT1_FILE_DATA_HEAD "FF" //数据头'FF'
#define CAT1_FILE_DATA_LEN_CHA "0000" //数据LEN
#define CAT1_FILE_DATA_CRC_CHA "00" //数据CRC'
#define DATA_ACTUAL_LEN_BIT 4 //实际数据的长度
#define DATA_CRC_SZIE 2 //CRC 字符个数
-#define DATA_TOTAL_LEN (DATA_HEAD_SIZE+DATA_ACTUAL_LEN_BIT+READ_FILE_DATA_MAX_SIZE+DATA_CRC_SZIE+2+200) //最大一包的数据总长度 200 {"Code":1,"fileName":"",file}
+#define DATA_TOTAL_LEN (DATA_HEAD_SIZE+DATA_ACTUAL_LEN_BIT+READ_FILE_DATA_MAX_SIZE+DATA_CRC_SZIE+2+100) //最大一包的数据总长度 200 {"Code":1,"fileName":"",file}
#define DATA_MIN_HEAD_LEN (DATA_HEAD_SIZE+DATA_ACTUAL_LEN_BIT)
#define FAILE_COUNT 10 //失败次数
#define RESP_STATUS_OFSET 2
-#define MAX_CMD_MSG_BUFFER_LEN DATA_TOTAL_LEN
-#define MAX_TCP_MSG_BUFFER_LEN (MAX_CMD_MSG_BUFFER_LEN+8)
+#define MAX_CMD_MSG_BUFFER_LEN 512
+#define MAX_TCP_MSG_BUFFER_LEN (DATA_TOTAL_LEN+8)
#pragma pack(push)
#pragma pack(1)
struct tcp_msg_t {
static int pack_tlv_format_old(char *tx_buffer,uint8_t mode, uint8_t cmd, char *content)
{
int content_length = (int)strlen(content);
- if( content == NULL || content_length > MAX_CMD_MSG_BUFFER_LEN) {
+ if( content == NULL || content_length > MAX_TCP_MSG_BUFFER_LEN) {
return -1;
}
if(mode == FILE_TRANSFER_CMD){ //文件传输是json格式
{
int content_length = (int)strlen(content);
- if(content_length > MAX_CMD_MSG_BUFFER_LEN || content == NULL)
+ if(content_length > MAX_TCP_MSG_BUFFER_LEN || content == NULL)
{
printf("content data error: content_length %d %s\r\n",content_length,content);
return -1;
fileNameList[i] = NULL;
}
}
- // for(uint8_t i=0;i<DEFAULT_MAX_FILE_COUNT;i++){
- // strcpy(fileNameList[i],"");
- // }
-
if(fp != NULL){ //防止打开文件没有关闭
printf("file is not close!\r\n");
fclose(fp);
if(fileNameList[curfilecount] != NULL)
{
if(strlen(fileNameList[curfilecount]) != 0 && filesize != 0){
+ char file_path[DEFAULT_MAX_FILE_NAME_SIZE]={0};
+ memset(file_path,0,DEFAULT_MAX_FILE_NAME_SIZE);
+ sprintf_s(file_path,DEFAULT_MAX_FILE_NAME_SIZE,"%s/%s",CAT1_PY_PATH,fileNameList[curfilecount]);
+ if(fp != NULL){
+ fclose(fp);
+ fp = NULL;
+ }
+ if(fp == NULL){
+ fp = fopen(file_path, "rb");
+ if(fp != NULL){
+ fseek(fp, 0, SEEK_END);
+ filesize = ftell(fp);
+ fseek(fp, 0, SEEK_SET);
+ noreplayCount = 0;
+ }
+ }
cat1_ota_send_data(CAT1_TCP_START_SEND_SINGLE_FILE_INFO,fileNameList[curfilecount],filesize,NULL);
}
}
sprintf_s(file_path,DEFAULT_MAX_FILE_NAME_SIZE,"%s/%s",CAT1_PY_PATH,fileNameList[curfilecount]);
count+=1;
- fp = fopen(file_path, "rb");
if(fp != NULL){
- fseek(fp, 0, SEEK_END);
- filesize = ftell(fp);
- fseek(fp, 0, SEEK_SET);
- noreplayCount = 0;
- send_curfile_info_data();
- break;
+ fclose(fp);
+ fp = NULL;
}
+ if(fp == NULL){
+ fp = fopen(file_path, "rb");
+ if(fp != NULL){
+ fseek(fp, 0, SEEK_END);
+ filesize = ftell(fp);
+ fseek(fp, 0, SEEK_SET);
+ noreplayCount = 0;
+ send_curfile_info_data();
+ break;
+ }
+ }
+
}else{
cat1_ota_flag = CAT1_TCP_START_SEND_ALLFILE_FINESH;
timerOut_count = DEFAULT_TIMEOUT_TIME;
data_len+=snprintf(head_data+data_len,sizeof(head_data)-data_len,"%04x",read_size);
memcpy_s(data_arr,6,head_data,6);
- crcvalue = cat1_file_crc(data_arr+6,read_size);
+ // crcvalue = cat1_file_crc(data_arr+6,read_size);
data_len+=read_size;
data_len+=snprintf(data_arr+data_len,sizeof(data_arr)-data_len,"%02x",crcvalue);