📄 detmodul.c
字号:
#include "fDETDeclare.H"
#include "DETConst.H"
#include "RS485BUF_EX.H"
const unsigned char code ModuleVer[2]= {1,0};
void fModuleVersionCheck(void)
{
unsigned char i;
RS485Buffer[5]=10;
RS485Buffer[6]=ModuleVer[0];
RS485Buffer[7]=ModuleVer[1];
for(i=0;i<8;i++){
RS485Buffer[8+i]=0;
}
TransmitAck();
}
void fSetDetCalBase(void)
{
unsigned int T1549Val;
if((RS485Buffer[2]&0x08)!=0){
T1549Val =UT1549Val; //选通上行模块
}
else{
//选通下行模块
T1549Val =DT1549Val;
}
if(RS485Buffer[6]==1){ //校准直线的第一点
fEepromWrite(&RS485Buffer[7],0x0020,1);//存校准直线第一点功率值(dB)
power1=RS485Buffer[7];
fEepromWriteW(T1549Val,0x0021);
powervolt1=T1549Val;
}
else{
fEepromWrite(&RS485Buffer[7],0x0030,1);//存校准直线第一点功率值(dB
power2=RS485Buffer[7];
fEepromWriteW(T1549Val,0x0031);
powervolt2=T1549Val;
}
TransmitAck();
}
void fReadDetCalBase(void)
{
unsigned int iDetpower;
unsigned char i;
fEepromRead(&RS485Buffer[6],0x0020,1);//读第一点功率值
fEepromReadW(&iDetpower,0x0021); //读 第一点功率值所对应的A/D采集值
DetPower.powervolt=(float)iDetpower*5/1024; //转换成电压值
for(i=0;i<4;i++){
RS485Buffer[7+i]=DetPower.powerarray[3-i]; //存校准直线第一点
}
//写第二点
fEepromRead(&RS485Buffer[11],0x0030,1);
fEepromReadW(&iDetpower,0x0031);
DetPower.powervolt=(float)iDetpower*5/1024;
for(i=0;i<4;i++){
RS485Buffer[12+i]=DetPower.powerarray[3-i];
}
RS485Buffer[4]=0x00;
RS485Buffer[5]=10;
TransmitAck();
}
//实时返回采集到的功率值
void fDETStateCheck(void)
{
if((RS485Buffer[2]&0x08)==0x08){//需送的是上行链路的数据
RS485Buffer[7] =UDETPOWERVAL;
}
else{
RS485Buffer[7] =LDETPOWERVAL;
}
//else if((RS485Buffer[2]&0x0f)==0x09){
// RS485Buffer[7] =LDETPOWERVAL;//对光纤远端上行
//}
// else{//对光纤远端下行
// RS485Buffer[7] =UDETPOWERVAL;
// }
RS485Buffer[4]=0x00;
RS485Buffer[5]=0x02;
RS485Buffer[6]=DETMODULSTATE;
TransmitAck();
}
char fPowerCheck(void)
{
char i;
float PowerSlope,samplepower;//功率曲线斜
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -