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

📄 program_e2promdlg.cpp

📁 蓝牙耳机的烧录源码,程序写得不好但大家可在里面了解到一些CSR库文件的调用方法.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
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 + -