📄 program_e2promdlg.cpp
字号:
void CProgram_e2promDlg::OnDumpOut()
{
// TODO: Add your control notification handler code here
const unsigned short PORT_LPT=1;
unsigned short device_multispi=0;
unsigned short size_EEPROM=11;
unsigned short mask_EEPROM=7;
char *filename_dump="A16b.psr";
char buffer[100];
bool state=false;
m_display.SetWindowText("开始导出");
m_display.SetFontSize(20);
if(e2Init(PORT_LPT,device_multispi,size_EEPROM,mask_EEPROM,5000)==E2_PASS)
{
{
e2Dump(filename_dump,0,0);
do
{
::Sleep(1000);
sprintf(buffer,"已导出 %d%% ",e2GetProgress());
m_display.SetWindowText(buffer);
m_display.SetFontSize(20);
}while(e2IsBusy());
m_display.SetWindowText("开始校验...");
m_display.SetFontSize(20);
if(e2Verify(filename_dump,1))
state=true;
else
state=false;
}
e2Close();
if(state==true)
{
m_display.SetWindowText("导出成功");
m_display.SetFontSize(20);
// OnHostInterface()
}
else
{
m_display.SetWindowText("导出失败,请重新尝试");
m_display.SetFontSize(20);
}
}
else
{
e2Close();
m_display.SetWindowText("导出初始化失败");
m_display.SetFontSize(20);
}
}
void CProgram_e2promDlg::OnCancel()
{
// TODO: Add extra cleanup here
e2Close();
CDialog::OnCancel();
}
void CProgram_e2promDlg::OnConfigAddress()
{
// TODO: Add your control notification handler code here
m_display.SetWindowText("开始配置蓝牙地址");
m_display.SetFontSize(20);
const int PORT_LPT=1;
int device_multispi=0;
char flag_aStopOnSpiAccess=0;
// const unsigned int PSKEY_BDADDR=1;
// uint16 keySize;
// uint16 address_data[16];
// uint16 arraylen=16;
// uint16 len;
uint32 nDevHandle = initTestEngineSpi(PORT_LPT,device_multispi,flag_aStopOnSpiAccess);
if(nDevHandle!=0)
{
/* psSize(nDevHandle,PSKEY_BDADDR,PS_STORES_IFR,&keySize);
if(keySize==0)
keySize=16;
psWrite(nDevHandle,PSKEY_BDADDR,PS_STORES_I,keySize,address_data);
psRead(nDevHandle,PSKEY_BDADDR,PS_STORES_I,arraylen,address_data,&len);
*/
char str_addre[13];
m_BTaddress.GetWindowText(str_addre,13);
int BTaddress_len=strlen(str_addre);
if((str_addre!=NULL)&&(BTaddress_len==12))
{
char temp_addre[13]="000000000000";
strcpy(temp_addre,str_addre);
int array_address[12];
for(int i=0;i<12;i++)
{
if(temp_addre[i]>=48&&temp_addre[i]<=57)
array_address[i]=temp_addre[i]-48;
else if(temp_addre[i]>=65&&temp_addre[i]<=70)
array_address[i]=temp_addre[i]-65+10;
else if(temp_addre[i]>=97&&temp_addre[i]<=102)
array_address[i]=temp_addre[i]-97+10;
else
{
m_display.SetWindowText("地址错误");
m_display.SetFontSize(20);
closeTestEngine(nDevHandle);
return;
}
}
w_nap=array_address[0]*16*16*16+array_address[1]*16*16+array_address[2]*16+array_address[3];
w_uap=array_address[4]*16+array_address[5];
w_lap=array_address[6]*16*16*16*16*16+array_address[7]*16*16*16*16+array_address[8]*16*16*16+array_address[9]*16*16+array_address[10]*16+array_address[11];
}
/*
if(w_nap||w_uap||w_lap)
{
m_display.SetWindowText("未输入地址");
m_display.SetFontSize(20);
closeTestEngine(nDevHandle);
return;
}
*/
if(config_BTaddress_flag==1)
w_lap+=1;
{//display the bluetooth address
char *nul_addre="000000000000";
char temp_ulap[]="00000000";
char temp_nap[]="0000";
char tempul[]="00000000";
char tempn[]="0000";
_itoa((w_uap*(1024*1024*16)+w_lap),tempul,16); //convert BD_ADDR to string
strncpy(temp_ulap+(8-strlen(tempul)),tempul,strlen(tempul));
_itoa(w_nap,tempn,16);
strncpy(temp_nap+(4-strlen(tempn)),tempn,strlen(tempn));
nul_addre=strcat(temp_nap,temp_ulap);
char *up_addr=_strupr(_strdup(nul_addre));
m_BTaddress.SetWindowText(up_addr);
}
if(psWriteBdAddr(nDevHandle,w_lap,w_uap,w_nap)==1)
{
config_BTaddress_flag=1;
m_display.SetWindowText("配置蓝牙地址成功");
m_display.SetFontSize(20);
}
else
{
config_BTaddress_flag=0;
m_display.SetWindowText("配置蓝牙地址失败");
m_display.SetFontSize(20);
}
closeTestEngine(nDevHandle);
}
else
{
m_display.SetWindowText("蓝牙地址配置初始化失败");
m_display.SetFontSize(20);
}
}
void CProgram_e2promDlg::OnReadAddress()
{
// TODO: Add your control notification handler code here
const int PORT_LPT=1;
int device_multispi=0;
char flag_aStopOnSpiAccess=0;
uint32 nDevHandle = initTestEngineSpi(PORT_LPT,device_multispi,flag_aStopOnSpiAccess);
if(nDevHandle!=0)
{
if(psReadBdAddr(nDevHandle,&r_lap,&r_uap,&r_nap)==1)
{
char *nul_addre="000000000000";
char temp_ulap[]="00000000";
char temp_nap[]="0000";
char tempul[]="00000000";
char tempn[]="0000";
_itoa((r_uap*(1024*1024*16)+r_lap),tempul,16); //convert BD_ADDR to string
strncpy(temp_ulap+(8-strlen(tempul)),tempul,strlen(tempul));
_itoa(r_nap,tempn,16);
strncpy(temp_nap+(4-strlen(tempn)),tempn,strlen(tempn));
nul_addre=strcat(temp_nap,temp_ulap);
char *up_addr=_strupr(_strdup(nul_addre));
m_BTaddress.SetWindowText(up_addr);
closeTestEngine(nDevHandle);
}
}
}
void CProgram_e2promDlg::OnHostInterface()
{
// TODO: Add your control notification handler code here
const int PORT_LPT=1;
int device_multispi=0;
char flag_aStopOnSpiAccess=0;
m_display.SetWindowText("开始配置");
m_display.SetFontSize(20);
int i=0,k=0;
uint32 nDevHandle=initTestEngineSpi(PORT_LPT,device_multispi,flag_aStopOnSpiAccess);
if(nDevHandle==0)
{
m_display.SetWindowText("配置初始化失败");
m_display.SetFontSize(20);
return;
}
else
{
{
uint16 PSKey_Host_Interface_Set=0;
i+=psWriteHostInterface(nDevHandle,PSKey_Host_Interface_Set);
}
/*
{
const unsigned int LOCAL_NAME=220;
const unsigned int LOCAL_NAME_LENGTH = 238;
uint16 aWLocalName[50] = {'C','S','R','-','B','R','F'}; //Local name Modify every time
char str_manufactureID[50];
m_ManufactureID.GetWindowText(str_manufactureID,50);
uint16 lLenStr=strlen(str_manufactureID);
if(lLenStr != 0)
{
for(uint8 m=0;m < lLenStr;m++)
{
aWLocalName[m]=(uint16)str_manufactureID[m];
}
}
else
{
lLenStr=sizeof(aWLocalName)/sizeof(aWLocalName[0]);
}
// psSize(nDevHandle,LOCAL_NAME,PS_STORES_IFR,&lKeySize);
i+=psWrite(nDevHandle,LOCAL_NAME_LENGTH,PS_STORES_T,1,&lLenStr);
i+=psWrite(nDevHandle,LOCAL_NAME,PS_STORES_T,lLenStr,aWLocalName);
}
*/
{
char str_addre[13];
m_BTaddress.GetWindowText(str_addre,13);
int BTaddress_len=strlen(str_addre);
if((str_addre!=NULL)&&(BTaddress_len==12))
{
char temp_addre[13]="000000000000";
strcpy(temp_addre,str_addre);
int array_address[12];
for(int j=0;j<12;j++)
{
if(temp_addre[j]>=48&&temp_addre[j]<=57)
array_address[j]=temp_addre[j]-48;
else if(temp_addre[j]>=65&&temp_addre[j]<=70)
array_address[j]=temp_addre[j]-65+10;
else if(temp_addre[j]>=97&&temp_addre[j]<=102)
array_address[j]=temp_addre[j]-97+10;
else
{
m_display.SetWindowText("地址错误");
m_display.SetFontSize(20);
closeTestEngine(nDevHandle);
return;
}
}
w_nap=array_address[0]*16*16*16+array_address[1]*16*16+array_address[2]*16+array_address[3];
w_uap=array_address[4]*16+array_address[5];
w_lap=array_address[6]*16*16*16*16*16+array_address[7]*16*16*16*16+array_address[8]*16*16*16+array_address[9]*16*16+array_address[10]*16+array_address[11];
if(psWriteBdAddr(nDevHandle,w_lap,w_uap,w_nap)==1)
{
i=i+1;
w_lap+=1;
}
}
else
{
m_display.SetWindowText("未输入地址或地址错误");
m_display.SetFontSize(20);
closeTestEngine(nDevHandle);
return;
}
{//display the bluetooth address
char *nul_addre="000000000000";
char temp_ulap[]="00000000";
char temp_nap[]="0000";
char tempul[]="00000000";
char tempn[]="0000";
_itoa((w_uap*(1024*1024*16)+w_lap),tempul,16); //convert BD_ADDR to string
strncpy(temp_ulap+(8-strlen(tempul)),tempul,strlen(tempul));
_itoa(w_nap,tempn,16);
strncpy(temp_nap+(4-strlen(tempn)),tempn,strlen(tempn));
nul_addre=strcat(temp_nap,temp_ulap);
char *up_addr=_strupr(_strdup(nul_addre));
m_BTaddress.SetWindowText(up_addr);
}
}
{
const unsigned int USER_PIO_DEFINE=24;
uint16 aPioDefine[2] = {0x019b, 0xffff};
i+=psWriteUsrValue(nDevHandle, USER_PIO_DEFINE, 2, aPioDefine);
}
{
const unsigned int LOCAL_SUPPORT_FEATURE=239;
uint16 aSuppFeature[4] = {0xfefc, 0x000f, 0x0808, 0x0000};
i+=psWrite(nDevHandle, LOCAL_SUPPORT_FEATURE, PS_STORES_T, 4, aSuppFeature);
}
/*
{
uint16 PSKey_Host_Interface_Value;
// uint16 PSKey_Host_Interface_Value_size;
psReadHostInterface(nDevHandle,&PSKey_Host_Interface_Value);
if(PSKey_Host_Interface_Set == PSKey_Host_Interface_Value)
{
k=k+1;
}
}
{
uint16 aRLocalName[50];
uint16 lKeySize;
psRead(nDevHandle, LOCAL_NAME,PS_STORES_IFR,lLenStr,aRLocalName,&lKeySize);
if(aWLocalName == aRLocalName)
{
k=k+1;
}
}
*/
k= 4;
// bccmdSetWarmReset(nDevHandle,1);
closeTestEngine(nDevHandle);
if(i==4 && k==4)
{
m_display.SetWindowText("配置成功");
m_display.SetFontSize(20);
return;
}
else
{
m_display.SetWindowText("配置失败");
m_display.SetFontSize(20);
return;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -