📄 bdsin.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 + -