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

📄 bdsin.cpp

📁 基于PC104的24位数据采集器的完整源码
💻 CPP
字号:
//
// 正玄波形组
//
//
//
////////////////////////////////////////////////////////////////////////

#include "BDSin.h"
#include "hello.h"
#include <dos.h>

int* CBDSin::SINBUFF = 0;
CBDSin g_nBDSin;
void CBDSin::LoadConfig(ifstream& in)
{
	in >> m_nFrqNum;
	if(m_nFrqNum == 0)
	{
		m_nIsClockStart = FALSE;
		return;
	}
	m_nIsClockStart = TRUE;
	in >> m_nStartSecond >> m_nClockSecond;
	for(int i = 0;i<m_nFrqNum;i++)
		in >> m_pFrqArray[i].m_nPeriod
			>> m_pFrqArray[i].m_nFrq
			>> m_pFrqArray[i].m_nDamp;
}

void CBDSin::SaveConfig(ofstream& out)
{
	if(m_nIsClockStart)
		out << m_nFrqNum << endl;
	else
	{
		out << 0 << endl;
		return;
	}

	out << m_nStartSecond << endl
		<< m_nClockSecond << endl;
	for(int i = 0;i<m_nFrqNum;i++)
		out << m_pFrqArray[i].m_nPeriod << ' '
			<< m_pFrqArray[i].m_nFrq << ' '
			<< m_pFrqArray[i].m_nDamp << endl;
}

void CBDSin::Doing()
{
	if(!m_nIsBiaoDining)
		return;

	outport(BIAODINPORT,SINBUFF[m_nCountPos]/m_pFrqArray[m_nFrqPos].m_nDamp);

	if(m_nCountPos == 0 && m_nCurPeriod == 0)
	{
		//设置步长
		int nFrq = m_pFrqArray[m_nFrqPos].m_nFrq;
		if(nFrq > 0)
			m_nStep = 10*nFrq;
		else
			m_nStep = 10/(-nFrq);
	}

	// 设置下一点位置
	m_nCountPos += m_nStep;
	if(m_nCountPos >= SINBUFFLENGTH)
	{
		m_nCountPos = 0;
		m_nCurPeriod ++;
		if(m_nCurPeriod >= m_pFrqArray[m_nFrqPos].m_nPeriod)
		{
			m_nCurPeriod = 0;
			m_nFrqPos ++;
			if(m_nFrqPos >= m_nFrqNum)
			{
				m_nFrqPos = 0;
				End();
			}
		}
	}
}

void CBDSin::Start()
{
	if(m_nFrqNum == 0)
		return;
	m_nFrqPos = 0;
	m_nCurPeriod = 0;
	m_nCountPos = 0;
	m_nStep = 1;
	m_nIsBiaoDining = TRUE;
	DAStart();
	g_nStatus.m_nBitStatus.BiaoDinWave = 1;
}

void CBDSin::End()
{
	if(m_nFrqNum == 0)
		return;
	m_nIsBiaoDining = FALSE;
	DAEnd();
	g_nStatus.m_nBitStatus.BiaoDinWave = 1;
}

void CBDSin::ReadFromBuff(char* pBuff)
{
	for(int i = 0;i<m_nFrqNum;i++)
	{
		int& nPeriod = (int&)pBuff[i*6];
		int& nFrq = (int&)pBuff[i*6+2];
		int& nDamp = (int&)pBuff[i*6+4];
		m_pFrqArray[i].m_nPeriod = nPeriod;
		m_pFrqArray[i].m_nFrq = nFrq;
		m_pFrqArray[i].m_nDamp = nDamp;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -