不含stm32 底层的代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MyStm32Code/device/Src/ramses_utils.c

279 lines
11 KiB

#include "ramses.h"
#include "elog.h"
/* 进一步对RAMSES 信息进行处理 */
// /**
// * @brief 获取转换后的光谱数据
// *
// * @param trios_ramses 设备描述符
// * @param data 数据缓冲区
// * @param num 缓冲区长度
// * @return uint32_t 成功:数据长度 失败:0xffffffff
// */
// uint32_t trios_ramses_get_data(struct trios_ramses *trios_ramses,int16_t *data,uint32_t num)
// {
// int i;
// int j;
// uint8_t endian_mask;
// endian_mask=endian_get_local_endian_mask(ENDIAN_MASK_LITTLE_ENDIAN);
// if(num<(TRIOS_RAMSES_DATA_SIZE-8)*TRIOS_RAMSES_DATA_NUM/2)
// {
// return 0;
// }
// if((trios_ramses->flag&TRIOS_RAMSES_FLAG_MASK_RECVED_DATA)==0){
// return 0;
// }
// for(i=0,j=0;i<TRIOS_RAMSES_DATA_NUM;i++){
// if(endian_write(endian_mask,ENDIAN_WIDTH_MASK_2BYTE,&((uint8_t*)data)[j],trios_ramses->data[i].data,trios_ramses->data[i].data_size)!=0){
// trios_ramses_clean_data_recved_flag(trios_ramses);
// return 0xffffffff;
// }
// j+=trios_ramses->data[i].data_size;
// }
// return j/2;
// }
// /**
// * @brief 获取X轴倾斜角度
// *
// * @param trios_ramses 设备描述符
// * @param incl_xgain 标定数据
// * @param incl_xoffset 标定数据
// * @return double 成功:X轴倾角 失败:NAN
// */
// double trios_ramses_get_x_inclination_angle(struct trios_ramses *trios_ramses,double incl_xgain,double incl_xoffset)
// {
// if((trios_ramses->flag&TRIOS_RAMSES_FLAG_MASK_RECVED_IP)==0){
// return NAN;
// }
// return (trios_ramses->ip.data[4]-incl_xoffset)*incl_xgain;
// }
// /**
// * @brief 获取Y轴倾斜角度
// *
// * @param trios_ramses 设备描述符
// * @param incl_ygain 标定数据
// * @param incl_yoffset 标定数据
// * @return double 成功:Y轴倾角 失败:NAN
// */
// double trios_ramses_get_y_inclination_angle(struct trios_ramses *trios_ramses,double incl_ygain,double incl_yoffset)
// {
// if((trios_ramses->flag&TRIOS_RAMSES_FLAG_MASK_RECVED_IP)==0){
// return NAN;
// }
// return (trios_ramses->ip.data[5]-incl_yoffset)*incl_ygain;
// }
// /**
// * @brief 获取设备倾角
// *
// * @param x_inclination_angle X轴倾角
// * @param y_inclination_angle Y轴倾角
// * @return double 成功:设备倾角 失败:NAN
// */
// double trios_ramses_get_inclination_angle(double x_inclination_angle,double y_inclination_angle)
// {
// if(x_inclination_angle==NAN || y_inclination_angle==NAN){
// return NAN;
// }
// return atan(sqrt(pow(tan(x_inclination_angle*M_PI/180),2)+pow(tan(y_inclination_angle*M_PI/180),2)));
// }
// /**
// * @brief 获取压力
// *
// * @param trios_ramses 设备描述符
// * @param incl_kref 标定数据
// * @param incl_kbg 标定数据
// * @param press_gain 标定数据
// * @param press_surface_bar 标定数据
// * @param press_sens_mv_bar_1ma 标定数据
// * @param press_sens_mv_bar_4ma 标定数据
// * @return double 压力
// */
// double trios_ramses_get_pressure(struct trios_ramses *trios_ramses,double incl_kref,double incl_kbg,double press_gain,double press_surface_bar,double press_sens_mv_bar_1ma,double press_sens_mv_bar_4ma)
// {
// uint16_t npress;
// uint16_t nbg;
// uint16_t nrefh;
// uint16_t nrefl;
// double noffset;
// double press_sens;
// double vpress_v;
// double p_bar;
// if((trios_ramses->flag&TRIOS_RAMSES_FLAG_MASK_RECVED_IP)==0){
// return NAN;
// }
// npress=((uint16_t)trios_ramses->ip.data[7]<<8)+trios_ramses->ip.data[6];
// nbg=((uint16_t)trios_ramses->ip.data[11]<<8)+trios_ramses->ip.data[10];
// nrefh=((uint16_t)trios_ramses->ip.data[13]<<8)+trios_ramses->ip.data[12];
// nrefl=((uint16_t)trios_ramses->ip.data[15]<<8)+trios_ramses->ip.data[14];
// noffset=nrefl-(incl_kref*(nrefh-nrefl));
// vpress_v=incl_kbg*(npress-noffset)/(nbg-noffset);
// press_sens=(press_sens_mv_bar_4ma<=0?press_sens_mv_bar_1ma:press_sens_mv_bar_4ma);
// p_bar=1000.0*vpress_v/(press_sens*press_gain);
// return p_bar-1.021;
// }
// /**
// * @brief 获取深度(米)
// *
// * @param pressure 压力
// * @return double 成功:深度 失败:NAN
// */
// double trios_ramses_get_depth_m(double pressure)
// {
// if(pressure==NAN){
// return NAN;
// }
// return pressure*10;
// }
// /**
// * @brief 获取设备序列号
// *
// * @param trios_ramses 设备描述符
// * @return uint16_t 成功:设备序列号 失败:0xffff
// */
// uint16_t trios_ramses_get_serial_number(struct trios_ramses *trios_ramses)
// {
// if((trios_ramses->flag&TRIOS_RAMSES_FLAG_MASK_RECVED_INFO)==0){
// return 0xffff;
// }
// return trios_ramses->infomation.serial_number;
// }
// extern int Ramses_Deal_Data_Frame(Ramses_TypeDef *pRamses, uint8_t *buf, uint16_t size);
// int Ramses_Deal_Data_Frame(Ramses_TypeDef *pRamses, uint8_t *buf, uint16_t size)
// {
// int i;
// int j = 0;
// for(i=0;i<size;i++){
// log_i("recv_buf i %d %02X, recv_buf_p %d",i, buf[i], ramses.recv_buf_p);
// if ( ramses.recv_buf_p==0 && buf[i]!=0x23 ){ // 下标为0,找0x23 可以过滤0x13 0x11
// log_i("recv_buf i 0x23" );
// continue;
// }
// if(ramses.recv_flag_40==1){
// if(buf[i]==0x64){
// ramses.recv_buf[ramses.recv_buf_p++]=0x40;
// }
// else if(buf[i]==0x65){
// ramses.recv_buf[ramses.recv_buf_p++]=0x23;
// }
// else if(buf[i]==0x66){
// ramses.recv_buf[ramses.recv_buf_p++]=0x11;
// }
// else if(buf[i]==0x67){
// ramses.recv_buf[ramses.recv_buf_p++]=0x13;
// }
// else{
// ramses.data_index=0;
// ramses.recv_flag_40=0;
// ramses.recv_buf_p=0;
// continue;
// }
// ramses.recv_flag_40=0;
// }
// else if(buf[i]==0x40){
// ramses.recv_flag_40=1;
// }
// else{ // 每帧 recv_buf中的 数组下标
// // log_i("buf[i] -> %d %02X" ,i, buf[i]);
// ramses.recv_buf[ramses.recv_buf_p++]=buf[i];
// j++ ;
// }
// // 每帧数据数量 大于7 判断类型,且长度校验通过
// if(ramses.recv_buf_p>7 && ramses.recv_buf_p==8+(2<<(ramses.recv_buf[1]>>5))){
// // j++ ;
// if(ramses.recv_buf[4]==0xff){ // 0xff 表征 SN信息帧
// log_i(" info frame .... ") ;
// if(ramses.recv_buf_p!=Ramses_INFO_SIZE){
// ramses.recv_flag_40=0;
// ramses.recv_buf_p=0;
// continue;
// }
// ramses.information.dev_id=((uint16_t)ramses.recv_buf[1]<<8)+ramses.recv_buf[2];
// ramses.information.module_id=ramses.recv_buf[3];
// ramses.information.serial_number=((uint16_t)ramses.recv_buf[8]<<8)+ramses.recv_buf[7];
// ramses.information.firmware_number[0]=ramses.recv_buf[10];
// ramses.information.firmware_number[1]=ramses.recv_buf[9];
// memcpy(ramses.information.individual_information,&ramses.recv_buf[7],Ramses_INFO_SIZE-12);
// ramses.recv_buf_p=0;
// ramses.flag|=Ramses_FLAG_MASK_RECVED_INFO;
// ramses.flag&=~Ramses_FLAG_MASK_BUSY;
// }
// else if(ramses.recv_buf[4]==0xfe){ // 0xfe错误
// ramses.data_index=0;
// ramses.recv_flag_40=0;
// ramses.recv_buf_p=0;
// continue;
// }
// else{
// if(ramses.recv_buf[3]==0x80 || ramses.recv_buf[3]==0x30 || ramses.recv_buf[3]==0x00){
// // log_i(".... 0x80 0x 30 0x00");
// if((ramses.flag&Ramses_FLAG_MASK_RECVED_DATA)!=0){ // 判断为数据帧
// ramses.data_index=0;
// ramses.recv_flag_40=0;
// ramses.recv_buf_p=0;
// continue;
// }
// if(ramses.recv_buf_p!=Ramses_DATA_SIZE){
// ramses.recv_flag_40=0;
// ramses.recv_buf_p=0;
// continue;
// }
// if(ramses.recv_buf[4]!=Ramses_DATA_NUM-1-ramses.data_index){
// ramses.data_index=0;
// ramses.recv_flag_40=0;
// ramses.recv_buf_p=0;
// continue;
// }
// memcpy(ramses.data[ramses.data_index].raw,ramses.recv_buf,Ramses_DATA_SIZE);
// ramses.data[ramses.data_index].dev_id=((uint16_t)ramses.recv_buf[1]<<8)+ramses.recv_buf[2];
// ramses.data[ramses.data_index].module_id=ramses.recv_buf[3];
// ramses.data[ramses.data_index].framebyte=ramses.recv_buf[4];
// ramses.data[ramses.data_index].data=&ramses.data[ramses.data_index].raw[7];
// ramses.data[ramses.data_index].data_size=Ramses_DATA_SIZE-8;
// ramses.data_index++;
// ramses.recv_buf_p=0;
// if(ramses.data_index==Ramses_DATA_NUM){
// ramses.data_index=0;
// ramses.flag|=Ramses_FLAG_MASK_RECVED_DATA;
// ramses.flag&=~Ramses_FLAG_MASK_BUSY;
// }
// }
// else if(ramses.recv_buf[3]==0x20){
// if((ramses.flag&Ramses_FLAG_MASK_RECVED_IP)!=0){ // 判断为IP帧
// ramses.data_index=0;
// ramses.recv_flag_40=0;
// ramses.recv_buf_p=0;
// continue;
// }
// if(ramses.recv_buf_p!=Ramses_IP_SIZE){
// ramses.recv_flag_40=0;
// ramses.recv_buf_p=0;
// continue;
// }
// memcpy(ramses.ip.raw,ramses.recv_buf,Ramses_IP_SIZE);
// ramses.ip.dev_id=((uint16_t)ramses.recv_buf[1]<<8)+ramses.recv_buf[2];
// ramses.ip.module_id=ramses.recv_buf[3];
// ramses.ip.framebyte=ramses.recv_buf[4];
// ramses.ip.data=&ramses.ip.raw[7];
// ramses.ip.data_size=Ramses_IP_SIZE-8;
// ramses.recv_buf_p=0;
// ramses.flag|=Ramses_FLAG_MASK_RECVED_IP;
// }
// else{
// ramses.data_index=0;
// ramses.recv_flag_40=0;
// ramses.recv_buf_p=0;
// continue;
// }
// }
// }
// }
// log_i("cb i %d j %d",i,j);
// return 0;
// }