⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 infoteam.cpp

📁 基于PC104的24位数据采集器的完整源码
💻 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 + -