📄 chxadjdlg.cpp
字号:
// chxAdjDlg.cpp : implementation file
//
#include "stdafx.h"
#include "DSOTEST.h"
#include "chxAdjDlg.h"
//#include "usb100.h"
//#include "usbdi.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CchxAdjDlg dialog
#define COMM_NUMBER 8
BYTE txbuffer[COMM_NUMBER];
CchxAdjDlg::CchxAdjDlg(CWnd* pParent /*=NULL*/)
: CDialog(CchxAdjDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CchxAdjDlg)
m_ch_jk1 = FALSE;
m_ch_jk2 = FALSE;
m_ch_jk3 = FALSE;
m_ch_c8 = FALSE;
m_ch_c9 = FALSE;
m_ch_att_10db = FALSE;
m_amp_ref = _T("");
m_dbctrl_ref = _T("");
m_dbctrl_vlot = _T("");
m_txd_str = _T("");
m_rxd_str = _T("");
m_pwm1 = _T("50");
m_pwm2 = _T("50");
m_selcha_chb = FALSE;
m_sel_dmm_ext_trg = FALSE;
m_chb_ctl = FALSE;
m_ad9513_s0 = FALSE;
//}}AFX_DATA_INIT
db_ref_vlot=0.35;
db_ctrl_vlot=0;
}
void CchxAdjDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CchxAdjDlg)
DDX_Control(pDX, IDC_CH3_SLIDER, m_ch3_slider);
DDX_Control(pDX, IDC_EDIT_COST, m_cost_edit);
DDX_Control(pDX, IDC_SPIN_EXT_TRG_PWM, m_ext_trg_pwm);
DDX_Control(pDX, IDC_PWM_CLT2, m_pwm_ctl2);
DDX_Control(pDX, IDC_PWM_CTL1, m_pwm_ctl1);
DDX_Control(pDX, IDC_AMP_REF, m_amp_ref_ctrl);
DDX_Control(pDX, IDC_DB_VLOT, m_db_vlot_ctrl);
DDX_Control(pDX, IDC_DBCTRL_REF, m_dbCtrl_ref_ctrl);
DDX_Check(pDX, IDC_CH_JK1, m_ch_jk1);
DDX_Check(pDX, IDC_CH_JK2, m_ch_jk2);
DDX_Check(pDX, IDC_CH_JK3, m_ch_jk3);
DDX_Check(pDX, IDC_CH_C8, m_ch_c8);
DDX_Check(pDX, IDC_CH_C9, m_ch_c9);
DDX_Check(pDX, IDC_CH_ATT_10DB, m_ch_att_10db);
DDX_Text(pDX, IDC_EDIT_AMP_REF, m_amp_ref);
DDX_Text(pDX, IDC_EDIT_DBCTRL_REF, m_dbctrl_ref);
DDX_Text(pDX, IDC_EDIT_DBCTRL_VLOT, m_dbctrl_vlot);
DDX_Control(pDX, IDC_MSCOMM, m_ComPort);
DDX_Text(pDX, IDC_EDIT_TXD, m_txd_str);
DDX_Text(pDX, IDC_EDIT_RXD, m_rxd_str);
DDX_Text(pDX, IDC_PWM1, m_pwm1);
DDX_Text(pDX, IDC_PWM2, m_pwm2);
DDX_Check(pDX, IDC_SEL_CHA_CHB, m_selcha_chb);
DDX_Check(pDX, IDC_SEL_DMM_EXTTRG, m_sel_dmm_ext_trg);
DDX_Check(pDX, IDC_CHB_CTL, m_chb_ctl);
DDX_Check(pDX, IDC_AD9513_S0, m_ad9513_s0);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CchxAdjDlg, CDialog)
//{{AFX_MSG_MAP(CchxAdjDlg)
ON_BN_CLICKED(IDC_CH_JK1, OnChJk1)
ON_BN_CLICKED(IDC_CH_JK2, OnChJk2)
ON_BN_CLICKED(IDC_CH_JK3, OnChJk3)
ON_BN_CLICKED(IDC_CH_ATT_10DB, OnChAtt10db)
ON_BN_CLICKED(IDC_CH_C8, OnChC8)
ON_BN_CLICKED(IDC_CH_C9, OnChC9)
ON_WM_CLOSE()
ON_WM_DESTROY()
ON_WM_HSCROLL()
ON_BN_CLICKED(IDC_WRITE, OnWrite)
ON_BN_CLICKED(IDC_WRITE2, OnWrite2)
ON_BN_CLICKED(IDC_READ_EEPROM, OnReadEeprom)
ON_BN_CLICKED(IDC_WRITE3, OnWrite3)
ON_BN_CLICKED(IDC_SEL_CHA_CHB, OnSelChaChb)
ON_BN_CLICKED(IDC_SEL_DMM_EXTTRG, OnSelDmmExttrg)
ON_WM_VSCROLL()
ON_BN_CLICKED(IDC_CHB_CTL, OnChbCtl)
ON_BN_CLICKED(IDC_AD9513_S0, OnAd9513S0)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CchxAdjDlg message handlers
BOOL CchxAdjDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_dbCtrl_ref_ctrl.SetRange(1,1024,1);
m_db_vlot_ctrl.SetRange(0,1024,1);
m_amp_ref_ctrl.SetRange(0,1024,1);
m_ch3_slider.SetRange(0,1024,1);
m_pwm_ctl1.SetRange(0,255,1);
m_pwm_ctl1.SetPos(211);
m_pwm_ctl2.SetRange(0,255,1);
m_pwm_ctl2.SetPos(211);
m_ext_trg_pwm.SetBuddy(&m_cost_edit);
m_ext_trg_pwm.SetRange(1,65);
m_ext_trg_pwm.SetPos(50);
/*
m_ComPort.SetCommPort(1); //选择串行端口
m_ComPort.SetPortOpen(TRUE);
m_ComPort.SetSettings("115200,n,8,1");
m_ComPort.SetInputMode(1);
m_ComPort.SetRThreshold(COMM_NUMBER);//12
m_ComPort.SetInputLen(0);
m_ComPort.GetInput();*/
for(int i=0;i<COMM_NUMBER;i++)
txbuffer[i]=0;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CchxAdjDlg::OnChJk1()
{
UpdateData(1);
if(m_ch_jk1)
txbuffer[1]=0x11;
else
txbuffer[1]=0x10;
SendCommandToUSB(VR_USRCMD);
}
void CchxAdjDlg::OnChJk2()
{
UpdateData(1);
if(m_ch_jk2)
txbuffer[2]=0x11;
else
txbuffer[2]=0x10;
SendCommandToUSB(VR_USRCMD);
}
void CchxAdjDlg::OnChJk3()
{
UpdateData(1);
if(m_ch_jk3)
txbuffer[3]=0x11;
else
txbuffer[3]=0x10;
SendCommandToUSB(VR_USRCMD);
}
void CchxAdjDlg::OnChAtt10db()
{
UpdateData(1);
if(m_ch_att_10db)
txbuffer[6]=0x03;
else
txbuffer[6]=0x02;
SendCommandToUSB(VR_USRCMD);
}
void CchxAdjDlg::OnChC8()
{
UpdateData(1);
if(m_ch_c8)
txbuffer[6]=0x0c;
else
txbuffer[6]=0x08;
SendCommandToUSB(VR_USRCMD);
}
void CchxAdjDlg::OnChC9()
{
UpdateData(1);
if(m_ch_c9)
txbuffer[6]=0x30;
else
txbuffer[6]=0x20;
SendCommandToUSB(VR_USRCMD);
}
void CchxAdjDlg::SendMessageToCom(unsigned char *data, int n)
{
//#ifdef COMM
int i;
// COleVariant varOutput;
unsigned char Sum=0;
CByteArray array;
array.RemoveAll();
array.SetSize(n);
for(i=0;i<n;i++)
array.SetAt(i,data[i]);
if(!m_ComPort.GetPortOpen())
m_ComPort.SetPortOpen(1);
m_ComPort.SetOutput(COleVariant(array));
}
void CchxAdjDlg::SendCommandToJK(unsigned char d)
{
unsigned char ord[5];
ord[0]='L';
ord[1]='K';
ord[2]=d;
ord[3]=d;
ord[4]='X';
SendMessageToCom(ord,5);
}
void CchxAdjDlg::OnClose()
{
CDialog::OnClose();
}
void CchxAdjDlg::OnDestroy()
{
CDialog::OnDestroy();
// if(m_ComPort.GetPortOpen())
// m_ComPort.SetPortOpen(false);
// TODO: Add your message handler code here
}
/* AD5314 控制命令描述 10Bits SPI D/A Vout=Vref X D /1024
* BIT15 BIT0
* A1 A0 PD LDAC D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 X X
* MSB |<--------DATA BITS-------------------->| LSB
* A1 A0 DAC Address
* 0 0 DAC A Trig level
* 0 1 DAC B CHA REF
* 1 0 DAC C CHB REF
* 1 1 DAC D AD8001 IN+ vlot level offset
* PD =0 :所有DAC 低功耗模式 DAC output a high impedance 1: 正常操作
* LDAC =0 :所有DAC寄存器同时更新 1 : 仅被选中的DAC被更新
* SPI Frist LSB
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15
A1 A0 PD LDAC D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 X X
0 0 1 1 0 0 0 0
*/
#define PD 0x2000
#define LDAC 0x1000
#define CMD_PWM 0x55
void CchxAdjDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
WORD i,t;
CSliderCtrl *pSlider = (CSliderCtrl *)pScrollBar;
txbuffer[0]='A';
if(pSlider == &m_dbCtrl_ref_ctrl)
{
i = pSlider->GetPos ();
db_ref_vlot=3.25*(float)i/1024.0;
m_dbctrl_ref.Format ("%0.3fV",db_ref_vlot);
t=i;
t<<=2;
t|=PD|0x4000; //通道1
txbuffer[2]=(BYTE) t&0x00ff;
t>>=8;
txbuffer[1]=(BYTE) t&0x00ff;
m_dbctrl_vlot.Format ("%0.3fV,dbH=0x%02x,dbL=0x%02x ",db_ref_vlot,txbuffer[1],txbuffer[2]);
SendCommandToUSB(VR_USRCMD);
}else
if(pSlider == &m_db_vlot_ctrl)
{
i = pSlider->GetPos ();
db_ctrl_vlot=3.25*(float)i/1024.0;
t=i;
t<<=2;
t|=PD; //通道0
txbuffer[2]=(BYTE) t&0x00ff;
t>>=8;
txbuffer[1]=(BYTE) t&0x00ff;
m_dbctrl_vlot.Format ("%0.3fV,dbH=0x%02x,dbL=0x%02x ",db_ctrl_vlot,txbuffer[1],txbuffer[2]);
SendCommandToUSB(VR_USRCMD);
}else
if(pSlider == &m_amp_ref_ctrl)
{
i = pSlider->GetPos ();
ch2_vlot=3.25*(float)i/1024.0;
m_amp_ref.Format ("%0.3fV",ch2_vlot);
t=i;
t<<=2;
t|=PD|0x8000; //通道2
txbuffer[2]=(BYTE) t&0x00ff;
t>>=8;
txbuffer[1]=(BYTE) t&0x00ff;
m_dbctrl_vlot.Format ("%0.3fV,dbH=0x%02x,dbL=0x%02x ",ch2_vlot,txbuffer[1],txbuffer[2]);
}
else
if(pSlider == &m_ch3_slider)
{
i = pSlider->GetPos ();
ch3_vlot=3.25*(float)i/1024.0;
// m_amp_ref.Format ("%0.3fV",ch2_vlot);
t=i;
t<<=2;
t|=PD|0xc000; //通道3
txbuffer[2]=(BYTE) t&0x00ff;
t>>=8;
txbuffer[1]=(BYTE) t&0x00ff;
m_dbctrl_vlot.Format ("%0.3fV,dbH=0x%02x,dbL=0x%02x ",ch3_vlot,txbuffer[1],txbuffer[2]);
}else
if(pSlider == &m_pwm_ctl1)
{ i = pSlider->GetPos ();
m_pwm1.Format("%d",i);
txbuffer[0]=CMD_PWM;
txbuffer[1]=i;
txbuffer[2]=0;
}
else
if(pSlider == &m_pwm_ctl2)
{
i = pSlider->GetPos ();
m_pwm2.Format("%d",i);
txbuffer[0]=CMD_PWM;
txbuffer[1]=i;
txbuffer[2]=1;
}
// ord[0]='A';
// ord[1]=(BYTE)((dx>>8)&0x00ff);
// ord[2]=(BYTE)(dx&0x00ff);
SendCommandToUSB(VR_USRCMD);
UpdateData(0);
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CchxAdjDlg::SendCommandToComPort()
{ /* txbuffer[0]='L';
BYTE sum=0;
for(int i=0;i<COMM_NUMBER-1;i++)
sum+=txbuffer[i];
sum=~sum;//取反+1
sum+=1;
txbuffer[7]=sum;
m_txd_str.Format("0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X", txbuffer[0],
txbuffer[1],txbuffer[2],txbuffer[3],txbuffer[4],txbuffer[5],txbuffer[6],txbuffer[7]);
UpdateData(0);
SendMessageToCom(txbuffer,COMM_NUMBER);
for( i=0;i<COMM_NUMBER;i++)
txbuffer[i]=0;
Sleep(50);*/
}
BEGIN_EVENTSINK_MAP(CchxAdjDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CchxAdjDlg)
ON_EVENT(CchxAdjDlg, IDC_MSCOMM, 1 /* OnComm */, OnOnCommMscomm, VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CchxAdjDlg::OnOnCommMscomm()
{
VARIANT vR;
static int count,i;
if(m_ComPort.GetCommEvent()!=2)
return;
int l=m_ComPort.GetInBufferCount();
if(l!=COMM_NUMBER)return;
unsigned char * data;
m_ComPort.SetBreak(0);
m_ComPort.SetInputLen(COMM_NUMBER); //12
vR=m_ComPort.GetInput();
data=(unsigned char *)vR.parray->pvData;
m_rxd_str.Format("0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X", data[0],
data[1],data[2],data[3],data[4],data[5],data[6],data[7]);
UpdateData(0);
}
void CchxAdjDlg::OnWrite()
{
txbuffer[6]=0x81;
SendCommandToUSB(VR_USRCMD);
}
void CchxAdjDlg::OnWrite2()
{
txbuffer[6]=0x82;
SendCommandToUSB(VR_USRCMD);
}
void CchxAdjDlg::OnWrite3()
{
txbuffer[6]=0x83;
SendCommandToUSB(VR_USRCMD);
}
void CchxAdjDlg::OnReadEeprom()
{
txbuffer[6]=0x40;
SendCommandToUSB(VR_USRCMD);
}
BOOL CchxAdjDlg::SendCommandToUSB(BYTE order)
{
VENDOR_OR_CLASS_REQUEST_CONTROL myRequest;
HANDLE hInDevice = NULL;
ULONG bufferSize = 8;
BOOL bResult=false;
char DeviceName[20] = "Ezusb-0";
unsigned char sum;
sum=0;
for(int i=0;i<7;i++)
sum+=txbuffer[i];
sum=~sum+1;
txbuffer[i]=sum;
if (UsbOpenDriver (&hInDevice, DeviceName) != TRUE)
{
// MessageBox( "无效设备,请重试!","错误",MB_ICONERROR);
return false;
}
else
{ DWORD dwReturned;
myRequest.request = order;
myRequest.value = 8;
myRequest.index = 0xBEEF;
myRequest.direction = 0;
myRequest.requestType=2; // vendor specific request type (2)
myRequest.recepient=0; // recepient is device (0)
bResult = DeviceIoControl(hInDevice,
IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST,
&myRequest,
sizeof(VENDOR_OR_CLASS_REQUEST_CONTROL),
txbuffer,8,
(unsigned long *)&dwReturned,
NULL);
if (bResult!=TRUE)
MessageBox("命令失败!","错误",MB_ICONERROR);
CloseHandle (hInDevice);
}
return bResult;
return 0;
}
BOOL CchxAdjDlg::UsbOpenDriver(HANDLE *phDeviceHandle, PCHAR devicename)
{
char completeDeviceName[64] = "";
strcat (completeDeviceName,"\\\\.\\");
strcat (completeDeviceName,devicename);
*phDeviceHandle = CreateFile(completeDeviceName,
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);
if (*phDeviceHandle == INVALID_HANDLE_VALUE)
return (FALSE);
else
return (TRUE);
}
#define CHA_CTL_P 0x1E
#define CHA_CTL_N 0x1F
#define CHB_CTL_P 0x20
#define CHB_CTL_N 0x21
void CchxAdjDlg::OnSelChaChb()
{ UpdateData(1);
txbuffer[0]='C';
if(m_selcha_chb)
txbuffer[1]=CHA_CTL_P;
else
txbuffer[1]=CHA_CTL_N;
SendCommandToUSB(VR_USRCMD);
}
void CchxAdjDlg::OnSelDmmExttrg()
{
UpdateData(1);
txbuffer[0]='L';
if(m_sel_dmm_ext_trg)
txbuffer[1]=0x10;
else
txbuffer[1]=0x11;
txbuffer[2]=0;
txbuffer[3]=0x74;
SendCommandToUSB(VR_USRCMD);
}
void CchxAdjDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
if(!(nSBCode==SB_LINEDOWN||nSBCode==SB_LINEUP||nSBCode==SB_THUMBPOSITION))return;
if(pScrollBar->GetDlgCtrlID()==IDC_SPIN_EXT_TRG_PWM)
{
txbuffer[0]='L';
txbuffer[1]=0;
txbuffer[2]=m_ext_trg_pwm.GetPos();
txbuffer[3]=0x74;
SendCommandToUSB(VR_USRCMD);
// SendCommandToUSB(VR_USRCMD);
}
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}
void CchxAdjDlg::OnChbCtl()
{
UpdateData(1);
txbuffer[0]='C';
if(m_chb_ctl)
txbuffer[1]=CHB_CTL_P;
else
txbuffer[1]=CHB_CTL_N;
SendCommandToUSB(VR_USRCMD);
}
#define AD9513_S0_CTL_P 0x16
#define AD9513_S0_CTL_N 0x17
#define AD9513_SYNCB_P 0x18
#define AD9513_SYNCB_N 0x19
void CchxAdjDlg::OnAd9513S0()
{
UpdateData(1);
txbuffer[0]='C';
if(m_ad9513_s0)
txbuffer[1]=AD9513_S0_CTL_P;
else
txbuffer[1]=AD9513_S0_CTL_N;
SendCommandToUSB(VR_USRCMD);
txbuffer[0]='C';
txbuffer[1]=AD9513_SYNCB_N;
SendCommandToUSB(VR_USRCMD);
txbuffer[0]='C';
txbuffer[1]=AD9513_SYNCB_P;
SendCommandToUSB(VR_USRCMD);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -