| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231 |
- #include "tax.h"
- #include "includes.h"
- coll_tax_conf_t coll_tax_conf;
- tax_read_info_t tax_read_info;
- ///////////////////////////////////////////////////// 明文 ///////////////////////////////////////////////
- // 明文指令
- // 明文下发的数据协议
- uint8_t tax_cmd_set(uint8_t cmd, uint8_t *parm, uint8_t size, void *puser)
- {
- uint8_t send_len;
- uint8_t send_buf[64], *p_crc, *fparm;
- tTaxCommFrame_t *p_tax = (tTaxCommFrame_t *)send_buf;
- memset(send_buf, 0, sizeof(send_buf));
- p_crc = &send_buf[sizeof(tTaxCommFrame_t) + size];
- p_tax->fhead = 0xbb;
- p_tax->flen = 3 + size; // 长度码为命令码、帧号、参数和校验码的字节数之和
- p_tax->findex = 0xff; // 帧号标识本帧的特征信息,帧号OFFH表示单帧命令;
- p_tax->fcmd = cmd;
- fparm = &send_buf[sizeof(tTaxCommFrame_t)];
- memcpy(fparm, parm, size);
- *p_crc = _crc_get_gw(&p_tax->findex, p_tax->flen - 1); // 校验码为帧号、命令码和参数逐字节的逻辑和
- send_len = p_tax->flen + 2;
- memcpy(puser, p_tax, send_len);
- return send_len;
- }
- // 明文下发数据
- uint16_t tax_send_cmd(uint8_t cmd, uint8_t gun, void *purse)
- {
- uint8_t para[16] = {0};
- uint16_t send_len = 0;
- switch (cmd)
- {
- case 0x83:
- para[0] = 0;
- send_len = tax_cmd_set(0x83, para, 1, purse);
- break;
- case 0x86:
- para[0] = gun - 1;
- para[1] = 0x01;
- send_len = tax_cmd_set(0x86, para, 2, purse);
- break;
- case 0x89:
- para[0] = gun - 1;
- para[1] = 0x00;
- para[2] = 0x01;
- send_len = tax_cmd_set(0x89, para, 3, purse);
- break;
- default:
- break;
- }
- return send_len;
- }
- int tax_0x83_anaylse(void *puser, uint8_t *data, uint8_t data_len)
- {/* status 十 tax_ data为税务信息数据,格式和初始化数据相同,其中时间为税控加油机实时时钟的当前时间。
- 总长48字节,依次为:出厂编号 (10);油枪位编号 (2);纳税人登记证号 (20);
- 油品 (4);年 (4)、月 (2)、日 (2)、时 (2)和分 (2)a*/
- tax_info_t * p_tax = (tax_info_t *)puser;
- uint8_t *tax_data = data + 1;
- // uint8_t i;
- // uint32_t value;
- int ret = 0;
- // char temp[3] = {0};
- if(data_len < 11)
- return 1;
- if(isdigit(tax_data[0])) {//数字 英泰赛福
- p_tax->factory = 1;
- switch(tax_data[0]) {
- case '0':
- case '1':
- p_tax->gun_num = 1;
- break;
- case '2':
- case '3':
- p_tax->gun_num = 2;
- break;
- default:
- p_tax->gun_num = tax_data[0] - '0';
- break;
- }
- } else if(isalpha(tax_data[0])) {//字母 拓盛
- p_tax->factory = 2;
- if((tax_data[0] >= 'A')&&(tax_data[0] <= 'Z')) {
- p_tax->gun_num = tax_data[0] - 'A' + 1;
- } else if((tax_data[0] >= 'a')&&(tax_data[0] <= 'z')) {
- p_tax->gun_num = tax_data[0] - 'a' + 1;
- }
- }
- else//不是字母和数字,即读取的数据错误,默认是 英泰1枪
- {
- p_tax->factory = 1;
- p_tax->gun_num = 1;
- }
- if(p_tax->gun_num > 8)//最多8枪
- p_tax->gun_num = 8;
- //将税控序列号转为BCD码
- asciitohex((char *)tax_data,p_tax->monitor_serino,10);
- // for(i = 0;i < 5;i++) {
- // strncpy(temp,(char *)&tax_data[2*i],2);
- // sscanf(temp,"%02x",&value);
- // p_tax->monitor_serino[i] = value;
- // // p_tax->monitor_serino[i] = ((tax_data[2*i+0]<<4)&0xF0) | (tax_data[2*i+1]&0x0F);
- // }
- memcpy(&p_tax->monitor_serino[5], tax_data, 10);
- data_dump("83 serino",p_tax->monitor_serino,15);
- //data_dump("0x83", data, data_len);
- return ret;
- }
- int tax_0x86_anaylse(void *puser, uint8_t *data, uint8_t data_len)
- {/* status+ 〔当次加油数据〕当次加油数据 总长 22字节,依次为:日 (2)、时 (2)、分 (2);油量 (6);金额 (6);单价 (4)0 */
- gun_info_t * p_gun = (gun_info_t *)puser;
- char *current = (char *)data + 7;
- int ret = 0;
- // uint32_t value;
- char temp[3] = {0};
- // data_dump("0x86 data :", data, data_len);
- if(data_len < 23)
- return 1;
- strncpy(temp,(char *)data+1,2);
- temp[2] = 0;
- // sscanf(temp,"%02x",&value);
- p_gun->time_day = strtohex(temp,2);
- strncpy(temp,(char *)data+3,2);
- temp[2] = 0;
- // sscanf(temp,"%02x",&value);
- p_gun->time_hour = strtohex(temp,2);
- strncpy(temp,(char *)data+5,2);
- temp[2] = 0;
- // sscanf(temp,"%02x",&value);
- p_gun->time_minute = strtohex(temp,2);
- // printf("%02x,%02x,%02x\r\n",p_gun->time_day,p_gun->time_hour,p_gun->time_minute);
- current[16] = 0;
- p_gun->last_unit_price = atoi(¤t[12]);
- current[12] = 0;
- p_gun->last_price = atoi(¤t[6]);
- current[6] = 0;
- p_gun->last_oil_volume = atoi(current);
- p_gun->gun_type = SINGLE_DATA;
- printf("day=%02x,hour=%02x,min=%02x\n",p_gun->time_day,p_gun->time_hour,p_gun->time_minute);
- printf("unit price=%u,price=%u,volum=%u\n",p_gun->last_unit_price,p_gun->last_price,p_gun->last_oil_volume);
- return ret;
- }
- int tax_0x89_anaylse(void *puser, uint8_t *data, uint8_t data_len)
- {/* status十 [总累计加油数据] 总累计加油数据 总长 24字节,依次为:总累计油量 (12);总累计金额 (12) */
- gun_info_t * p_gun = (gun_info_t *)puser;
- char *total = (char *)data + 1;
- int ret = 0;
- if(data_len < 26)
- return 1;
- total[24] = 0;
- p_gun->total_price = atoll(&total[12]);
- total[12] = 0;
- p_gun->total_oil_volume = atoll(total);
- printf("\r\n total_princ = %lld, total_volume = %lld \r\n",p_gun->total_price,p_gun->total_oil_volume);
- p_gun->gun_type = CUMULATIVE_DATA;
- return ret;
- }
- /*---------------------------------------------------------------------------------------------------------------------------------------------------------
- * 密文不用加密模块的下发
- *---------------------------------------------------------------------------------------------------------------------------------------------------------*/
- tax_send_info_t tax_send_info;
- tax_info_t tax_info;
- unsigned int cmd_72_proc(uint8_t *p_input, uint8_t *output)
- {
- unsigned int k; // r3
- uint8_t *v2; // r4
- unsigned int i; // r3
- unsigned int j; // r0
- char v5; // r2
- char v6; // r2
- char v7[8];
- char v8[8];
- char v9[4];
- v2 = p_input;
- *(unsigned int *)(&v8[0]) = 0x982850A0;
- *(unsigned int *)(&v8[4]) = 0x183060C0;
- *(unsigned int *)(&v7[0]) = 0x3365CA94;
- *(unsigned int *)(&v7[4]) = 0x03060C18;
- output[0] = 0x31;
- output[1] = 0x32;
- output[2] = 0x33;
- output[3] = 0x34;
- for ( i = 0; i < 4; ++i )
- {
- for ( j = 0; j < 4; ++j )
- v9[j] = 0;
- v5 = *(char *)(v2 + i) ^ output[0];
- if ( (v5 & 0x80) != 0 )
- {
- v9[0] ^= 0xA0u;
- v9[1] ^= 0x00u;
- v9[2] ^= 0x01u;
- v9[3] ^= 0x94u;
- }
- v6 = v5 << 1;
- for ( k = 1; k < 8; ++k )
- {
- if ( (v6 & 0x80) != 0 )
- {
- v9[0] ^= *((char *)v8 + k);
- v9[3] ^= *((char *)v7 + k);
- }
- v6 <<= 1;
- }
- output[0] = output[1] ^ v9[0];
- output[1] = output[2] ^ v9[1];
- output[2] = output[3] ^ v9[2];
- output[3] = v9[3];
- }
- return 0;
- }
- uint16_t tax_send_cmd_ciphertext(uint8_t cmd, uint8_t *data, uint8_t len, void *purse)
- {
- uint8_t para[64] = {0};
- uint16_t send_len = 0;
- switch(cmd)
- {
- case 0x72:
- para[0] = 0x01;
- para[1] = 0x01;
- send_len = tax_cmd_set(0x72,para,2,purse);
- break;
- case 0x73:
- send_len = tax_cmd_set(0x73,data,len,purse);
- break;
- case 0x70:
- para[0] = 0x00;
- send_len = tax_cmd_set(0x70,para,1,purse);
- break;
- case 0x8C:
- send_len = tax_cmd_set(0x8C,data,len,purse);
- break;
- default:
- break;
- }
- return send_len;
- }
- void tax_send_start(uint8_t startCmd)
- {
- tax_send_info.start = 1;
- tax_send_info.step = 0;
- tax_send_info.send = 1;
- tax_send_info.startcmd = startCmd;
- printf("send begin\n");
- }
- void tax_send_end(void)
- {
- tax_send_info.start = 0;
- tax_send_info.step = 0;
- tax_send_info.send = 0;
- tax_send_info.startcmd = 0;
- timeout_stop(&lora_comm_info.uart_timeout);
- printf("send end\n");
- }
- int tax_0x72_anaylse(void *puser, uint8_t *data, uint8_t data_len)
- {
- tax_info_t * p_tax = (tax_info_t *)puser;
- cmd_72_proc(data,p_tax->cmd_73_data);
- return 0;
- }
- int tax_0x70_anaylse(void *puser, uint8_t *data, uint8_t data_len)
- {
- tax_info_t * p_tax = (tax_info_t *)puser;
- if(data_len > 20)
- {
- if(isdigit(data[1])) {// 数字为英泰
- p_tax->factory = 1;
- switch(data[1]) {
- case '0':
- case '1':
- p_tax->gun_num = 1;
- break;
- case '2':
- case '3':
- p_tax->gun_num = 2;
- break;
- default:
- p_tax->gun_num = data[1] - '0';
- break;
- }
- } else if(isalpha(data[1])) {//字母 为排成
- p_tax->factory = 2;
- if((data[1] >= 'A')&&(data[1] <= 'Z')) {
- p_tax->gun_num = data[1] - 'A' + 1;
- } else if((data[1] >= 'a')&&(data[1] <= 'z')) {
- p_tax->gun_num = data[1] - 'a' + 1;
- }
- }
- memcpy(p_tax->tax_serino,data+1,10);
- memcpy(p_tax->bmq_serino,data+11,10);
- data_dump("tax_serino",p_tax->tax_serino,10);
- }
- return 0;
- }
- //明文接收数据处理
- int tax_rcv_analyze(uint8_t *data, void *puser, uint16_t len)
- {
- int ret = 1;
- uint8_t *p_crc, crc, *fparm;
- tTaxCommFrame_t *p_tax_rx;
- p_tax_rx = (tTaxCommFrame_t *)data;
- crc = get_xor(&p_tax_rx->findex, p_tax_rx->flen-1);
- p_crc = &data[p_tax_rx->flen + 1];
- if((p_tax_rx->fhead == 0xBB)&&(crc == *p_crc)) {
- if((p_tax_rx->findex != 0xFF) ){ // 帧号
- if((p_tax_rx->findex&0x80) != 0x80) return ret;
- }
- fparm = &data[sizeof(tTaxCommFrame_t)];
- switch(p_tax_rx->fcmd)
- {
- case 0x83:
- tax_0x83_anaylse(puser,fparm,p_tax_rx->flen-3);
- ret = 0x83;
- // return ret;
- break;
- case 0x86:
- // tax_0x86_anaylse(puser,fparm,p_tax_rx->flen-3);
- /*
- 明文: BB 1A FF 86 01 30 31 30 30 30 38 30 30 30 30 35 36 30 30 30 30 35 36 30 31 30 30 70
- 密文:BB 04 FF 89 00 76 或 BB 06 FF 86 00 09 20 50
- */
- if((fparm[0]==0x01) && p_tax_rx->flen >= 0x1A)//明文
- {
- if(tax_send_info.uartid == UART4_ID)//报税口1
- {
- device_fixed_info.Encrypt &= 0xFC;
- device_fixed_info.Encrypt |= PLAINTEXT;
- }
- else if(tax_send_info.uartid == UART5_ID)//报税口2
- {
- device_fixed_info.Encrypt &= 0xF3;
- device_fixed_info.Encrypt |= (PLAINTEXT<<2);
- }
- }
- else if(fparm[0]==0x00)//密文
- {
- if(tax_send_info.uartid == UART4_ID)//报税口1
- {
- device_fixed_info.Encrypt &= 0xFC;
- device_fixed_info.Encrypt |= CIPHERTEXT;
- }
- else if(tax_send_info.uartid == UART5_ID)//报税口2
- {
- device_fixed_info.Encrypt &= 0xF3;
- device_fixed_info.Encrypt |= (CIPHERTEXT<<2);
- }
- }
- ret = 0x86;
- // return ret;
- break;
- case 0x89:
- tax_0x89_anaylse(puser,fparm,p_tax_rx->flen-3);
- ret = 0x89;
- // return ret;
- break;
- case 0x72:
- printf("72 proc\n");
- tax_0x72_anaylse(puser,fparm,p_tax_rx->flen-3);
- tax_send_info.step++;
- tax_send_info.send = 1;
- break;
- case 0x73:
- printf("rcv 73: len = %d\n",p_tax_rx->flen);
- // memcpy(device_fixed_info.cmd_73,data,8);
- // device_fixed_info.Encrypt &= 0xF0;
- if(tax_send_info.uartid == UART4_ID)//报税口1
- {
- if((device_fixed_info.Encrypt & 0x03) == 0)//报税口1状态未保存
- {
- if(p_tax_rx->flen == 0x06) //密文
- {
- device_fixed_info.Encrypt &= 0xFC;
- device_fixed_info.Encrypt |= CIPHERTEXT;
- }
- else if((p_tax_rx->flen == 0x04) || (p_tax_rx->flen == 0x05)) { //明文
- device_fixed_info.Encrypt &= 0xFC;
- device_fixed_info.Encrypt |= PLAINTEXT;
- }
- }
- // else//明文
- // {
- // device_fixed_info.Encrypt &= 0xFC;
- // device_fixed_info.Encrypt |= PLAINTEXT;
- // }
- if(len <= CMD73_LEN)
- {
- if(buff_compare(cmd_73_info[0].data,data,len))//73有变化
- {
- memcpy(cmd_73_info[0].data,data,len);
- cmd_73_info[0].len = len;
- cmd_73_info[0].read_flag = 1;
- }
- }
- }
- else if(tax_send_info.uartid == UART5_ID)//报税口2
- {
- if((device_fixed_info.Encrypt & 0x0C) == 0)//报税口2状态未保存
- {
- if(p_tax_rx->flen == 0x06) //密文
- {
- device_fixed_info.Encrypt &= 0xF3;
- device_fixed_info.Encrypt |= (CIPHERTEXT<<2);
- }
- else if((p_tax_rx->flen == 0x04) || (p_tax_rx->flen == 0x05)) {//明文
- // if(fparm[0] == 0x02)
- device_fixed_info.Encrypt &= 0xF3;
- device_fixed_info.Encrypt |= (PLAINTEXT<<2);
- }
- }
- // else//明文
- // {
- // device_fixed_info.Encrypt &= 0xF3;
- // device_fixed_info.Encrypt |= (PLAINTEXT<<2);
- // }
- if(len <= CMD73_LEN)
- {
- if(buff_compare(cmd_73_info[1].data,data,len))//73有变化
- {
- memcpy(cmd_73_info[1].data,data,len);
- cmd_73_info[1].len = len;
- cmd_73_info[1].read_flag = 1;
- }
- }
- }
- // if(p_tax_rx->flen == 0x06) device_fixed_info.Encrypt |= CIPHERTEXT;
- // else if(p_tax_rx->flen == 0x04) {
- // if(fparm[0] == 0x02) device_fixed_info.Encrypt |= PLAINTEXT;
- // }
- tax_info.data73len = p_tax_rx->flen;
- tax_send_info.step++;
- tax_send_info.send = 1;
- break;
- case 0x70:
- tax_0x70_anaylse(puser,fparm,p_tax_rx->flen-3);
- tax_send_info.step++;
- tax_send_info.send = 1;
- break;
- case 0x8C:
- //tax_0x8C_anaylse(puser,fparm,p_tax_rx->flen-3);
- tax_send_info.step++;
- tax_send_info.send = 1;
- break;
- default : break;
- }
- }
- return ret;
- }
- uint8_t tax_83[20] = {0x00,0x42,0x36,0x30,0x32,0x36,0x33,0x32,0x34,0x30,0x30};
- uint8_t tax_86[30] = {0x01,0x31,0x31,0x32,0x30,0x31,0x38, 0x30,0x30,0x30,0x30,0x35,0x37, 0x30,0x30,0x30,0x30,0x35,0x36, 0x30,0x31,0x30,0x30, 0x30};
- uint8_t tax_89[30] = {0x01, 0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x36, 0x30,0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x36, 0x37};
- void tax_test(void)
- {
- uint8_t buf[64]={0};
- uint16_t len;
- tax_0x83_anaylse(buf,tax_83,11);
- tax_0x86_anaylse(buf,tax_86,30);
- tax_0x89_anaylse(buf,tax_89,30);
- len = tax_send_cmd(0x86,1,buf);
- uart_msg_send(UART3_ID,(char *)buf,len);
- data_dump("tax send",buf,len);
- }
- ////////////////////////////////////////////////////////// 密文 ////////////////////////////////////////////
- // 密文下发的数据协议
- uint16_t ytsf_cmd_set(uint8_t tax, uint8_t cmd, uint8_t *parm, uint8_t size, void *puser)
- {
- uint8_t send_buf[128], send_size, *fparm;
- uint16_t p_crc;
- tYTSFCommFrame_t *p_tax_tx = (tYTSFCommFrame_t *)send_buf;
- memset(send_buf, 0, sizeof(send_buf));
- p_tax_tx->fhead = 0xbb;
- p_tax_tx->flen = 5 + size; // 长度码为命令码、帧号、参数和校验码的字节数之和
- p_tax_tx->findex = 0x81; // 帧号标识本帧的特征信息,帧号OFFH表示单帧命令;
- p_tax_tx->fport = tax;
- p_tax_tx->fcmd = cmd;
- fparm = &send_buf[sizeof(tYTSFCommFrame_t)];
- memcpy(fparm, parm, size);
- p_crc = CRC16_get(&p_tax_tx->fhead, p_tax_tx->flen);
- send_buf[sizeof(tYTSFCommFrame_t) + size] = p_crc & 0xff;
- send_buf[sizeof(tYTSFCommFrame_t) + size + 1] = (p_crc >> 8) & 0xff;
- _ytsf_data_code(send_buf, &send_size); /* 编码发送 */
- memcpy(puser, p_tax_tx, send_size);
- return send_size;
- }
- // 密文下发数据
- uint16_t ytsf_send_cmd(uint8_t cmd, uint8_t info_type, uint8_t tax, uint8_t gun, uint8_t *serino, uint8_t *date, void *purse)
- {
- uint8_t para[16] = {0};
- uint8_t send_len;
- switch (cmd)
- {
- case 0xA1: // 累计数读取指令
- if (info_type == 0x11) // 查当次加油信息
- {
- para[0] = 0x11;
- para[1] = gun - 1;
- memset(¶[2], 0, 4);
- memcpy(¶[6], serino, 5);
- send_len = ytsf_cmd_set(tax - 1, 0xA1, para, 11, purse);
- }
- else if (info_type == 0x12) // 0x12 查日累计信息
- {
- para[0] = info_type;
- para[1] = gun - 1;
- memcpy(¶[2], date, 4); // 查询的日期
- memcpy(¶[6], serino, 5);
- send_len = ytsf_cmd_set(tax - 1, 0xA1, para, 11, purse);
- }
- else if (info_type == 0x14) // 0x14 查总累计信息
- {
- para[0] = 0x14;
- para[1] = gun - 1;
- memset(¶[2], 0, 4);
- memcpy(¶[6], serino, 5);
- send_len = ytsf_cmd_set(tax - 1, 0xA1, para, 11, purse);
- }
- break;
- case 0xA2:
- if ((info_type == 0x00) || (info_type == 0x01) || (info_type == 0x20))
- { // 00 查监控序列号;01 查编码器序列号;20 查防作弊状态
- para[0] = info_type;
- para[1] = gun - 1;
- memset(para + 2, 0, 6);
- send_len = ytsf_cmd_set(tax - 1, 0xA2, para, 8, purse);
- }
- break;
- case 0xA5:
- if (info_type == 0xFF) // 读模块版本及信息
- {
- para[0] = 0xFF;
- send_len = ytsf_cmd_set(tax - 1, 0xA5, para, 1, purse);
- }
- break;
- }
- return send_len;
- }
- //税控序列号解析
- int ytsf_0xa2_0x00_anaylse(void *puser, uint8_t *data, uint8_t data_len)
- {/* 信息类型[1byte] + 枪号[1byte] + 读取结果[1byte] +
- 读取数据[Mbytes] 监 控 序 列 号 (BCD码)[5bytes]+序列号(ASCII 码)[10bytes] */
- tax_info_t * p_tax = (tax_info_t *)puser;
- uint8_t tax_data = *(data + 8);
- int ret = 0;
- p_tax->gun_num = 1;
- if(isdigit(tax_data)) {//英泰赛福
- p_tax->factory = 1;
- switch(tax_data) {
- case '0':
- case '1':
- p_tax->gun_num = 1;
- break;
- case '2':
- case '3':
- p_tax->gun_num = 2;
- break;
- default:
- p_tax->gun_num = tax_data - '0';
- break;
- }
- } else if(isalpha(tax_data)) {//拓盛
- p_tax->factory = 2;
- if((tax_data >= 'A')&&(tax_data <= 'Z')) {
- p_tax->gun_num = tax_data - 'A' + 1;
- } else if((tax_data >= 'a')&&(tax_data <= 'z')) {
- p_tax->gun_num = tax_data - 'a' + 1;
- }
- }
- else//不是字母和数字,即读取的数据错误,默认是 英泰1枪
- {
- p_tax->factory = 1;
- p_tax->gun_num = 1;
- }
- if(p_tax->gun_num > 8)//最多8枪
- p_tax->gun_num = 8;
- memcpy(p_tax->monitor_serino, data + 3, 15);
- data_dump("monitor_serino", p_tax->monitor_serino, 16);
- return ret;
- }
- /**
- * @brief hex convert ascii
- * @par param[in] *ascii:ascii data
- * @par param[in] *hex:hex data
- * @par param[in] hexLen:length of hex
- * @retval length
- */
- uint32_t Hex2Dec(uint8_t *hex, uint16_t hexLen)
- {
- uint32_t data = 0;
- uint8_t i;
- for(i=0;i<hexLen;i++) {
- data = data * 100;
- data += (hex[i]>>4)*10 + (hex[i]&0x0F);
- }
- return data;
- }
- uint64_t Hex2Dec64(uint8_t *hex, uint16_t hexLen)
- {
- uint64_t data = 0;
- uint8_t i;
- for(i=0;i<hexLen;i++) {
- data = data * 100;
- data += (hex[i]>>4)*10 + (hex[i]&0x0F);
- }
- return data;
- }
- //当次交易解析
- int ytsf_0xa1_0x11_anaylse(void *puser, uint8_t *data, uint8_t data_len)
- {/* 累计类型[1byte] + 枪号[1byte] + 读取结果[1byte] +
- 读取数据[Mbytes] 时间[3bytes]+油量[5bytes]+金额[5bytes]+单价[3bytes]
- 0x11 查当次加油信息*/
- gun_info_t * p_gun = (gun_info_t *)puser;
- uint8_t *current = (uint8_t *)data + 6;
- int ret = 0;
- if(data_len < 19) {
- return -1;
- }
- // data_dump("0x86 data :", data, data_len);
- p_gun->time_day = *(data+3);
- p_gun->time_hour = *(data+4);
- p_gun->time_minute = *(data+5);
- // printf("%02x,%02x,%02x\r\n",p_gun->time_day,p_gun->time_hour,p_gun->time_minute);
- p_gun->last_oil_volume = Hex2Dec(current, 5);
- p_gun->last_price = Hex2Dec(current + 5, 5);
- p_gun->last_unit_price = Hex2Dec(current + 10, 3);
- return ret;
- }
- //总累计解析
- int ytsf_0xa1_0x14_anaylse(void *puser, uint8_t *data, uint8_t data_len)
- {/* 累计类型[1byte] + 枪号[1byte] + 读取结果[1byte] +
- 读取数据[Mbytes] 油量[7bytes]+金额[7bytes]
- 0x14 查总累计信息*/
- gun_info_t * p_gun = (gun_info_t *)puser;
- uint8_t *total = data + 3;
- int ret = 0;
- if(data_len < 17) {
- return -1;
- }
- p_gun->total_oil_volume = Hex2Dec64(total, 7);
- p_gun->total_price = Hex2Dec64(total+7, 7);
- return ret;
- }
- /*----------------------------------------------------------------------
- * 密文接收数据处理
- * result:读取结果
- * 0x00:执行错误 0x01: 执行成功 0x02:数据模块忙,稍息再试 0x03:监控微处理器忙,稍后再试
- * 0x04:监控微处理器通讯超时,超时时间设定为10S
- * 0x05:查询的纪录不存在
- * 0x10: 监控微处理器序列号不存在
- * 0x11: 密文数据解密错误
- */
- int ytsf_rcv_analyze(uint8_t *data,uint8_t len,void *puser, uint8_t *port)
- {
- int ret = 1;
- uint8_t *fparm;
- uint16_t p_crc, crc;
- uint8_t result = 0x01;
- tYTSFCommFrame_t *p_tax_rx = (tYTSFCommFrame_t *)data;
- _ytsf_data_decode(data, &len); /* 接收解码 */
- crc = CRC16_get(&p_tax_rx->fhead, p_tax_rx->flen);
- p_crc = data[p_tax_rx->flen+1];
- p_crc = (p_crc<<8)|data[p_tax_rx->flen];
- if(p_tax_rx->fhead == 0xBB && crc == p_crc)
- {
- result = *(data+7); // 读取结果
- if(result != 0x01 ) return result;
- *port = p_tax_rx->fport;
- fparm = &data[sizeof(tYTSFCommFrame_t)];
- switch(p_tax_rx->fcmd)
- {
- case 0xA1:
- if(*fparm == 0x11)
- {
- ytsf_0xa1_0x11_anaylse(puser, fparm, p_tax_rx->flen-5);
- ret = YTSF_0XA1_0X11;
- }
- else if(*fparm == 0x14)
- {
- ytsf_0xa1_0x14_anaylse(puser, fparm, p_tax_rx->flen-5);
- ret = YTSF_0XA1_0X14;
- }
- break;
- case 0xA2:
- if(*fparm == 0x00)
- {
- ytsf_0xa2_0x00_anaylse(puser, fparm, p_tax_rx->flen-5);
- ret = YTSF_0XA2_0X00;
- }
- break;
- }
- }
- return ret;
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////
- /*-------------------------------------------------------------
- * 判断拓盛密文 的是否都读取一遍
- * 返回值 :
- * 0: 没有
- * 1:都读取一遍了
- * -------------------------------------------------------------*/
- int tsmw_gun_read_finish(void)
- {
- // int ret = 0;
- int i;
- for(i = 0; i < coll_tax_conf.tax_num; i++)
- {
- if(coll_tax_conf.tax_conf[i].encrypt == CIPHERTEXT)
- {}
- // for(j = 0; j < downlink_config.collect_conf[i].tax_num; j++)
- // {
- // if(downlink_config.collect_conf[i].tax_type==CIPHERTEXT && downlink_config.collect_conf[i].tax_conf[j].factory == 2)
- // {
- // for(m = 0; m < downlink_config.collect_conf[i].tax_conf[j].gun_num; j++)
- // {
- // if(nodeConf.taxconf[i].port[j].gun[m].tsmw_flag == 0) return 0;
- // }
- // }
- // }
- }
- return 1;
- }
- void tax_process(void)
- {
- // uint8_t state = 0;
- // uint8_t portCur = 0;
- //// uint8_t gunno = 0;
- // uint8_t portno = 0;
- // uint8_t factory = 0;
- // if(timeout_isOut(&tax_read_info.tt_uart)==0)
- // return;
- // if(timeout_isOut(&tax_read_info.tt_cmd_time) == 0)
- // return;
- // if(tax_read_info.uart_flag)
- // return;
- // if(tax_read_info.cmd_flag)
- // return;
- // if(0)//正在加油则不读
- // return;
- // portCur = tax_read_info.tax_no;
- // portno = coll_tax_conf.tax_conf[portCur].tax_id;
- // // gunno = coll_tax_conf.tax_conf[portCur].gunid;
- // state = tax_read_info.cmd_no;
- // switch(state)
- // {
- // case TAX_GUN_LP_STATE_IDLE:
- // //
- // break;
- // case TAX_GUN_LP_STATE_83:
- // break;
- // case TAX_GUN_LP_STATE_89:
- // break;
- // case TAX_GUN_LP_STATE_86:
- // break;
- // case TAX_GUN_LP_STATE_CH:
- // break;
- // default:
- // break;
- // }
- }
- /*
- idle:
- 是否拓盛密文,且拓盛密文定时是否完成,如果未完成,跳到ch
- 判断是否需要读83,是跳到83,否跳到89
- 83
- 跳到89
- 89
- 跳到86
- 86
- 跳到ch
- ch
- 计算下一次读取的报税口号和枪号,并根据是否需要加读取间隔,来设置定时。
- encoder daily: tax:1,gun:2,pluse:3,pl_inter1:3492,pl_inter2:14973,pl_inter3:3492,timestamp:7211431
- encoder daily: tax:1,gun:2,pluse:9,pl_inter1:3072,pl_inter2:3458,pl_inter3:3458,timestamp:7231168
- encoder daily: tax:1,gun:2,pluse:54,pl_inter1:282,pl_inter2:2382,pl_inter3:377,timestamp:7252939
- encoder daily: tax:1,gun:2,pluse:104,pl_inter1:295,pl_inter2:712,pl_inter3:373,timestamp:7273139
- encoder daily: tax:1,gun:2,pluse:153,pl_inter1:295,pl_inter2:704,pl_inter3:330,timestamp:7292876
- encoder daily: tax:1,gun:2,pluse:203,pl_inter1:293,pl_inter2:712,pl_inter3:329,timestamp:7313030
- encoder daily: tax:1,gun:2,pluse:253,pl_inter1:298,pl_inter2:712,pl_inter3:331,timestamp:7333185
- encoder daily: tax:1,gun:2,pluse:302,pl_inter1:296,pl_inter2:713,pl_inter3:320,timestamp:7353028
- encoder daily: tax:1,gun:2,pluse:352,pl_inter1:293,pl_inter2:712,pl_inter3:318,timestamp:7373164
- encoder daily: tax:1,gun:2,pluse:401,pl_inter1:296,pl_inter2:708,pl_inter3:326,timestamp:7392995
- encoder daily: tax:1,gun:2,pluse:451,pl_inter1:293,pl_inter2:717,pl_inter3:326,timestamp:7413214
- encoder daily: tax:1,gun:2,pluse:500,pl_inter1:296,pl_inter2:707,pl_inter3:314,timestamp:7433016
- encoder daily: tax:1,gun:2,pluse:550,pl_inter1:292,pl_inter2:709,pl_inter3:312,timestamp:7453178
- encoder daily: tax:1,gun:2,pluse:600,pl_inter1:295,pl_inter2:710,pl_inter3:314,timestamp:7473289
- encoder daily: tax:1,gun:2,pluse:649,pl_inter1:293,pl_inter2:711,pl_inter3:293,timestamp:7493125
- encoder daily: tax:1,gun:2,pluse:699,pl_inter1:295,pl_inter2:704,pl_inter3:295,timestamp:7513258
- encoder daily: tax:1,gun:2,pluse:748,pl_inter1:303,pl_inter2:709,pl_inter3:413,timestamp:7533177
- encoder daily: tax:1,gun:2,pluse:798,pl_inter1:302,pl_inter2:706,pl_inter3:416,timestamp:7553332
- encoder daily: tax:1,gun:2,pluse:848,pl_inter1:304,pl_inter2:707,pl_inter3:411,timestamp:7573497
- encoder daily: tax:1,gun:2,pluse:898,pl_inter1:296,pl_inter2:703,pl_inter3:415,timestamp:7593654
- encoder daily: tax:1,gun:2,pluse:948,pl_inter1:305,pl_inter2:712,pl_inter3:413,timestamp:7613861
- encoder daily: tax:1,gun:2,pluse:998,pl_inter1:302,pl_inter2:709,pl_inter3:414,timestamp:7633988
- encoder daily: tax:1,gun:2,pluse:1047,pl_inter1:295,pl_inter2:710,pl_inter3:442,timestamp:7653726
- encoder daily: tax:1,gun:2,pluse:1097,pl_inter1:295,pl_inter2:708,pl_inter3:440,timestamp:7673839
- encoder daily: tax:1,gun:2,pluse:1147,pl_inter1:295,pl_inter2:706,pl_inter3:437,timestamp:7693985
- encoder daily: tax:1,gun:2,pluse:1197,pl_inter1:291,pl_inter2:710,pl_inter3:439,timestamp:7714129
- encoder daily: tax:1,gun:2,pluse:1246,pl_inter1:295,pl_inter2:706,pl_inter3:706,timestamp:7733816
- encoder daily: tax:1,gun:2,pluse:1296,pl_inter1:293,pl_inter2:706,pl_inter3:706,timestamp:7753974
- encoder daily: tax:1,gun:2,pluse:1346,pl_inter1:292,pl_inter2:706,pl_inter3:706,timestamp:7774076
- encoder daily: tax:1,gun:2,pluse:1396,pl_inter1:295,pl_inter2:711,pl_inter3:711,timestamp:7794233
- encoder daily: tax:1,gun:2,pluse:1446,pl_inter1:294,pl_inter2:709,pl_inter3:709,timestamp:7814404
- encoder daily: tax:1,gun:2,pluse:1496,pl_inter1:297,pl_inter2:711,pl_inter3:711,timestamp:7834543
- encoder daily: tax:1,gun:2,pluse:1546,pl_inter1:296,pl_inter2:703,pl_inter3:703,timestamp:7854680
- encoder daily: tax:1,gun:2,pluse:1596,pl_inter1:295,pl_inter2:701,pl_inter3:701,timestamp:7874805
- encoder daily: tax:1,gun:2,pluse:1645,pl_inter1:291,pl_inter2:698,pl_inter3:497,timestamp:7894227
- encoder daily: tax:1,gun:2,pluse:1695,pl_inter1:295,pl_inter2:698,pl_inter3:516,timestamp:7914359
- encoder daily: tax:1,gun:2,pluse:1745,pl_inter1:293,pl_inter2:699,pl_inter3:514,timestamp:7934476
- encoder daily: tax:1,gun:2,pluse:1795,pl_inter1:295,pl_inter2:706,pl_inter3:520,timestamp:7954628
- encoder daily: tax:1,gun:2,pluse:1845,pl_inter1:293,pl_inter2:706,pl_inter3:515,timestamp:7974771
- encoder daily: tax:1,gun:2,pluse:1895,pl_inter1:297,pl_inter2:704,pl_inter3:503,timestamp:7994984
- encoder daily: tax:1,gun:2,pluse:1945,pl_inter1:294,pl_inter2:707,pl_inter3:524,timestamp:8015121
- encoder daily: tax:1,gun:2,pluse:1994,pl_inter1:293,pl_inter2:710,pl_inter3:482,timestamp:8034736
- encoder daily: tax:1,gun:2,pluse:2044,pl_inter1:297,pl_inter2:707,pl_inter3:486,timestamp:8054944
- encoder daily: tax:1,gun:2,pluse:2094,pl_inter1:293,pl_inter2:707,pl_inter3:486,timestamp:8075061
- encoder daily: tax:1,gun:2,pluse:2144,pl_inter1:295,pl_inter2:706,pl_inter3:478,timestamp:8095233
- encoder daily: tax:1,gun:2,pluse:2193,pl_inter1:296,pl_inter2:708,pl_inter3:441,timestamp:8114924
- encoder daily: tax:1,gun:2,pluse:2243,pl_inter1:295,pl_inter2:712,pl_inter3:436,timestamp:8135111
- encoder daily: tax:1,gun:2,pluse:2293,pl_inter1:295,pl_inter2:708,pl_inter3:438,timestamp:8155278
- encoder daily: tax:1,gun:2,pluse:2343,pl_inter1:294,pl_inter2:703,pl_inter3:443,timestamp:8175448
- encoder daily: tax:1,gun:2,pluse:2392,pl_inter1:296,pl_inter2:706,pl_inter3:387,timestamp:8195160
- encoder daily: tax:1,gun:2,pluse:2440,pl_inter1:293,pl_inter2:704,pl_inter3:411,timestamp:8214679
- encoder daily: tax:1,gun:2,pluse:2445,pl_inter1:1511,pl_inter2:4619,pl_inter3:3600,timestamp:8231179
- encoder daily: tax:1,gun:2,pluse:2452,pl_inter1:2412,pl_inter2:5765,pl_inter3:2460,timestamp:8253582
- encoder daily: tax:1,gun:2,pluse:2458,pl_inter1:3020,pl_inter2:3608,pl_inter3:3425,timestamp:8273461
- encoder daily: tax:1,gun:2,pluse:2462,pl_inter1:2404,pl_inter2:3434,pl_inter3:2404,timestamp:8285516
- encoder daily: tax:1,gun:2,pluse:2462,pl_inter1:2404,pl_inter2:3434,pl_inter3:2404,timestamp:8285516
- encoder daily: tax:1,gun:2,pluse:2462,pl_inter1:2404,pl_inter2:3434,pl_inter3:2404,timestamp:8285516
- encoder daily: tax:1,gun:2,pluse:2462,pl_inter1:2404,pl_inter2:3434,pl_inter3:2404,timestamp:8285516
- encoder daily: tax:1,gun:2,pluse:2462,pl_inter1:2404,pl_inter2:3434,pl_inter3:2404,timestamp:8285516
- encoder daily: tax:1,gun:2,pluse:2462,pl_inter1:2404,pl_inter2:3434,pl_inter3:2404,timestamp:8285516
- encoder daily: tax:1,gun:2,pluse:2462,pl_inter1:2404,pl_inter2:3434,pl_inter3:2404,timestamp:8285516
- encoder daily: tax:2,gun:1,pluse:1,pl_inter1:0,pl_inter2:0,pl_inter3:0,timestamp:9264143
- encoder daily: tax:2,gun:1,pluse:7,pl_inter1:2575,pl_inter2:5766,pl_inter3:3073,timestamp:9283995
- encoder daily: tax:2,gun:1,pluse:17,pl_inter1:549,pl_inter2:3301,pl_inter3:549,timestamp:9304470
- encoder daily: tax:2,gun:1,pluse:70,pl_inter1:193,pl_inter2:777,pl_inter3:545,timestamp:9324655
- encoder daily: tax:2,gun:1,pluse:128,pl_inter1:232,pl_inter2:644,pl_inter3:297,timestamp:9345155
- encoder daily: tax:2,gun:1,pluse:183,pl_inter1:222,pl_inter2:605,pl_inter3:402,timestamp:9364925
- encoder daily: tax:2,gun:1,pluse:241,pl_inter1:213,pl_inter2:626,pl_inter3:296,timestamp:9385115
- encoder daily: tax:2,gun:1,pluse:296,pl_inter1:226,pl_inter2:660,pl_inter3:660,timestamp:9405053
- encoder daily: tax:2,gun:1,pluse:354,pl_inter1:214,pl_inter2:610,pl_inter3:373,timestamp:9425137
- encoder daily: tax:2,gun:1,pluse:410,pl_inter1:214,pl_inter2:592,pl_inter3:370,timestamp:9445217
- encoder daily: tax:2,gun:1,pluse:468,pl_inter1:225,pl_inter2:618,pl_inter3:385,timestamp:9465115
- encoder daily: tax:2,gun:1,pluse:524,pl_inter1:215,pl_inter2:617,pl_inter3:263,timestamp:9485205
- encoder daily: tax:2,gun:1,pluse:581,pl_inter1:224,pl_inter2:613,pl_inter3:510,timestamp:9505178
- encoder daily: tax:2,gun:1,pluse:638,pl_inter1:220,pl_inter2:639,pl_inter3:271,timestamp:9525339
- encoder daily: tax:2,gun:1,pluse:694,pl_inter1:228,pl_inter2:655,pl_inter3:511,timestamp:9545047
- encoder daily: tax:2,gun:1,pluse:751,pl_inter1:206,pl_inter2:635,pl_inter3:277,timestamp:9565310
- encoder daily: tax:2,gun:1,pluse:807,pl_inter1:218,pl_inter2:597,pl_inter3:412,timestamp:9585131
- encoder daily: tax:2,gun:1,pluse:866,pl_inter1:219,pl_inter2:629,pl_inter3:293,timestamp:9605442
- encoder daily: tax:2,gun:1,pluse:921,pl_inter1:214,pl_inter2:686,pl_inter3:686,timestamp:9625364
- encoder daily: tax:2,gun:1,pluse:979,pl_inter1:218,pl_inter2:548,pl_inter3:345,timestamp:9645419
- encoder daily: tax:2,gun:1,pluse:1034,pl_inter1:226,pl_inter2:622,pl_inter3:388,timestamp:9665213
- encoder daily: tax:2,gun:1,pluse:1092,pl_inter1:211,pl_inter2:610,pl_inter3:327,timestamp:9685307
- encoder daily: tax:2,gun:1,pluse:1147,pl_inter1:223,pl_inter2:651,pl_inter3:445,timestamp:9705351
- encoder daily: tax:2,gun:1,pluse:1205,pl_inter1:220,pl_inter2:664,pl_inter3:459,timestamp:9725533
- encoder daily: tax:2,gun:1,pluse:1262,pl_inter1:227,pl_inter2:598,pl_inter3:247,timestamp:9745602
- encoder daily: tax:2,gun:1,pluse:1319,pl_inter1:227,pl_inter2:646,pl_inter3:435,timestamp:9765425
- encoder daily: tax:2,gun:1,pluse:1376,pl_inter1:214,pl_inter2:640,pl_inter3:267,timestamp:9785696
- encoder daily: tax:2,gun:1,pluse:1433,pl_inter1:208,pl_inter2:661,pl_inter3:401,timestamp:9805945
- encoder daily: tax:2,gun:1,pluse:1491,pl_inter1:225,pl_inter2:584,pl_inter3:296,timestamp:9826120
- encoder daily: tax:2,gun:1,pluse:1546,pl_inter1:226,pl_inter2:566,pl_inter3:563,timestamp:9845964
- encoder daily: tax:2,gun:1,pluse:1604,pl_inter1:218,pl_inter2:659,pl_inter3:372,timestamp:9866241
- encoder daily: tax:2,gun:1,pluse:1660,pl_inter1:218,pl_inter2:641,pl_inter3:371,timestamp:9886304
- encoder daily: tax:2,gun:1,pluse:1718,pl_inter1:221,pl_inter2:607,pl_inter3:379,timestamp:9906196
- encoder daily: tax:2,gun:1,pluse:1774,pl_inter1:222,pl_inter2:574,pl_inter3:222,timestamp:9926336
- encoder daily: tax:2,gun:1,pluse:1831,pl_inter1:214,pl_inter2:636,pl_inter3:499,timestamp:9946321
- encoder daily: tax:2,gun:1,pluse:1888,pl_inter1:217,pl_inter2:657,pl_inter3:270,timestamp:9966494
- encoder daily: tax:2,gun:1,pluse:1945,pl_inter1:220,pl_inter2:633,pl_inter3:402,timestamp:9986580
- encoder daily: tax:2,gun:1,pluse:2001,pl_inter1:229,pl_inter2:639,pl_inter3:274,timestamp:10006463
- encoder daily: tax:2,gun:1,pluse:2058,pl_inter1:232,pl_inter2:562,pl_inter3:403,timestamp:10026722
- encoder daily: tax:2,gun:1,pluse:2116,pl_inter1:224,pl_inter2:572,pl_inter3:295,timestamp:10046734
- encoder daily: tax:2,gun:1,pluse:2172,pl_inter1:225,pl_inter2:639,pl_inter3:428,timestamp:10067009
- encoder daily: tax:2,gun:1,pluse:2230,pl_inter1:225,pl_inter2:608,pl_inter3:406,timestamp:10087029
- encoder daily: tax:2,gun:1,pluse:2286,pl_inter1:220,pl_inter2:582,pl_inter3:354,timestamp:10107055
- encoder daily: tax:2,gun:1,pluse:2343,pl_inter1:223,pl_inter2:570,pl_inter3:384,timestamp:10126829
- encoder daily: tax:2,gun:1,pluse:2400,pl_inter1:223,pl_inter2:551,pl_inter3:268,timestamp:10147264
- encoder daily: tax:2,gun:1,pluse:2457,pl_inter1:220,pl_inter2:529,pl_inter3:413,timestamp:10167337
- encoder daily: tax:2,gun:1,pluse:2516,pl_inter1:218,pl_inter2:626,pl_inter3:295,timestamp:10187699
- encoder daily: tax:2,gun:1,pluse:2571,pl_inter1:218,pl_inter2:643,pl_inter3:607,timestamp:10207552
- encoder daily: tax:2,gun:1,pluse:2629,pl_inter1:213,pl_inter2:654,pl_inter3:337,timestamp:10227471
- encoder daily: tax:2,gun:1,pluse:2685,pl_inter1:220,pl_inter2:598,pl_inter3:373,timestamp:10247603
- encoder daily: tax:2,gun:1,pluse:2743,pl_inter1:227,pl_inter2:656,pl_inter3:397,timestamp:10267751
- encoder daily: tax:2,gun:1,pluse:2799,pl_inter1:234,pl_inter2:600,pl_inter3:272,timestamp:10287876
- encoder daily: tax:2,gun:1,pluse:2856,pl_inter1:221,pl_inter2:637,pl_inter3:355,timestamp:10307798
- encoder daily: tax:2,gun:1,pluse:2914,pl_inter1:213,pl_inter2:653,pl_inter3:268,timestamp:10327958
- encoder daily: tax:2,gun:1,pluse:2970,pl_inter1:214,pl_inter2:536,pl_inter3:506,timestamp:10347793
- encoder daily: tax:2,gun:1,pluse:3028,pl_inter1:218,pl_inter2:627,pl_inter3:297,timestamp:10368106
- encoder daily: tax:2,gun:1,pluse:3084,pl_inter1:223,pl_inter2:572,pl_inter3:390,timestamp:10388041
- encoder daily: tax:2,gun:1,pluse:3142,pl_inter1:227,pl_inter2:681,pl_inter3:335,timestamp:10408167
- encoder daily: tax:2,gun:1,pluse:3197,pl_inter1:221,pl_inter2:649,pl_inter3:430,timestamp:10428127
- encoder daily: tax:2,gun:1,pluse:3254,pl_inter1:219,pl_inter2:631,pl_inter3:372,timestamp:10447853
- encoder daily: tax:2,gun:1,pluse:3312,pl_inter1:219,pl_inter2:621,pl_inter3:234,timestamp:10468306
- encoder daily: tax:2,gun:1,pluse:3369,pl_inter1:224,pl_inter2:619,pl_inter3:456,timestamp:10488206
- encoder daily: tax:2,gun:1,pluse:3427,pl_inter1:224,pl_inter2:636,pl_inter3:271,timestamp:10508626
- encoder daily: tax:2,gun:1,pluse:3483,pl_inter1:224,pl_inter2:661,pl_inter3:405,timestamp:10528542
- encoder daily: tax:2,gun:1,pluse:3541,pl_inter1:221,pl_inter2:596,pl_inter3:295,timestamp:10548696
- encoder daily: tax:2,gun:1,pluse:3596,pl_inter1:219,pl_inter2:617,pl_inter3:546,timestamp:10568457
- encoder daily: tax:2,gun:1,pluse:3654,pl_inter1:217,pl_inter2:667,pl_inter3:369,timestamp:10588653
- encoder daily: tax:2,gun:1,pluse:3711,pl_inter1:211,pl_inter2:595,pl_inter3:211,timestamp:10608859
- encoder daily: tax:2,gun:1,pluse:3769,pl_inter1:228,pl_inter2:581,pl_inter3:456,timestamp:10628905
- encoder daily: tax:2,gun:1,pluse:3826,pl_inter1:216,pl_inter2:633,pl_inter3:268,timestamp:10649030
- encoder daily: tax:2,gun:1,pluse:3883,pl_inter1:228,pl_inter2:587,pl_inter3:403,timestamp:10669094
- encoder daily: tax:2,gun:1,pluse:3941,pl_inter1:216,pl_inter2:627,pl_inter3:292,timestamp:10689132
- encoder daily: tax:2,gun:1,pluse:3997,pl_inter1:226,pl_inter2:580,pl_inter3:455,timestamp:10709328
- encoder daily: tax:2,gun:1,pluse:4055,pl_inter1:223,pl_inter2:598,pl_inter3:465,timestamp:10729458
- encoder daily: tax:2,gun:1,pluse:4112,pl_inter1:221,pl_inter2:571,pl_inter3:234,timestamp:10749377
- encoder daily: tax:2,gun:1,pluse:4170,pl_inter1:220,pl_inter2:596,pl_inter3:480,timestamp:10769623
- encoder daily: tax:2,gun:1,pluse:4227,pl_inter1:224,pl_inter2:673,pl_inter3:271,timestamp:10789529
- encoder daily: tax:2,gun:1,pluse:4283,pl_inter1:221,pl_inter2:549,pl_inter3:407,timestamp:10809393
- encoder daily: tax:2,gun:1,pluse:4341,pl_inter1:221,pl_inter2:631,pl_inter3:299,timestamp:10829491
- encoder daily: tax:2,gun:1,pluse:4397,pl_inter1:224,pl_inter2:673,pl_inter3:472,timestamp:10849669
- encoder daily: tax:2,gun:1,pluse:4455,pl_inter1:223,pl_inter2:559,pl_inter3:466,timestamp:10869782
- encoder daily: tax:2,gun:1,pluse:4512,pl_inter1:216,pl_inter2:669,pl_inter3:238,timestamp:10889731
- encoder daily: tax:2,gun:1,pluse:4569,pl_inter1:216,pl_inter2:596,pl_inter3:464,timestamp:10909521
- encoder daily: tax:2,gun:1,pluse:4627,pl_inter1:217,pl_inter2:565,pl_inter3:270,timestamp:10929905
- encoder daily: tax:2,gun:1,pluse:4683,pl_inter1:218,pl_inter2:580,pl_inter3:396,timestamp:10949808
- encoder daily: tax:2,gun:1,pluse:4741,pl_inter1:218,pl_inter2:591,pl_inter3:293,timestamp:10969929
- encoder daily: tax:2,gun:1,pluse:4797,pl_inter1:218,pl_inter2:642,pl_inter3:447,timestamp:10990048
- encoder daily: tax:2,gun:1,pluse:4855,pl_inter1:220,pl_inter2:560,pl_inter3:470,timestamp:11010113
- encoder daily: tax:2,gun:1,pluse:4912,pl_inter1:217,pl_inter2:607,pl_inter3:224,timestamp:11030091
- encoder daily: tax:2,gun:1,pluse:4969,pl_inter1:214,pl_inter2:583,pl_inter3:462,timestamp:11049959
- encoder daily: tax:2,gun:1,pluse:5026,pl_inter1:215,pl_inter2:578,pl_inter3:267,timestamp:11070122
- encoder daily: tax:2,gun:1,pluse:5082,pl_inter1:224,pl_inter2:626,pl_inter3:372,timestamp:11089919
- encoder daily: tax:2,gun:1,pluse:5140,pl_inter1:223,pl_inter2:534,pl_inter3:275,timestamp:11110126
- encoder daily: tax:2,gun:1,pluse:5196,pl_inter1:216,pl_inter2:626,pl_inter3:608,timestamp:11130311
- encoder daily: tax:2,gun:1,pluse:5254,pl_inter1:223,pl_inter2:626,pl_inter3:369,timestamp:11150436
- encoder daily: tax:2,gun:1,pluse:5311,pl_inter1:217,pl_inter2:655,pl_inter3:219,timestamp:11170643
- encoder daily: tax:2,gun:1,pluse:5369,pl_inter1:204,pl_inter2:631,pl_inter3:464,timestamp:11190753
- encoder daily: tax:2,gun:1,pluse:5426,pl_inter1:224,pl_inter2:608,pl_inter3:274,timestamp:11210897
- encoder daily: tax:2,gun:1,pluse:5482,pl_inter1:222,pl_inter2:672,pl_inter3:378,timestamp:11230688
- encoder daily: tax:2,gun:1,pluse:5540,pl_inter1:224,pl_inter2:558,pl_inter3:275,timestamp:11250990
- encoder daily: tax:2,gun:1,pluse:5596,pl_inter1:222,pl_inter2:645,pl_inter3:645,timestamp:11271131
- encoder daily: tax:2,gun:1,pluse:5653,pl_inter1:220,pl_inter2:595,pl_inter3:312,timestamp:11290895
- encoder daily: tax:2,gun:1,pluse:5709,pl_inter1:231,pl_inter2:570,pl_inter3:387,timestamp:11310853
- encoder daily: tax:2,gun:1,pluse:5744,pl_inter1:210,pl_inter2:5120,pl_inter3:3332,timestamp:11330590
- encoder daily: tax:2,gun:1,pluse:5750,pl_inter1:2276,pl_inter2:5390,pl_inter3:2276,timestamp:11349659
- encoder daily: tax:2,gun:1,pluse:5757,pl_inter1:2327,pl_inter2:3343,pl_inter3:3343,timestamp:11370937
- encoder daily: tax:2,gun:1,pluse:5761,pl_inter1:2269,pl_inter2:3364,pl_inter3:2269,timestamp:11383087
- encoder daily: tax:2,gun:1,pluse:5761,pl_inter1:2269,pl_inter2:3364,pl_inter3:2269,timestamp:11383087
- encoder daily: tax:2,gun:1,pluse:5761,pl_inter1:2269,pl_inter2:3364,pl_inter3:2269,timestamp:11383087
- encoder daily: tax:2,gun:1,pluse:5761,pl_inter1:2269,pl_inter2:3364,pl_inter3:2269,timestamp:11383087
- encoder daily: tax:2,gun:1,pluse:5761,pl_inter1:2269,pl_inter2:3364,pl_inter3:2269,timestamp:11383087
- encoder daily: tax:2,gun:1,pluse:5761,pl_inter1:2269,pl_inter2:3364,pl_inter3:2269,timestamp:11383087
- encoder daily: tax:2,gun:1,pluse:5761,pl_inter1:2269,pl_inter2:3364,pl_inter3:2269,timestamp:11383087
- encoder daily: tax:2,gun:1,pluse:5761,pl_inter1:2269,pl_inter2:3364,pl_inter3:2269,timestamp:11383087
- encoder daily: tax:1,gun:2,pluse:6,pl_inter1:2450,pl_inter2:4661,pl_inter3:2937,timestamp:37914787
- encoder daily: tax:1,gun:2,pluse:12,pl_inter1:2877,pl_inter2:5466,pl_inter3:2877,timestamp:37936286
- encoder daily: tax:1,gun:2,pluse:49,pl_inter1:286,pl_inter2:2406,pl_inter3:345,timestamp:37956948
- encoder daily: tax:1,gun:2,pluse:98,pl_inter1:296,pl_inter2:726,pl_inter3:441,timestamp:37976978
- encoder daily: tax:1,gun:2,pluse:147,pl_inter1:299,pl_inter2:716,pl_inter3:442,timestamp:37996918
- encoder daily: tax:1,gun:2,pluse:196,pl_inter1:298,pl_inter2:717,pl_inter3:443,timestamp:38016817
- encoder daily: tax:1,gun:2,pluse:246,pl_inter1:298,pl_inter2:711,pl_inter3:445,timestamp:38037152
- encoder daily: tax:1,gun:2,pluse:295,pl_inter1:298,pl_inter2:713,pl_inter3:436,timestamp:38056988
- encoder daily: tax:1,gun:2,pluse:345,pl_inter1:299,pl_inter2:710,pl_inter3:447,timestamp:38077264
- encoder daily: tax:1,gun:2,pluse:394,pl_inter1:297,pl_inter2:720,pl_inter3:523,timestamp:38097119
- encoder daily: tax:1,gun:2,pluse:444,pl_inter1:298,pl_inter2:716,pl_inter3:524,timestamp:38117398
- encoder daily: tax:1,gun:2,pluse:494,pl_inter1:296,pl_inter2:714,pl_inter3:511,timestamp:38137690
- encoder daily: tax:1,gun:2,pluse:543,pl_inter1:300,pl_inter2:713,pl_inter3:451,timestamp:38157496
- encoder daily: tax:1,gun:2,pluse:593,pl_inter1:296,pl_inter2:709,pl_inter3:438,timestamp:38177776
- encoder daily: tax:1,gun:2,pluse:642,pl_inter1:301,pl_inter2:714,pl_inter3:381,timestamp:38197687
- encoder daily: tax:1,gun:2,pluse:692,pl_inter1:297,pl_inter2:719,pl_inter3:378,timestamp:38217981
- encoder daily: tax:1,gun:2,pluse:741,pl_inter1:299,pl_inter2:728,pl_inter3:334,timestamp:38238019
- encoder daily: tax:1,gun:2,pluse:791,pl_inter1:300,pl_inter2:715,pl_inter3:336,timestamp:38258365
- encoder daily: tax:1,gun:2,pluse:840,pl_inter1:296,pl_inter2:713,pl_inter3:324,timestamp:38278412
- encoder daily: tax:1,gun:2,pluse:888,pl_inter1:301,pl_inter2:724,pl_inter3:318,timestamp:38298166
- encoder daily: tax:1,gun:2,pluse:937,pl_inter1:298,pl_inter2:710,pl_inter3:298,timestamp:38318209
- encoder daily: tax:1,gun:2,pluse:987,pl_inter1:297,pl_inter2:714,pl_inter3:297,timestamp:38338585
- encoder daily: tax:1,gun:2,pluse:1036,pl_inter1:305,pl_inter2:713,pl_inter3:414,timestamp:38358650
- encoder daily: tax:1,gun:2,pluse:1085,pl_inter1:307,pl_inter2:717,pl_inter3:447,timestamp:38378652
- encoder daily: tax:1,gun:2,pluse:1134,pl_inter1:300,pl_inter2:713,pl_inter3:713,timestamp:38398578
- encoder daily: tax:1,gun:2,pluse:1184,pl_inter1:300,pl_inter2:711,pl_inter3:711,timestamp:38418937
- encoder daily: tax:1,gun:2,pluse:1233,pl_inter1:296,pl_inter2:707,pl_inter3:509,timestamp:38438594
- encoder daily: tax:1,gun:2,pluse:1283,pl_inter1:296,pl_inter2:711,pl_inter3:511,timestamp:38458966
- encoder daily: tax:1,gun:2,pluse:1332,pl_inter1:298,pl_inter2:718,pl_inter3:484,timestamp:38478773
- encoder daily: tax:1,gun:2,pluse:1381,pl_inter1:298,pl_inter2:713,pl_inter3:447,timestamp:38498685
- encoder daily: tax:1,gun:2,pluse:1431,pl_inter1:299,pl_inter2:719,pl_inter3:442,timestamp:38519047
- encoder daily: tax:1,gun:2,pluse:1480,pl_inter1:297,pl_inter2:712,pl_inter3:390,timestamp:38538970
- encoder daily: tax:1,gun:2,pluse:1529,pl_inter1:297,pl_inter2:713,pl_inter3:341,timestamp:38558961
- encoder daily: tax:1,gun:2,pluse:1578,pl_inter1:295,pl_inter2:709,pl_inter3:324,timestamp:38579001
- encoder daily: tax:1,gun:2,pluse:1627,pl_inter1:298,pl_inter2:709,pl_inter3:323,timestamp:38599038
- encoder daily: tax:1,gun:2,pluse:1677,pl_inter1:297,pl_inter2:711,pl_inter3:323,timestamp:38619362
- encoder daily: tax:1,gun:2,pluse:1726,pl_inter1:296,pl_inter2:712,pl_inter3:314,timestamp:38639390
- encoder daily: tax:1,gun:2,pluse:1775,pl_inter1:301,pl_inter2:711,pl_inter3:308,timestamp:38659450
- encoder daily: tax:1,gun:2,pluse:1824,pl_inter1:294,pl_inter2:710,pl_inter3:359,timestamp:38679479
- encoder daily: tax:1,gun:2,pluse:1873,pl_inter1:299,pl_inter2:715,pl_inter3:432,timestamp:38699471
- encoder daily: tax:1,gun:2,pluse:1922,pl_inter1:297,pl_inter2:713,pl_inter3:442,timestamp:38719406
- encoder daily: tax:1,gun:2,pluse:1971,pl_inter1:299,pl_inter2:721,pl_inter3:456,timestamp:38739359
- encoder daily: tax:1,gun:2,pluse:2020,pl_inter1:298,pl_inter2:714,pl_inter3:552,timestamp:38759248
- encoder daily: tax:1,gun:2,pluse:2071,pl_inter1:299,pl_inter2:714,pl_inter3:453,timestamp:38780026
- encoder daily: tax:1,gun:2,pluse:2121,pl_inter1:297,pl_inter2:712,pl_inter3:447,timestamp:38800360
- encoder daily: tax:1,gun:2,pluse:2170,pl_inter1:301,pl_inter2:717,pl_inter3:551,timestamp:38820260
- encoder daily: tax:1,gun:2,pluse:2220,pl_inter1:298,pl_inter2:712,pl_inter3:547,timestamp:38840555
- encoder daily: tax:1,gun:2,pluse:2269,pl_inter1:298,pl_inter2:710,pl_inter3:515,timestamp:38860390
- encoder daily: tax:1,gun:2,pluse:2319,pl_inter1:297,pl_inter2:713,pl_inter3:514,timestamp:38880810
- encoder daily: tax:1,gun:2,pluse:2368,pl_inter1:298,pl_inter2:713,pl_inter3:451,timestamp:38900689
- encoder daily: tax:1,gun:2,pluse:2417,pl_inter1:297,pl_inter2:716,pl_inter3:387,timestamp:38920648
- encoder daily: tax:1,gun:2,pluse:2467,pl_inter1:299,pl_inter2:712,pl_inter3:391,timestamp:38940995
- encoder daily: tax:1,gun:2,pluse:2516,pl_inter1:299,pl_inter2:713,pl_inter3:333,timestamp:38960936
- encoder daily: tax:1,gun:2,pluse:2565,pl_inter1:298,pl_inter2:708,pl_inter3:322,timestamp:38980918
- encoder daily: tax:1,gun:2,pluse:2614,pl_inter1:299,pl_inter2:711,pl_inter3:320,timestamp:39000892
- encoder daily: tax:1,gun:2,pluse:2664,pl_inter1:299,pl_inter2:709,pl_inter3:319,timestamp:39021222
- encoder daily: tax:1,gun:2,pluse:2713,pl_inter1:300,pl_inter2:717,pl_inter3:317,timestamp:39041275
- encoder daily: tax:1,gun:2,pluse:2762,pl_inter1:298,pl_inter2:711,pl_inter3:374,timestamp:39061346
- encoder daily: tax:1,gun:2,pluse:2811,pl_inter1:300,pl_inter2:712,pl_inter3:431,timestamp:39081352
- encoder daily: tax:1,gun:2,pluse:2824,pl_inter1:317,pl_inter2:533,pl_inter3:362,timestamp:39086630
- encoder daily: tax:1,gun:2,pluse:2824,pl_inter1:317,pl_inter2:533,pl_inter3:362,timestamp:39086630
- encoder daily: tax:1,gun:2,pluse:2824,pl_inter1:317,pl_inter2:533,pl_inter3:362,timestamp:39086630
- encoder daily: tax:1,gun:2,pluse:2824,pl_inter1:317,pl_inter2:533,pl_inter3:362,timestamp:39086630
- encoder daily: tax:1,gun:2,pluse:2824,pl_inter1:317,pl_inter2:533,pl_inter3:362,timestamp:39086630
- encoder daily: tax:1,gun:2,pluse:2824,pl_inter1:317,pl_inter2:533,pl_inter3:362,timestamp:39086630
- encoder daily: tax:1,gun:2,pluse:2824,pl_inter1:317,pl_inter2:533,pl_inter3:362,timestamp:39086630
- encoder daily: tax:1,gun:2,pluse:2824,pl_inter1:317,pl_inter2:533,pl_inter3:362,timestamp:39086630
- encoder daily: tax:1,gun:2,pluse:1,pl_inter1:0,pl_inter2:0,pl_inter3:0,timestamp:50644958
- encoder daily: tax:1,gun:2,pluse:8,pl_inter1:2163,pl_inter2:4348,pl_inter3:3342,timestamp:50666435
- encoder daily: tax:1,gun:2,pluse:18,pl_inter1:519,pl_inter2:5642,pl_inter3:584,timestamp:50687869
- encoder daily: tax:1,gun:2,pluse:66,pl_inter1:292,pl_inter2:745,pl_inter3:333,timestamp:50708394
- encoder daily: tax:1,gun:2,pluse:116,pl_inter1:297,pl_inter2:712,pl_inter3:320,timestamp:50728614
- encoder daily: tax:1,gun:2,pluse:165,pl_inter1:298,pl_inter2:715,pl_inter3:327,timestamp:50748505
- encoder daily: tax:1,gun:2,pluse:215,pl_inter1:296,pl_inter2:720,pl_inter3:326,timestamp:50768690
- encoder daily: tax:1,gun:2,pluse:264,pl_inter1:301,pl_inter2:727,pl_inter3:318,timestamp:50788661
- encoder daily: tax:1,gun:2,pluse:313,pl_inter1:299,pl_inter2:720,pl_inter3:299,timestamp:50808639
- encoder daily: tax:1,gun:2,pluse:362,pl_inter1:304,pl_inter2:718,pl_inter3:407,timestamp:50828585
- encoder daily: tax:1,gun:2,pluse:412,pl_inter1:302,pl_inter2:717,pl_inter3:416,timestamp:50848781
- encoder daily: tax:1,gun:2,pluse:461,pl_inter1:297,pl_inter2:722,pl_inter3:442,timestamp:50868612
- encoder daily: tax:1,gun:2,pluse:511,pl_inter1:300,pl_inter2:720,pl_inter3:444,timestamp:50888840
- encoder daily: tax:1,gun:2,pluse:560,pl_inter1:299,pl_inter2:719,pl_inter3:719,timestamp:50908657
- encoder daily: tax:1,gun:2,pluse:610,pl_inter1:294,pl_inter2:717,pl_inter3:717,timestamp:50928895
- encoder daily: tax:1,gun:2,pluse:659,pl_inter1:299,pl_inter2:701,pl_inter3:467,timestamp:50948418
- encoder daily: tax:1,gun:2,pluse:709,pl_inter1:296,pl_inter2:700,pl_inter3:476,timestamp:50968682
- encoder daily: tax:1,gun:2,pluse:759,pl_inter1:297,pl_inter2:723,pl_inter3:473,timestamp:50988917
- encoder daily: tax:1,gun:2,pluse:809,pl_inter1:299,pl_inter2:720,pl_inter3:473,timestamp:51009181
- encoder daily: tax:1,gun:2,pluse:858,pl_inter1:298,pl_inter2:716,pl_inter3:495,timestamp:51028985
- encoder daily: tax:1,gun:2,pluse:907,pl_inter1:301,pl_inter2:721,pl_inter3:447,timestamp:51048789
- encoder daily: tax:1,gun:2,pluse:957,pl_inter1:298,pl_inter2:726,pl_inter3:452,timestamp:51069047
- encoder daily: tax:1,gun:2,pluse:1007,pl_inter1:295,pl_inter2:717,pl_inter3:447,timestamp:51089291
- encoder daily: tax:1,gun:2,pluse:1057,pl_inter1:299,pl_inter2:717,pl_inter3:455,timestamp:51109540
- encoder daily: tax:1,gun:2,pluse:1107,pl_inter1:298,pl_inter2:719,pl_inter3:447,timestamp:51129770
- encoder daily: tax:1,gun:2,pluse:1156,pl_inter1:296,pl_inter2:721,pl_inter3:393,timestamp:51149568
- encoder daily: tax:1,gun:2,pluse:1206,pl_inter1:298,pl_inter2:727,pl_inter3:393,timestamp:51169825
- encoder daily: tax:1,gun:2,pluse:1255,pl_inter1:296,pl_inter2:715,pl_inter3:346,timestamp:51189676
- encoder daily: tax:1,gun:2,pluse:1305,pl_inter1:300,pl_inter2:723,pl_inter3:342,timestamp:51209918
- encoder daily: tax:1,gun:2,pluse:1354,pl_inter1:300,pl_inter2:721,pl_inter3:324,timestamp:51229848
- encoder daily: tax:1,gun:2,pluse:1404,pl_inter1:296,pl_inter2:723,pl_inter3:321,timestamp:51250106
- encoder daily: tax:1,gun:2,pluse:1454,pl_inter1:299,pl_inter2:722,pl_inter3:325,timestamp:51270398
- encoder daily: tax:1,gun:2,pluse:1503,pl_inter1:297,pl_inter2:725,pl_inter3:324,timestamp:51290351
- encoder daily: tax:1,gun:2,pluse:1552,pl_inter1:300,pl_inter2:726,pl_inter3:316,timestamp:51310478
- encoder daily: tax:1,gun:2,pluse:1601,pl_inter1:299,pl_inter2:726,pl_inter3:307,timestamp:51330569
- encoder daily: tax:1,gun:2,pluse:1650,pl_inter1:299,pl_inter2:719,pl_inter3:361,timestamp:51350664
- encoder daily: tax:1,gun:2,pluse:1699,pl_inter1:300,pl_inter2:724,pl_inter3:437,timestamp:51370667
- encoder daily: tax:1,gun:2,pluse:1748,pl_inter1:299,pl_inter2:724,pl_inter3:440,timestamp:51390623
- encoder daily: tax:1,gun:2,pluse:1797,pl_inter1:300,pl_inter2:720,pl_inter3:480,timestamp:51410539
- encoder daily: tax:1,gun:2,pluse:1846,pl_inter1:302,pl_inter2:728,pl_inter3:471,timestamp:51430458
- encoder daily: tax:1,gun:2,pluse:1896,pl_inter1:302,pl_inter2:725,pl_inter3:487,timestamp:51450818
- encoder daily: tax:1,gun:2,pluse:1945,pl_inter1:298,pl_inter2:720,pl_inter3:527,timestamp:51470679
- encoder daily: tax:1,gun:2,pluse:1994,pl_inter1:301,pl_inter2:729,pl_inter3:461,timestamp:51490585
- encoder daily: tax:1,gun:2,pluse:2044,pl_inter1:300,pl_inter2:721,pl_inter3:452,timestamp:51511000
- encoder daily: tax:1,gun:2,pluse:2093,pl_inter1:303,pl_inter2:728,pl_inter3:392,timestamp:51530934
- encoder daily: tax:1,gun:2,pluse:2142,pl_inter1:300,pl_inter2:727,pl_inter3:338,timestamp:51550960
- encoder daily: tax:1,gun:2,pluse:2191,pl_inter1:301,pl_inter2:726,pl_inter3:322,timestamp:51571013
- encoder daily: tax:1,gun:2,pluse:2240,pl_inter1:301,pl_inter2:720,pl_inter3:320,timestamp:51591072
- encoder daily: tax:1,gun:2,pluse:2289,pl_inter1:301,pl_inter2:721,pl_inter3:315,timestamp:51611141
- encoder daily: tax:1,gun:2,pluse:2339,pl_inter1:302,pl_inter2:728,pl_inter3:318,timestamp:51631565
- encoder daily: tax:1,gun:2,pluse:2388,pl_inter1:301,pl_inter2:730,pl_inter3:372,timestamp:51651628
- encoder daily: tax:1,gun:2,pluse:2437,pl_inter1:300,pl_inter2:726,pl_inter3:425,timestamp:51671634
- encoder daily: tax:1,gun:2,pluse:2486,pl_inter1:300,pl_inter2:723,pl_inter3:438,timestamp:51691617
- encoder daily: tax:1,gun:2,pluse:2535,pl_inter1:300,pl_inter2:728,pl_inter3:703,timestamp:51711515
- encoder daily: tax:1,gun:2,pluse:2585,pl_inter1:299,pl_inter2:726,pl_inter3:704,timestamp:51731893
- encoder daily: tax:1,gun:2,pluse:2635,pl_inter1:298,pl_inter2:722,pl_inter3:708,timestamp:51752306
- encoder daily: tax:1,gun:2,pluse:2684,pl_inter1:301,pl_inter2:725,pl_inter3:440,timestamp:51771976
- encoder daily: tax:1,gun:2,pluse:2734,pl_inter1:298,pl_inter2:717,pl_inter3:440,timestamp:51792384
- encoder daily: tax:1,gun:2,pluse:2784,pl_inter1:301,pl_inter2:727,pl_inter3:441,timestamp:51812732
- encoder daily: tax:1,gun:2,pluse:2833,pl_inter1:296,pl_inter2:722,pl_inter3:503,timestamp:51832657
- encoder daily: tax:1,gun:2,pluse:2882,pl_inter1:301,pl_inter2:725,pl_inter3:482,timestamp:51852515
- encoder daily: tax:1,gun:2,pluse:2931,pl_inter1:300,pl_inter2:719,pl_inter3:411,timestamp:51872429
- encoder daily: tax:1,gun:2,pluse:2981,pl_inter1:300,pl_inter2:726,pl_inter3:409,timestamp:51892831
- encoder daily: tax:1,gun:2,pluse:3030,pl_inter1:300,pl_inter2:723,pl_inter3:348,timestamp:51912782
- encoder daily: tax:1,gun:2,pluse:3079,pl_inter1:297,pl_inter2:720,pl_inter3:325,timestamp:51932837
- encoder daily: tax:1,gun:2,pluse:3128,pl_inter1:303,pl_inter2:732,pl_inter3:324,timestamp:51952886
- encoder daily: tax:1,gun:2,pluse:3177,pl_inter1:299,pl_inter2:721,pl_inter3:323,timestamp:51972961
- encoder daily: tax:1,gun:2,pluse:3226,pl_inter1:299,pl_inter2:729,pl_inter3:305,timestamp:51993058
- encoder daily: tax:1,gun:2,pluse:3275,pl_inter1:299,pl_inter2:716,pl_inter3:358,timestamp:52013151
- encoder daily: tax:1,gun:2,pluse:3324,pl_inter1:297,pl_inter2:728,pl_inter3:436,timestamp:52033167
- encoder daily: tax:1,gun:2,pluse:3373,pl_inter1:300,pl_inter2:725,pl_inter3:445,timestamp:52053083
- encoder daily: tax:1,gun:2,pluse:3422,pl_inter1:301,pl_inter2:721,pl_inter3:445,timestamp:52073038
- encoder daily: tax:1,gun:2,pluse:3471,pl_inter1:300,pl_inter2:725,pl_inter3:443,timestamp:52092985
- encoder daily: tax:1,gun:2,pluse:3521,pl_inter1:300,pl_inter2:726,pl_inter3:443,timestamp:52113336
- encoder daily: tax:1,gun:2,pluse:3570,pl_inter1:302,pl_inter2:726,pl_inter3:525,timestamp:52133249
- encoder daily: tax:1,gun:2,pluse:3620,pl_inter1:300,pl_inter2:727,pl_inter3:521,timestamp:52153559
- encoder daily: tax:1,gun:2,pluse:3669,pl_inter1:300,pl_inter2:724,pl_inter3:454,timestamp:52173427
- encoder daily: tax:1,gun:2,pluse:3719,pl_inter1:297,pl_inter2:721,pl_inter3:449,timestamp:52193773
- encoder daily: tax:1,gun:2,pluse:3768,pl_inter1:299,pl_inter2:727,pl_inter3:382,timestamp:52213700
- encoder daily: tax:1,gun:2,pluse:3818,pl_inter1:299,pl_inter2:719,pl_inter3:385,timestamp:52234067
- encoder daily: tax:1,gun:2,pluse:3867,pl_inter1:298,pl_inter2:723,pl_inter3:335,timestamp:52254049
- encoder daily: tax:1,gun:2,pluse:3916,pl_inter1:299,pl_inter2:718,pl_inter3:323,timestamp:52274064
- encoder daily: tax:1,gun:2,pluse:3965,pl_inter1:300,pl_inter2:726,pl_inter3:328,timestamp:52294151
- encoder daily: tax:1,gun:2,pluse:4014,pl_inter1:297,pl_inter2:716,pl_inter3:316,timestamp:52314049
- encoder daily: tax:1,gun:2,pluse:4064,pl_inter1:298,pl_inter2:725,pl_inter3:316,timestamp:52334374
- encoder daily: tax:1,gun:2,pluse:4114,pl_inter1:300,pl_inter2:720,pl_inter3:318,timestamp:52354680
- encoder daily: tax:1,gun:2,pluse:4163,pl_inter1:299,pl_inter2:722,pl_inter3:299,timestamp:52374694
- encoder daily: tax:1,gun:2,pluse:4212,pl_inter1:305,pl_inter2:727,pl_inter3:419,timestamp:52394786
- encoder daily: tax:1,gun:2,pluse:4261,pl_inter1:304,pl_inter2:720,pl_inter3:442,timestamp:52414766
- encoder daily: tax:1,gun:2,pluse:4310,pl_inter1:299,pl_inter2:726,pl_inter3:726,timestamp:52434669
- encoder daily: tax:1,gun:2,pluse:4360,pl_inter1:300,pl_inter2:720,pl_inter3:720,timestamp:52455005
- encoder daily: tax:1,gun:2,pluse:4409,pl_inter1:296,pl_inter2:712,pl_inter3:491,timestamp:52474613
- encoder daily: tax:1,gun:2,pluse:4459,pl_inter1:297,pl_inter2:716,pl_inter3:491,timestamp:52494893
- encoder daily: tax:1,gun:2,pluse:4508,pl_inter1:299,pl_inter2:720,pl_inter3:498,timestamp:52514750
- encoder daily: tax:1,gun:2,pluse:4523,pl_inter1:303,pl_inter2:729,pl_inter3:448,timestamp:52521145
- encoder daily: tax:1,gun:2,pluse:4523,pl_inter1:303,pl_inter2:729,pl_inter3:448,timestamp:52521145
- encoder daily: tax:1,gun:2,pluse:4523,pl_inter1:303,pl_inter2:729,pl_inter3:448,timestamp:52521145
- encoder daily: tax:1,gun:2,pluse:4523,pl_inter1:303,pl_inter2:729,pl_inter3:448,timestamp:52521145
- encoder daily: tax:1,gun:2,pluse:4523,pl_inter1:303,pl_inter2:729,pl_inter3:448,timestamp:52521145
- encoder daily: tax:1,gun:2,pluse:4523,pl_inter1:303,pl_inter2:729,pl_inter3:448,timestamp:52521145
- encoder daily: tax:1,gun:2,pluse:4523,pl_inter1:303,pl_inter2:729,pl_inter3:448,timestamp:52521145
- encoder daily: tax:1,gun:2,pluse:4523,pl_inter1:303,pl_inter2:729,pl_inter3:448,timestamp:52521145
- encoder daily: tax:1,gun:2,pluse:4523,pl_inter1:303,pl_inter2:729,pl_inter3:448,timestamp:52521145
- encoder daily: tax:1,gun:2,pluse:4523,pl_inter1:303,pl_inter2:729,pl_inter3:448,timestamp:52521145
- encoder daily: tax:1,gun:2,pluse:5,pl_inter1:2484,pl_inter2:2988,pl_inter3:2558,timestamp:53945685
- encoder daily: tax:1,gun:2,pluse:16,pl_inter1:757,pl_inter2:3968,pl_inter3:757,timestamp:53967531
- encoder daily: tax:1,gun:2,pluse:37,pl_inter1:685,pl_inter2:1564,pl_inter3:1564,timestamp:53986928
- encoder daily: tax:1,gun:2,pluse:61,pl_inter1:640,pl_inter2:1057,pl_inter3:905,timestamp:54006638
- encoder daily: tax:1,gun:2,pluse:86,pl_inter1:609,pl_inter2:1461,pl_inter3:899,timestamp:54027828
- encoder daily: tax:1,gun:2,pluse:111,pl_inter1:606,pl_inter2:1443,pl_inter3:873,timestamp:54047910
- encoder daily: tax:1,gun:2,pluse:135,pl_inter1:606,pl_inter2:1393,pl_inter3:858,timestamp:54067452
- encoder daily: tax:1,gun:2,pluse:160,pl_inter1:604,pl_inter2:1422,pl_inter3:854,timestamp:54087583
- encoder daily: tax:1,gun:2,pluse:184,pl_inter1:603,pl_inter2:1408,pl_inter3:868,timestamp:54107242
- encoder daily: tax:1,gun:2,pluse:209,pl_inter1:615,pl_inter2:1459,pl_inter3:861,timestamp:54127837
- encoder daily: tax:1,gun:2,pluse:233,pl_inter1:626,pl_inter2:1428,pl_inter3:1038,timestamp:54148089
- encoder daily: tax:1,gun:2,pluse:252,pl_inter1:666,pl_inter2:1504,pl_inter3:1156,timestamp:54167787
- encoder daily: tax:1,gun:2,pluse:266,pl_inter1:993,pl_inter2:2473,pl_inter3:1121,timestamp:54187503
- encoder daily: tax:1,gun:2,pluse:276,pl_inter1:1139,pl_inter2:1902,pl_inter3:1561,timestamp:54202436
- encoder daily: tax:1,gun:2,pluse:276,pl_inter1:1139,pl_inter2:1902,pl_inter3:1561,timestamp:54202436
- encoder daily: tax:1,gun:2,pluse:276,pl_inter1:1139,pl_inter2:1902,pl_inter3:1561,timestamp:54202436
- encoder daily: tax:1,gun:2,pluse:276,pl_inter1:1139,pl_inter2:1902,pl_inter3:1561,timestamp:54202436
- encoder daily: tax:1,gun:2,pluse:276,pl_inter1:1139,pl_inter2:1902,pl_inter3:1561,timestamp:54202436
- encoder daily: tax:1,gun:2,pluse:276,pl_inter1:1139,pl_inter2:1902,pl_inter3:1561,timestamp:54202436
- encoder daily: tax:1,gun:2,pluse:276,pl_inter1:1139,pl_inter2:1902,pl_inter3:1561,timestamp:54202436
- encoder daily: tax:1,gun:2,pluse:281,pl_inter1:2457,pl_inter2:134456,pl_inter3:2568,timestamp:54347139
- encoder daily: tax:1,gun:2,pluse:281,pl_inter1:2457,pl_inter2:134456,pl_inter3:2568,timestamp:54347139
- encoder daily: tax:1,gun:2,pluse:281,pl_inter1:2457,pl_inter2:134456,pl_inter3:2568,timestamp:54347139
- encoder daily: tax:1,gun:2,pluse:281,pl_inter1:2457,pl_inter2:134456,pl_inter3:2568,timestamp:54347139
- encoder daily: tax:1,gun:2,pluse:281,pl_inter1:2457,pl_inter2:134456,pl_inter3:2568,timestamp:54347139
- encoder daily: tax:1,gun:2,pluse:281,pl_inter1:2457,pl_inter2:134456,pl_inter3:2568,timestamp:54347139
- encoder daily: tax:1,gun:2,pluse:283,pl_inter1:3595,pl_inter2:107268,pl_inter3:3595,timestamp:54458002
- encoder daily: tax:1,gun:2,pluse:283,pl_inter1:3595,pl_inter2:107268,pl_inter3:3595,timestamp:54458002
- encoder daily: tax:1,gun:2,pluse:283,pl_inter1:3595,pl_inter2:107268,pl_inter3:3595,timestamp:54458002
- */
|