[feat] add cali data

This commit is contained in:
zhji 2024-07-13 22:57:08 +08:00
parent b5c3737eeb
commit 817b91d2cd
2 changed files with 54 additions and 1 deletions

View File

@ -214,7 +214,58 @@ int lark1s_parse_gas3_info(uint8_t *buffer, int length, struct lark1s_gas_info_s
info->unit_name[j] = buffer[i + 20 + j];
}
info->range = MB_GET_UWORD(buffer + i + 32);
info->min_cali = MB_GET_UWORD(buffer + i + 56);
info->min_cali = MB_GET_UWORD(buffer + i + 76);
return LARK1S_PARSE_OK;
}
int lark1s_req_gas3_cali_data(uint8_t *buffer)
{
struct crc16_result_s crc;
int i = 0;
buffer[i++] = mb_addr;
buffer[i++] = MODBUS_FUNCTION_CODE_READ_INPUT;
buffer[i++] = (LARK1S_REG_GAS3_CALI_DATA >> 8) & 0xFF;
buffer[i++] = LARK1S_REG_GAS3_CALI_DATA & 0xFF;
buffer[i++] = (LARK1S_SIZE_GAS3_CALI_DATA >> 8) & 0xFF;
buffer[i++] = LARK1S_SIZE_GAS3_CALI_DATA & 0xFF;
crc16_8005_calc(buffer, i, &crc);
buffer[i++] = crc.crcl;
buffer[i++] = crc.crch;
return i;
}
int lark1s_parse_gas3_cali_data(uint8_t *buffer, int length, struct lark1s_gas_cali_data_s *data)
{
int ret;
int i = 0;
if (length != LARK1S_SIZE_GAS3_CALI_DATA * 2 + 5) {
return LARK1S_PARSE_FRAME_ERROR;
}
ret = lark1s_frame_check(buffer, length);
if (ret) {
return ret;
}
i++;
if (buffer[i++] != MODBUS_FUNCTION_CODE_READ_INPUT) {
return LARK1S_PARSE_FUNCTION_CODE_ERROR;
}
if (buffer[i++] != LARK1S_SIZE_GAS3_CALI_DATA * 2) {
return LARK1S_PARSE_DATA_LENGTH_ERROR;
}
data->available = MB_GET_UWORD(buffer + i);
data->zero_sig_cts = MB_GET_UWORD(buffer + i + 4);
data->zero_ref_cts = MB_GET_UWORD(buffer + i + 8);
data->zero_det_temp = MB_GET_UWORD(buffer + i + 12);
data->zero_lamp_temp = MB_GET_UWORD(buffer + i + 16);
data->span_concentration = MB_GET_UWORD(buffer + i + 28);
data->span_sig_cts = MB_GET_UWORD(buffer + i + 32);
data->span_ref_cts = MB_GET_UWORD(buffer + i + 36);
data->span_det_temp = MB_GET_UWORD(buffer + i + 40);
data->span_lamp_temp = MB_GET_UWORD(buffer + i + 44);
return LARK1S_PARSE_OK;
}

View File

@ -63,6 +63,8 @@ int lark1s_req_sn(uint8_t *buffer);
int lark1s_parse_sn(uint8_t *buffer, int length, char *sn);
int lark1s_req_gas3_info(uint8_t *buffer);
int lark1s_parse_gas3_info(uint8_t *buffer, int length, struct lark1s_gas_info_s *info);
int lark1s_req_gas3_cali_data(uint8_t *buffer);
int lark1s_parse_gas3_cali_data(uint8_t *buffer, int length, struct lark1s_gas_cali_data_s *cali);
int lark1s_req_data(uint8_t *buffer);
int lark1s_parse_data(uint8_t *buffer, int length, struct lark1s_data_s *data);
int lark1s_req_gas3_cali_zero_record(uint8_t *buffer, uint16_t type);