📄 infoteam.cpp
字号:
#include "infoteam.h"
#include "hello.h"
#include "BDSin.h"
#include "BDPluse.h"
#include <stdio.h>
#include <fstream.h>
CInfoTeam g_nInfoTeam;
const char CONFIGFILENAME[] = "C:\\CONFIG.INI";
const uint INFOCMD = 0x2062;
const uint INFOFL = 46;
CInfoTeam::CInfoTeam()
{
m_nSITE_ID = 0x24;
m_nLongitude[0] = '\0';
m_nLatitude[0] = '\0';
m_nSatelite[0] = '\0';
m_nSeaHeight[0] = '\0';
m_nSateliteCode[0] = '\0';
m_nCountSeconds=0;
m_nTotalCorrectPeriod = 6000;
m_nSample = SAMPLE100;
m_nHalfSampleTime = 500/m_nSample/2;
m_nBits = BIT24;
m_nSerialSpeed = 9600;
m_nIsFilt = TRUE;
m_nIsCorrectZero = TRUE;
m_nTimeLength = 3600;
m_nSendBuff = NULL;
m_nSendBuff = new char[100];
for(int i = 0;i<4;i++)
m_nSendBuff[i] = Team_HEAD[i];
int& nCommand = (int&)m_nSendBuff[6];
nCommand = INFOCMD;
int& nFL = (int&)m_nSendBuff[8];
nFL = INFOFL;
m_nIsNeedUpdate = FALSE;
}
CInfoTeam::~CInfoTeam()
{
if(m_nSendBuff)
delete[] m_nSendBuff;
}
void CInfoTeam::SaveConfig()
{
ofstream nstream(CONFIGFILENAME,ios::out);
if(nstream)
{
nstream << m_nSITE_ID << endl
<< m_nTotalCorrectPeriod << endl
<< int(m_nSample) << endl
<< int(m_nBits) << endl
<< m_nSerialSpeed << endl
<< int(m_nIsFilt) << endl
<< int(m_nIsCorrectZero) << endl;
g_nBDSin.SaveConfig(nstream);
g_nBDPluse.SaveConfig(nstream);
nstream << m_nTimeLength;
nstream.close();
}
}
void CInfoTeam::LoadConfig()
{
ifstream nstream(CONFIGFILENAME,ios::in);
if(nstream)
{
int nSample,nBits,nIsFilt,nIsCorrect;
nstream >> m_nSITE_ID
>> m_nTotalCorrectPeriod
>> nSample
>> nBits
>> m_nSerialSpeed
>> nIsFilt
>> nIsCorrect;
m_nSample = nSample;
m_nBits = nBits;
m_nIsFilt = nIsFilt;
m_nIsCorrectZero = nIsCorrect;
g_nBDSin.LoadConfig(nstream);
g_nBDPluse.LoadConfig(nstream);
nstream >> m_nTimeLength;
nstream.close();
}
}
void CInfoTeam::SetSiteID(int nSiteID)
{
m_nSITE_ID = nSiteID;
g_nStatus.m_nBitStatus.SiteID = 1;
SaveConfig();
}
void CInfoTeam::SetTotalCorrectPeriod(uint nTotal)
{
m_nTotalCorrectPeriod = nTotal;
SaveConfig();
}
void CInfoTeam::SetSample(SAMPLERATE nSample)
{
if(GetSample() == nSample || nSample > 400 || nSample < 1)
return;
m_nSample = nSample;
if(m_nSample == SAMPLE200)
m_nHalfSampleTime = 500/GetSample();
else
m_nHalfSampleTime = 500/GetSample()/2;
OnSampleChange();
g_nStatus.m_nBitStatus.SampleRate = 1;
SaveConfig();
}
uint CInfoTeam::GetFrqWidth()
{
if(m_nSample == SAMPLE50)
return 20;
if(m_nSample == SAMPLE100)
return 40;
if(m_nSample == SAMPLE200)
return 80;
return 0;
}
void CInfoTeam::SetBits(BITS nBits)
{
m_nBits = nBits;
SaveConfig();
}
void CInfoTeam::SetSerialSpeed(uint nSerialSpeed)
{
if(g_nInfoTeam.m_nSerialSpeed == nSerialSpeed)
return;
g_nInfoTeam.m_nSerialSpeed = nSerialSpeed;
OnSerialSpeedChange();
g_nStatus.m_nBitStatus.SerialSpeed = 1;
SaveConfig();
}
void CInfoTeam::SetIsFilt(BOOL nIsFilt)
{
m_nIsFilt = nIsFilt;
g_nStatus.m_nBitStatus.Filt = 1;
SaveConfig();
}
void CInfoTeam::SetIsCorrectZero(BOOL nIsCorrect)
{
m_nIsCorrectZero = nIsCorrect;
g_nStatus.m_nBitStatus.Correct = 1;
SaveConfig();
}
void CInfoTeam::Refresh()
{
if(!m_nIsNeedUpdate)
return;
int& nSiteID = (int&)m_nSendBuff[4];
nSiteID = m_nSITE_ID;
int i;
for(i=0;i<9;i++)
m_nSendBuff[i+10] = m_nLatitude[i];
for(i=0;i<10;i++)
m_nSendBuff[i+19] = m_nLongitude[i];
for(i=0;i<7;i++)
m_nSendBuff[i+29] = m_nSeaHeight[i];
int& nVol = (int&)m_nSendBuff[36];
nVol = m_nVol;
int& nTempe = (int&)m_nSendBuff[38];
nTempe = m_nTemperature;
for(i=0;i<2;i++)
m_nSendBuff[i+40] = m_nSatelite[i];
for(i=0;i<4;i++)
m_nSendBuff[i+42] = m_nSateliteCode[i];
long& nSecond = (long&)m_nSendBuff[46];
nSecond = g_nAbsoluteSecond;
long& nCountSecond = (long&)m_nSendBuff[50];
nCountSecond = m_nCountSeconds;
int& nCheckSum = (int&)m_nSendBuff[54];
nCheckSum = 0;
for(i = 4;i<INFOFL+8;i+=2)
{
int& nValue = (int&)m_nSendBuff[i];
nCheckSum-=nValue;
}
m_nIsNeedUpdate = FALSE;
}
char CInfoTeam::GetNext(unsigned int& nTeamIndex)
{
nTeamIndex ++;
/*if(nTeamIndex == 0x2d)
nTeamIndex --;
char nChar = m_nSendBuff[nTeamIndex-1];
if(nTeamIndex == INFOFL+10)
nTeamIndex = 0;*/
/* char nChar;
if(nTeamIndex < 0x2e)
nChar = m_nSendBuff[nTeamIndex-1];
else
nChar = m_nSendBuff[nTeamIndex-2];
if(nTeamIndex == INFOFL+11)
nTeamIndex = 0;*/
char nChar = m_nSendBuff[nTeamIndex-1];
if(nTeamIndex == INFOFL+10)
nTeamIndex = 0;
return nChar;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -