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

📄 seg7dlg.cpp

📁 12864 avr驱动程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:

void CSEG7Dlg::OnSelchangeCombo10() 
{
	// TODO: Add your control notification handler code here
   //语言配置数据
	UpdateData(true);
	CString language;
     _itoa(language_index,language.GetBufferSetLength(5) ,10);
    language="Language"+language; //获取当前语言项的段名
    inifile.ReadKeyValue(language, "StartCharacter",lag_start_ch); //语言起始字符
	inifile.ReadKeyValue(language, "SeparatorCharacter",lag_separator_ch); //数据分隔符
	inifile.ReadKeyValue(language, "HexLeaderCharacter",lag_hex_leader_ch); //十六进制数据头
	inifile.ReadKeyValue(language, "HexEndCharacter",lag_hex_end_ch); //十六进制数据尾
	inifile.ReadKeyValue(language, "BinLeaderCharacter",lag_bin_leader_ch); //二进制数据头
	inifile.ReadKeyValue(language, "BinEndCharacter",lag_bin_end_ch); //二进制数据尾
	inifile.ReadKeyValue(language, "DecLeaderCharacter",lag_dec_leader_ch); //十进制数据头
	inifile.ReadKeyValue(language, "DecEndCharacter",lag_dec_end_ch); //十进制数据尾
	inifile.ReadKeyValue(language, "NoteLeaderCharacter",lag_note_leader_ch); //注释头
	inifile.ReadKeyValue(language, "NoteEndCharacter",lag_note_end_ch); //注释尾
	opt_radix=inifile.ReadKeyValue(language, "DefaultRadix"); //语言默认基数
	if(opt_radix>2)
	{
      AfxMessageBox(_T("读取配置文件错误,请删除配置文件(LED.INI)!"));
	  exit(0);
	}
	UpdateData(false);
}



//设置键//////////////////////
void CSEG7Dlg::OnBtnSet() 
{
	// TODO: Add your control notification handler code here
	SETDLG dlg;
	if(dlg.DoModal()==IDOK)
	{
        combo_language.ResetContent();
	  //语言配置数据
        long i;
        i=inifile.ReadKeyValue("SETUP","LanguageTotal"); //读取语言数据
        CString language("Language");
        CString title;
        char buf[10];
        for(long j=0;j<i;j++) //读取语言选项
		{
	        inifile.ReadKeyValue(language+ _itoa(j,buf,10), "Title", title);
	        if(title.GetLength()==0)
			{
                AfxMessageBox(_T("读取配置文件错误,请删除配置文件(LED.INI)!"));
	            exit(0);
			}
            combo_language.AddString(title);
		}
        
		language_index=inifile.ReadKeyValue("SETUP", "LastLanguage"); //读取当前语言选项索引  
   
        _itoa(language_index,language.GetBufferSetLength(5) ,10);
        language="Language"+language; //获取当前语言项的段名
        inifile.ReadKeyValue(language, "StartCharacter",lag_start_ch); //语言起始字符
	    inifile.ReadKeyValue(language, "SeparatorCharacter",lag_separator_ch); //数据分隔符
	    inifile.ReadKeyValue(language, "HexLeaderCharacter",lag_hex_leader_ch); //十六进制数据头
	    inifile.ReadKeyValue(language, "HexEndCharacter",lag_hex_end_ch); //十六进制数据尾
	    inifile.ReadKeyValue(language, "BinLeaderCharacter",lag_bin_leader_ch); //二进制数据头
	    inifile.ReadKeyValue(language, "BinEndCharacter",lag_bin_end_ch); //二进制数据尾
	    inifile.ReadKeyValue(language, "DecLeaderCharacter",lag_dec_leader_ch); //十进制数据头
	    inifile.ReadKeyValue(language, "DecEndCharacter",lag_dec_end_ch); //十进制数据尾
	    inifile.ReadKeyValue(language, "NoteLeaderCharacter",lag_note_leader_ch); //注释头
	    inifile.ReadKeyValue(language, "NoteEndCharacter",lag_note_end_ch); //注释尾
	    opt_radix=inifile.ReadKeyValue(language, "DefaultRadix"); //语言默认基数
	    if(opt_radix>2)
		{
            AfxMessageBox(_T("读取配置文件错误,请删除配置文件(LED.INI)!"));
	        exit(0);
		}
        UpdateData(false);//更新数据到控件
	}
	else
	{
      //MessageBox("hello2"); //按了设置对话框中的取消按钮
	  //AfxMessageBox("没有读取配置");
	}
}


//各个检测框按钮/////////////////////////////////////
void CSEG7Dlg::ResetCheckCtl(void) //重设检查按钮的状态
{
  unsigned int i; //
  UpdateData(true); //更新控件数据
  
  for(i=1; i<19; i++)
  {
    if(check_char[i]!=check_char[0])
	{
      check_selectall=2; //有不相同的状态
	  UpdateData(false);
	  return;
	}
  }
   
  check_selectall=(unsigned int)check_char[0];
  UpdateData(false);
}

void CSEG7Dlg::OnChkNumber() 
{
	// TODO: Add your control notification handler code here
	ResetCheckCtl();
}

void CSEG7Dlg::OnChkCharA() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();
}

void CSEG7Dlg::OnChkScharB() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkCharC() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkScharC() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkScharD() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkCharE() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkCharF() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkCharH() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkScharH() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkCharL() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkCharN() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkScharN() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkScharO() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkCharP() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkScharR() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkScharT() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkCharU() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkCharLine() 
{
	// TODO: Add your control notification handler code here
    ResetCheckCtl();	
}

void CSEG7Dlg::OnChkSelectall() 
{
	// TODO: Add your control notification handler code here
	unsigned int i;
	UpdateData(true);
    
	switch(check_selectall)
	{
	case 0:
	   for(i=0; i<19; i++)
	   {
         check_char[i]=FALSE;
	   }
	   break;
	case 1:
	   for(i=0; i<19; i++)
	   {
         check_char[i]=TRUE;
	   }
	   break;
	case 2:
	   check_selectall=0;
	   for(i=0; i<19; i++)
	   {
         check_char[i]=FALSE;
	   }
	   break;
	}
	UpdateData(false);
}

void CSEG7Dlg::OnBtnClear() 
{
	// TODO: Add your control notification handler code here
	output_string="";
	UpdateData(false);
}

void CSEG7Dlg::OnBtnMal() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	char valtmp[10];
	CString strtmp;
	_itoa(CreateLedData(),valtmp, radixtab[opt_radix]);
	strtmp=valtmp;
	FormatData(strtmp, opt_radix);
	switch(opt_radix)
	{
	   case HEX:
		  strtmp = lag_start_ch + "  " + strtmp + "  " 
			              + lag_note_leader_ch + note_string + lag_note_end_ch;
          break;
	   case BIN:
		  strtmp = lag_start_ch + "  " + strtmp + "  " 
			              + lag_note_leader_ch + note_string + lag_note_end_ch;
          break;
	   case DEC:
          strtmp = lag_start_ch + "  " + strtmp + "  " 
			              + lag_note_leader_ch + note_string + lag_note_end_ch;
          break;		
	}

	output_string = output_string+ strtmp + "\r\n";
	UpdateData(false);
}


//自动按钮
void CSEG7Dlg::OnBtnAuto() 
{
	// TODO: Add your control notification handler code here
    UpdateData(true);
	int i;
	unsigned char val; //段所对应的数据
	unsigned char val2;
	char valtmp[10]; //创建数据定义
	BOOL changeflag=false; //有数据改变
	CString strtmp;

	if(check_char[0])
	{
		for(i=0; i<10; i++)
		{
		  val2=numdatatab[i];
		  if(ledak_index == 1 )
		  {
            val2 = ~val2; //共阳极
		  }
		  val=0;
		  if(val2 & 0x01){val |= pinpowertab[a_index];} //设置段
          if(val2 & 0x02){val |= pinpowertab[b_index];}
		  if(val2 & 0x04){val |= pinpowertab[c_index];}
		  if(val2 & 0x08){val |= pinpowertab[d_index];}
		  if(val2 & 0x10){val |= pinpowertab[e_index];}
		  if(val2 & 0x20){val |= pinpowertab[f_index];}
		  if(val2 & 0x40){val |= pinpowertab[g_index];}
		  if(val2 & 0x80){val |= pinpowertab[h_index];}
		  _itoa(val, valtmp,  radixtab[opt_radix]);
		  strtmp=valtmp;
	      FormatData(strtmp, opt_radix);
          switch(opt_radix)
		  {
	        case HEX:
		       strtmp = lag_start_ch + "  " + strtmp + "  " 
			            + lag_note_leader_ch + numnote[i] + lag_note_end_ch;
              break;
	        case BIN:
		       strtmp = lag_start_ch + "  " + strtmp + "  " 
			            + lag_note_leader_ch + numnote[i] + lag_note_end_ch;
               break;
	        case DEC:
               strtmp = lag_start_ch + "  " + strtmp + "  " 
			            + lag_note_leader_ch + numnote[i] + lag_note_end_ch;
            break;		
		  }// switch
      	  output_string = output_string+ strtmp + "\r\n";
		}//for
		output_string += "\r\n";
	}//if(check_char[0])


	for(i=1; i<19; i++)//输出控制字符
	{
		if(check_char[i])
		{
		  changeflag=true;
		  val2=chdatatab[i-1];
		  if(ledak_index == 1 )
		  {
            val2 = ~val2; //共阳极
		  }
		  val=0;
		  if(val2 & 0x01){val |= pinpowertab[a_index];} //设置段
          if(val2 & 0x02){val |= pinpowertab[b_index];}
		  if(val2 & 0x04){val |= pinpowertab[c_index];}
		  if(val2 & 0x08){val |= pinpowertab[d_index];}
		  if(val2 & 0x10){val |= pinpowertab[e_index];}
		  if(val2 & 0x20){val |= pinpowertab[f_index];}
		  if(val2 & 0x40){val |= pinpowertab[g_index];}
		  if(val2 & 0x80){val |= pinpowertab[h_index];}
		  _itoa(val, valtmp,  radixtab[opt_radix]);
		  strtmp=valtmp;
	      FormatData(strtmp, opt_radix);
          switch(opt_radix)
		  {
	        case HEX:
		       strtmp = lag_start_ch + "  " + strtmp + "  " 
			            + lag_note_leader_ch + chnote[i-1] + lag_note_end_ch;
              break;
	        case BIN:
		       strtmp = lag_start_ch + "  " + strtmp + "  " 
			            + lag_note_leader_ch + chnote[i-1] + lag_note_end_ch;
               break;
	        case DEC:
               strtmp = lag_start_ch + "  " + strtmp + "  " 
			            + lag_note_leader_ch + chnote[i-1] + lag_note_end_ch;
            break;		
		  }// switch
      	  output_string = output_string+ strtmp + "\r\n";
		}//if
	}//for
    if(changeflag){output_string += "\r\n";}
	UpdateData(false);
}

void CSEG7Dlg::OnChkUppercase() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
}

void CSEG7Dlg::OnRadioHex() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
}

void CSEG7Dlg::OnRadioBin() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
}

void CSEG7Dlg::OnRadioDec() 
{
	// TODO: Add your control notification handler code here
    UpdateData(true);	
}

void CSEG7Dlg::OnBtnSave() 
{
	// TODO: Add your control notification handler code here
	CFileDialog saveFileDialog(false); //参数false表示该对话框为一个另存为对话框
	saveFileDialog.m_ofn.lpstrFilter = "Text(*.txt)\0*.txt\0\0";
	saveFileDialog.m_ofn.lpstrTitle = "保存";
    saveFileDialog.m_ofn.Flags |= OFN_EXPLORER | OFN_LONGNAMES ;
	saveFileDialog.m_ofn.lpstrDefExt = "txt"; //默认文件名
	if(::GetVersion()<0x80000000) //NT操作系统,显示带有工具栏的对话框
	{
	   saveFileDialog.m_ofn.lStructSize = 88; 
	}
	else //非NT操作系统,显示老式对话框
	{
       saveFileDialog.m_ofn.lStructSize = 76;
	}

	if(saveFileDialog.DoModal()==IDOK)
	{
      //AfxMessageBox(saveFileDialog.GetPathName());
	  CString sfile =saveFileDialog.GetPathName();
      try
	  {
		CFileStatus   fs;   
        if(! (CFile::GetStatus(_T(sfile),fs)))
		{ //文件不存在,要创建文件
          HANDLE hfile=CreateFile(sfile, GENERIC_WRITE, FILE_SHARE_READ , NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
          if( hfile != INVALID_HANDLE_VALUE)
		  {
	    	 CloseHandle(hfile); //关闭文件句柄,以便读写
		  }
		}
	     CFile savefile(sfile, CFile::modeWrite);
	     savefile.Write(output_string, output_string.GetLength()); //内容写入文件
	     savefile.Close(); //关闭文件
	  }
	  catch(...)
	  {
         AfxMessageBox(_T("保存文件失败"));
	  }
	}	
}

void CSEG7Dlg::OnBtnSavePin() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true); //更新数据
	if(!CheckPinErr())
	{
	  inifile.WriteKeyValue("SETUP", "LastAK",ledak_index);
	  //inifile.WriteKeyValue("SETUP", "LastPinValue",255); //管脚状态暂未处理
      inifile.WriteKeyValue("SETUP", "LastPinA",a_index);
	  inifile.WriteKeyValue("SETUP", "LastPinB",b_index);
	  inifile.WriteKeyValue("SETUP", "LastPinC",c_index);
	  inifile.WriteKeyValue("SETUP", "LastPinD",d_index);
	  inifile.WriteKeyValue("SETUP", "LastPinE",e_index);
	  inifile.WriteKeyValue("SETUP", "LastPinF",f_index);
	  inifile.WriteKeyValue("SETUP", "LastPinG",g_index);
	  inifile.WriteKeyValue("SETUP", "LastPinH",h_index);
	}
	else
	{
      AfxMessageBox(_T("管脚指定有重复错误"));
	}

/*
		LastAK=0
LastPinValue=255
LastPinA=0
LastPinB=1
LastPinC=2
LastPinD=3
LastPinE=4
LastPinF=5
LastPinG=6
LastPinH=7
*/
}



void CSEG7Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
   
   if(nID ==  IDM_MENU_ABOUT)
   {
     //AfxMessageBox("hello"); //如果ID为自定义ID,则拦截系统消息
     ABOUTDLG dlg;
	 dlg.DoModal();
   }
   else
   {
     //一定要调用基类处理函数,否则不能响应系统消息
     CDialog::OnSysCommand(nID, lParam); //ID不是所要的ID则调用基类处理消息的函数,以响应系统功能
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -