#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;idata[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 %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; // }