📄 smithofpandlg.cpp
字号:
strS1.Format("%.2f",rlxl.r*impedance.Z0);
strX1.Format("%.2f",rlxl.x*impedance.Z0);
strX2.Format("%.2f",rlxl.x*impedance.Z0*(-1));
if(rlxl.x>=0)
str.Format("%s +j %s",strS1,strX1);
else
str.Format("%s -j %s",strS1,strX2);
m_hShow=str;
m_hSwr.Format("%.2f",chart.GetSWR(frfl));//获取驻波比
m_hGuiyiShibu.Format("%.2f",rlxl.r);//归一化阻抗实部
m_hGuiyiXubu.Format("%.2f",rlxl.x);//归一化阻抗虚部
m_hFansheShibu.Format("%.2f",frfl.Fr);//反射系数实部
m_hFansheXubu.Format("%.2f",frfl.Fl);//反射系数虚部
UpdateData(FALSE);
*pResult = 0;
}
void CSmithOfPanDlg::OnPipei()
{
// TODO: Add your control notification handler code here
CDC * pDC = GetDC();
CPen pen(PS_DOT,2,RGB(155,53,12));
CPen redpen(PS_DOT,2,RGB(255,0,0));
CPen * poldPen = pDC->SelectObject(&redpen);
float temp,t;
//获取阻抗
IMPEDANCE impedance;
DAONA daona;
impedance.Rx = m_hDianzu; //实部
impedance.Ry = m_hDiankang; //虚部
impedance.Z0 = m_hTexing; //特性阻抗
//获取归一化阻抗
RLXL rlxl;
rlxl = chart.CacuRLXL(impedance);
//获取导纳
DAONA Y0;
Y0=chart.CacuDAONA(rlxl,impedance.Z0);
//获取反射系数
FRFL frfl;
frfl = chart.CacuFRFL(rlxl);
CIRCLE rCircle = chart.CacuCircleR(rlxl.r);
CIRCLE xCircle = chart.CacuCircleX(rlxl.x);
chart.DrawCircleR(rCircle,pDC);
chart.DrawCircleX(xCircle,pDC);
chart.DrawCircle(frfl,pDC);
chart.ShowImpedance(frfl,rlxl,impedance.Z0,pDC);
t=(Y0.Yb+sqrt(Y0.Yg*((1/impedance.Z0-Y0.Yg)*(1/impedance.Z0-Y0.Yg)+Y0.Yb*Y0.Yb)*impedance.Z0))/(Y0.Yg-1/impedance.Z0);
if(impedance.Ry <0) //计算d长度
{
m_hD=1/(2*3.14)*atan(t);
}
else
m_hD=1/6.28*(3.14+atan(t));
temp=m_hD;
if(m_hD<0)m_hD++;
//获得旋转后新点的反射系数
frfl = chart.Rotate(frfl,temp);
//重新获得归一化阻抗
rlxl = chart.CacuRLXL(frfl);
daona = chart.CacuDAONA(rlxl,impedance.Z0);
rCircle = chart.CacuCircleR(rlxl.r);
pDC->SelectObject(&pen);
chart.DrawCircleR(rCircle,pDC);
rlxl.r=rlxl.r *impedance.Z0;
rlxl.x=rlxl.x *impedance.Z0;
m_hL=-1/6.28*atan(rlxl.x /impedance.Z0);//计算L长度
if(m_hL<0)m_hL++;
///////////////////////显示交点坐标
rlxl = chart.CacuRLXL(frfl);
chart.ShowImpedance(frfl,rlxl,impedance.Z0,pDC);
CString str,strS1,strX1,strX2;
strS1.Format("%.2f",rlxl.r*impedance.Z0);
strX1.Format("%.2f",rlxl.x*impedance.Z0);
strX2.Format("%.2f",rlxl.x*impedance.Z0*(-1));
if(rlxl.x>=0)
str.Format("%s +j %s",strS1,strX1);
else
str.Format("%s -j %s",strS1,strX2);
m_hShow=str;
pDC->SelectObject(poldPen);
ReleaseDC(pDC);
UpdateData(FALSE);
}
void CSmithOfPanDlg::OnBUTTONchuankai()
{
// TODO: Add your control notification handler code here
CDC * pDC = GetDC();
CPen pen(PS_DOT,2,RGB(155,53,12));
CPen redpen(PS_DOT,2,RGB(255,0,0));
CPen * poldPen = pDC->SelectObject(&redpen);
float temp,t;
//获取阻抗
IMPEDANCE impedance;
DAONA daona;
impedance.Rx = m_hDianzu; //实部
impedance.Ry = m_hDiankang; //虚部
impedance.Z0 = m_hTexing; //特性阻抗
//获取归一化阻抗
RLXL rlxl;
rlxl = chart.CacuRLXL(impedance);
//获取导纳
DAONA Y0;
Y0=chart.CacuDAONA(rlxl,impedance.Z0);
//获取反射系数
FRFL frfl;
frfl = chart.CacuFRFL(rlxl);
CIRCLE rCircle = chart.CacuCircleR(rlxl.r);
CIRCLE xCircle = chart.CacuCircleX(rlxl.x);
chart.DrawCircleR(rCircle,pDC);
chart.DrawCircleX(xCircle,pDC);
chart.DrawCircle(frfl,pDC);
chart.ShowImpedance(frfl,rlxl,impedance.Z0,pDC);
t=(Y0.Yb+sqrt(Y0.Yg*((1/impedance.Z0-Y0.Yg)*(1/impedance.Z0-Y0.Yg)+Y0.Yb*Y0.Yb)*impedance.Z0))/(Y0.Yg-1/impedance.Z0);
if(impedance.Ry <0)
{
m_hD=1/(2*3.14)*atan(t);
}
else
m_hD=1/6.28*(3.14+atan(t));
temp=m_hD;
if(m_hD<0)m_hD++;
//获得旋转后新点的反射系数
frfl = chart.Rotate(frfl,temp);
//重新获得归一化阻抗
rlxl = chart.CacuRLXL(frfl);
daona = chart.CacuDAONA(rlxl,impedance.Z0);
rCircle = chart.CacuCircleR(rlxl.r);
pDC->SelectObject(&pen);
chart.DrawCircleR(rCircle,pDC);
rlxl.r=rlxl.r *impedance.Z0;
rlxl.x=rlxl.x *impedance.Z0;
m_hL=1/6.28*atan(impedance.Z0 /rlxl.x);//计算L长度
///////////////////////显示交点坐标
rlxl = chart.CacuRLXL(frfl);
chart.ShowImpedance(frfl,rlxl,impedance.Z0,pDC);
CString str,strS1,strX1,strX2;
strS1.Format("%.2f",rlxl.r*impedance.Z0);
strX1.Format("%.2f",rlxl.x*impedance.Z0);
strX2.Format("%.2f",rlxl.x*impedance.Z0*(-1));
if(rlxl.x>=0)
str.Format("%s +j %s",strS1,strX1);
else
str.Format("%s -j %s",strS1,strX2);
m_hShow=str;
pDC->SelectObject(poldPen);
ReleaseDC(pDC);
UpdateData(FALSE);
}
void CSmithOfPanDlg::OnAbout()
{
// TODO: Add your control notification handler code here
CAboutDlg dlg;
int nResponse = dlg.DoModal();
}
void CSmithOfPanDlg::OnButtonbingduan()
{
// TODO: Add your control notification handler code here
CDC * pDC = GetDC();
CPen pen(PS_DOT,2,RGB(155,53,12));
CPen redpen(PS_DOT,2,RGB(255,0,0));
CPen * poldPen = pDC->SelectObject(&redpen);
float temp,t;
//获取阻抗
IMPEDANCE impedance;
DAONA daona;
impedance.Rx = m_hDianzu; //实部
impedance.Ry = m_hDiankang; //虚部
impedance.Z0 = m_hTexing; //特性阻抗
//获取归一化阻抗
RLXL rlxl;
rlxl = chart.CacuRLXL(impedance);
//获取导纳
DAONA Y0;
Y0=chart.CacuDAONA(rlxl,impedance.Z0);
//获取反射系数
FRFL frfl;
frfl = chart.CacuFRFL(rlxl);
CIRCLE rCircle = chart.CacuCircleR(rlxl.r);
CIRCLE xCircle = chart.CacuCircleX(rlxl.x);
chart.DrawCircleR(rCircle,pDC);
chart.DrawCircleX(xCircle,pDC);
chart.DrawCircle(frfl,pDC);
chart.ShowImpedance(frfl,rlxl,impedance.Z0,pDC);
t=(impedance.Ry+sqrt(impedance.Rx*((impedance.Z0-impedance.Rx)*(impedance.Z0-impedance.Rx)+impedance.Ry*impedance.Ry)/impedance.Z0))/(impedance.Rx-impedance.Z0);
if(impedance.Ry <0)
{
m_hD=1/(2*3.14)*atan(t);
}
else
m_hD=1/6.28*(3.14+atan(t));
temp=m_hD;
if(m_hD<0)m_hD++;
//获得旋转后新点的反射系数
frfl = chart.Rotate(frfl,temp);
//重新获得归一化阻抗
rlxl = chart.CacuRLXL(frfl);
daona = chart.CacuDAONA(rlxl,impedance.Z0);
rlxl.r=rlxl.r *impedance.Z0;
rlxl.x=rlxl.x *impedance.Z0;
m_hL=1/6.28*atan(1/impedance.Z0/daona.Yb);//计算L长度
UpdateData(FALSE);
///////////////////////显示交点坐标
impedance.Rx = m_hDianzu; //实部
impedance.Ry = m_hDiankang; //虚部
impedance.Z0 = m_hTexing; //特性阻抗
//获取归一化阻抗
rlxl = chart.CacuRLXL(impedance);
//获取导纳
Y0=chart.CacuDAONA(rlxl,impedance.Z0);
//获取反射系数
frfl = chart.CacuFRFL(rlxl);
t=(Y0.Yb+sqrt(Y0.Yg*((1/impedance.Z0-Y0.Yg)*(1/impedance.Z0-Y0.Yg)+Y0.Yb*Y0.Yb)*impedance.Z0))/(Y0.Yg-1/impedance.Z0);
if(impedance.Ry <0)
{
temp=1/(2*3.14)*atan(t);
}
else
temp=1/6.28*(3.14+atan(t));
//获得旋转后新点的反射系数
frfl = chart.Rotate(frfl,temp);
//重新获得归一化阻抗
rlxl = chart.CacuRLXL(frfl);
rCircle = chart.CacuCircleR(rlxl.r);
pDC->SelectObject(&pen);
chart.DrawCircleR(rCircle,pDC);
chart.ShowImpedance(frfl,rlxl,impedance.Z0,pDC);
CString str,strS1,strX1,strX2;
strS1.Format("%.2f",rlxl.r*impedance.Z0);
strX1.Format("%.2f",rlxl.x*impedance.Z0);
strX2.Format("%.2f",rlxl.x*impedance.Z0*(-1));
if(rlxl.x>=0)
str.Format("%s +j %s",strS1,strX1);
else
str.Format("%s -j %s",strS1,strX2);
m_hShow=str;
pDC->SelectObject(poldPen);
ReleaseDC(pDC);
UpdateData(FALSE);
}
void CSmithOfPanDlg::OnButtonbingkai()
{
// TODO: Add your control notification handler code here
CDC * pDC = GetDC();
CPen pen(PS_DOT,2,RGB(155,53,12));
CPen redpen(PS_DOT,2,RGB(255,0,0));
CPen * poldPen = pDC->SelectObject(&redpen);
float temp,t;
//获取阻抗
IMPEDANCE impedance;
DAONA daona;
impedance.Rx = m_hDianzu; //实部
impedance.Ry = m_hDiankang; //虚部
impedance.Z0 = m_hTexing; //特性阻抗
//获取归一化阻抗
RLXL rlxl;
rlxl = chart.CacuRLXL(impedance);
//获取导纳
DAONA Y0;
Y0=chart.CacuDAONA(rlxl,impedance.Z0);
//获取反射系数
FRFL frfl;
frfl = chart.CacuFRFL(rlxl);
CIRCLE rCircle = chart.CacuCircleR(rlxl.r);
CIRCLE xCircle = chart.CacuCircleX(rlxl.x);
chart.DrawCircleR(rCircle,pDC);
chart.DrawCircleX(xCircle,pDC);
chart.DrawCircle(frfl,pDC);
chart.ShowImpedance(frfl,rlxl,impedance.Z0,pDC);
t=(impedance.Ry+sqrt(impedance.Rx*((impedance.Z0-impedance.Rx)*(impedance.Z0-impedance.Rx)+impedance.Ry*impedance.Ry)/impedance.Z0))/(impedance.Rx-impedance.Z0);
if(impedance.Ry <0)
{
m_hD=1/(2*3.14)*atan(t);
}
else
m_hD=1/6.28*(3.14+atan(t));
temp=m_hD;
if(m_hD<0)m_hD++;
//获得旋转后新点的反射系数
frfl = chart.Rotate(frfl,temp);
//重新获得归一化阻抗
rlxl = chart.CacuRLXL(frfl);
daona = chart.CacuDAONA(rlxl,impedance.Z0);
rlxl.r=rlxl.r *impedance.Z0;
rlxl.x=rlxl.x *impedance.Z0;
m_hL=-1/6.28*atan(impedance.Z0*daona.Yb);//计算L长度
if(m_hL<0)m_hL++;
UpdateData(FALSE);
///////////////////////显示交点坐标
impedance.Rx = m_hDianzu; //实部
impedance.Ry = m_hDiankang; //虚部
impedance.Z0 = m_hTexing; //特性阻抗
//获取归一化阻抗
rlxl = chart.CacuRLXL(impedance);
//获取导纳
Y0=chart.CacuDAONA(rlxl,impedance.Z0);
//获取反射系数
frfl = chart.CacuFRFL(rlxl);
t=(Y0.Yb+sqrt(Y0.Yg*((1/impedance.Z0-Y0.Yg)*(1/impedance.Z0-Y0.Yg)+Y0.Yb*Y0.Yb)*impedance.Z0))/(Y0.Yg-1/impedance.Z0);
if(impedance.Ry <0)
{
temp=1/(2*3.14)*atan(t);
}
else
temp=1/6.28*(3.14+atan(t));
//获得旋转后新点的反射系数
frfl = chart.Rotate(frfl,temp);
//重新获得归一化阻抗
rlxl = chart.CacuRLXL(frfl);
rCircle = chart.CacuCircleR(rlxl.r);
pDC->SelectObject(&pen);
chart.DrawCircleR(rCircle,pDC);
chart.ShowImpedance(frfl,rlxl,impedance.Z0,pDC);
CString str,strS1,strX1,strX2;
strS1.Format("%.2f",rlxl.r*impedance.Z0);
strX1.Format("%.2f",rlxl.x*impedance.Z0);
strX2.Format("%.2f",rlxl.x*impedance.Z0*(-1));
if(rlxl.x>=0)
str.Format("%s +j %s",strS1,strX1);
else
str.Format("%s -j %s",strS1,strX2);
m_hShow=str;
pDC->SelectObject(poldPen);
ReleaseDC(pDC);
UpdateData(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -