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

📄 dlgs.c

📁 关于处理图像二值化的程序
💻 C
📖 第 1 页 / 共 2 页
字号:
			  break;
          }
     return FALSE ;
     }

BOOL CALLBACK SetRowDelayDlg (HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
     {

		BOOL istate;
		int p_val;

     switch (iMsg)
          {
          case WM_INITDIALOG :
				 SetDlgItemInt(hDlg,IDC_PARAM,row_delay,FALSE);
				return TRUE ;

		  case WM_COMMAND :

			  switch(LOWORD(wParam))
			  {

				  case IDC_PARAM:
						p_val = GetDlgItemInt(hDlg,IDC_PARAM,&istate,FALSE);
						if(p_val < 0)
						{
							p_val = 0;
							SetDlgItemInt(hDlg,IDC_PARAM,p_val,FALSE);
						}
						if(p_val > 8191)		
						{
							p_val = 8191;
							SetDlgItemInt(hDlg,IDC_PARAM,p_val,FALSE);
						}
					return TRUE;

				  case IDOK:
						row_delay = GetDlgItemInt(hDlg,IDC_PARAM,&istate,FALSE);
						EndDialog(hDlg,IDOK);
					return TRUE;

				  case IDCANCEL:
						EndDialog(hDlg,IDCANCEL);
					return TRUE;
			  }
			  break;
          }
     return FALSE ;
     }

BOOL CALLBACK SetFrameDelayDlg (HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
     {

		BOOL istate;
		int p_val;

     switch (iMsg)
          {
          case WM_INITDIALOG :
				 SetDlgItemInt(hDlg,IDC_PARAM,frame_delay,FALSE);
				return TRUE ;

		  case WM_COMMAND :

			  switch(LOWORD(wParam))
			  {

				  case IDC_PARAM:
						p_val = GetDlgItemInt(hDlg,IDC_PARAM,&istate,FALSE);
						if(p_val < 0)
						{
							p_val = 0;
							SetDlgItemInt(hDlg,IDC_PARAM,p_val,FALSE);
						}
						if(p_val > 32768)		
						{
							p_val = 32768;
							SetDlgItemInt(hDlg,IDC_PARAM,p_val,FALSE);
						}
					return TRUE;

				  case IDOK:
						frame_delay = GetDlgItemInt(hDlg,IDC_PARAM,&istate,FALSE);
						EndDialog(hDlg,IDOK);
					return TRUE;

				  case IDCANCEL:
						EndDialog(hDlg,IDCANCEL);
					return TRUE;
			  }
			  break;
          }
     return FALSE ;
     }

BOOL CALLBACK SetSubsamlingDlg (HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
     {

     switch (iMsg)
          {
          case WM_INITDIALOG :
				 if(ss_mode == 1)
				 {
					SendDlgItemMessage (hDlg, IDC_MODE_2_1,  BM_SETCHECK, 1, 0);
					SendDlgItemMessage (hDlg, IDC_MODE_4_2,  BM_SETCHECK, 0, 0);
				 }
				 else
				 {
					SendDlgItemMessage (hDlg, IDC_MODE_2_1,  BM_SETCHECK, 0, 0);
					SendDlgItemMessage (hDlg, IDC_MODE_4_2,  BM_SETCHECK, 1, 0);
				 }

				 SendDlgItemMessage (hDlg, IDC_DIRECTION_H,  BM_SETCHECK, ss_d_h, 0);
				 SendDlgItemMessage (hDlg, IDC_DIRECTION_V,  BM_SETCHECK, ss_d_v, 0);

				 SendDlgItemMessage (hDlg, IDC_AVERAGING_H,  BM_SETCHECK, ss_a_h, 0);
				 SendDlgItemMessage (hDlg, IDC_AVERAGING_V,  BM_SETCHECK, ss_a_v, 0);

				return TRUE ;

		  case WM_COMMAND :

			  switch(LOWORD(wParam))
			  {

				  case IDOK:
	  					if(SendDlgItemMessage (hDlg, IDC_MODE_2_1,  BM_GETCHECK, 0, 0) == BST_CHECKED)
							ss_mode = 1;
						else
							ss_mode = 2;

	  					if(SendDlgItemMessage (hDlg, IDC_DIRECTION_H,  BM_GETCHECK, 0, 0) == BST_CHECKED)
							ss_d_h = 1;
						else
							ss_d_h = 0;

	  					if(SendDlgItemMessage (hDlg, IDC_DIRECTION_V,  BM_GETCHECK, 0, 0) == BST_CHECKED)
							ss_d_v = 1;
						else
							ss_d_v = 0;

	  					if(SendDlgItemMessage (hDlg, IDC_AVERAGING_H,  BM_GETCHECK, 0, 0) == BST_CHECKED)
							ss_a_h = 1;
						else
							ss_a_h = 0;

	  					if(SendDlgItemMessage (hDlg, IDC_AVERAGING_V,  BM_GETCHECK, 0, 0) == BST_CHECKED)
							ss_a_v = 1;
						else
							ss_a_v = 0;

						EndDialog(hDlg,IDOK);
					return TRUE;

				  case IDCANCEL:
						EndDialog(hDlg,IDCANCEL);
					return TRUE;
			  }
			  break;
          }
     return FALSE ;
     }


BOOL CALLBACK SetSnapshotDlg (HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
     {
		BOOL istate;
		int p_val;

     switch (iMsg)
          {
          case WM_INITDIALOG :
				 if(snapshot_trigger == 0)
				 {
					SendDlgItemMessage (hDlg, IDC_TRIGGER_LEVEL,  BM_SETCHECK, 1, 0);
					SendDlgItemMessage (hDlg, IDC_TRIGGER_PULSE,  BM_SETCHECK, 0, 0);
				 }
				 else
				 {
					SendDlgItemMessage (hDlg, IDC_TRIGGER_LEVEL,  BM_SETCHECK, 0, 0);
					SendDlgItemMessage (hDlg, IDC_TRIGGER_PULSE,  BM_SETCHECK, 1, 0);
				 }

				 if(snapshot_shutter == 0)
				 {
					SendDlgItemMessage (hDlg, IDC_SHUTTER_NORMAL,  BM_SETCHECK, 1, 0);
					SendDlgItemMessage (hDlg, IDC_SHUTTER_EXTERNAL,  BM_SETCHECK, 0, 0);
				 }
				 else
				 {
					SendDlgItemMessage (hDlg, IDC_SHUTTER_NORMAL,  BM_SETCHECK, 0, 0);
					SendDlgItemMessage (hDlg, IDC_SHUTTER_EXTERNAL,  BM_SETCHECK, 1, 0);
				 }

				 SetDlgItemInt(hDlg,IDC_RESET,snapshot_reset,FALSE);


				return TRUE ;

		  case WM_COMMAND :

			  switch(LOWORD(wParam))
			  {
				  case IDC_RESET:

//					  switch(HIWORD(wParam))
//						{
//							case CBN_SELCHANGE :
//
//					  }
					  p_val = GetDlgItemInt(hDlg,IDC_RESET,&istate,FALSE);
					/*	if(p_val < 1)
						{
							p_val = 1;
							SetDlgItemInt(hDlg,IDC_RESET,p_val,FALSE);
						}
						*/
						if(p_val > 8)		
						{
							p_val = 8;
							SetDlgItemInt(hDlg,IDC_RESET,p_val,FALSE);
						}
					return TRUE;


				  case IDOK:
		  				if(SendDlgItemMessage (hDlg, IDC_TRIGGER_LEVEL,  BM_GETCHECK, 0, 0) == BST_CHECKED)
							snapshot_trigger = 0;
						else
							snapshot_trigger = 1;

		  				if(SendDlgItemMessage (hDlg, IDC_SHUTTER_NORMAL,  BM_GETCHECK, 0, 0) == BST_CHECKED)
							snapshot_shutter = 0;
						else
							snapshot_shutter = 1;

						snapshot_reset = GetDlgItemInt(hDlg,IDC_RESET,&istate,FALSE);

						EndDialog(hDlg,IDOK);
					return TRUE;

				  case IDCANCEL:
						EndDialog(hDlg,IDCANCEL);
					return TRUE;
			  }
			  break;
          }
     return FALSE ;
     }

BOOL CALLBACK SetGrabParamDlg (HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
     {

		BOOL istate;

     switch (iMsg)
          {
          case WM_INITDIALOG :
				 SetDlgItemInt(hDlg,IDC_IMAGE_COUNT,img_cnt,FALSE);
				 SetDlgItemInt(hDlg,IDC_FPGA_MEM_OFFSET,fpga_mem_offset,FALSE);
				return TRUE ;

		  case WM_COMMAND :

			  switch(LOWORD(wParam))
			  {
				  case IDOK:
						img_cnt = GetDlgItemInt(hDlg,IDC_IMAGE_COUNT,&istate,FALSE);
						fpga_mem_offset = GetDlgItemInt(hDlg,IDC_FPGA_MEM_OFFSET,&istate,FALSE);
						EndDialog(hDlg,IDOK);
					return TRUE;

				  case IDCANCEL:
						EndDialog(hDlg,IDCANCEL);
					return TRUE;
			  }
			  break;
          }
     return FALSE ;
     }

BYTE read_fpga(BYTE cam_nr,WORD reg, DWORD *val)
{
	BYTE   error;
	DWORD  cmd[2];
	
	cmd[0] = reg;
	error = send_val(cam_nr,18, 1, &cmd[0]);
	if(error)
		return(1);
	error = receive(cam_nr,&cmd[0]);
	if(error == 128)
		error = 2;
	else
	{
		*val = cmd[0];
		error = (BYTE)cmd[1];
	}
	return(error);
}

BYTE write_fpga(BYTE cam_nr,WORD reg, DWORD val)
{
	BYTE   error;
	DWORD  cmd[2];
	
	cmd[0] = reg;
	cmd[1] = val;
	error = send_val(cam_nr,19, 2, &cmd[0]);
	if(error)
		return(1);
	error = receive(cam_nr,&cmd[0]);
	if(error == 128)
		error = 2;
	else
	{
		error = (BYTE)cmd[0];
	}
	return(error);
}

BOOL CALLBACK SetFPGADlg (HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
     {

		BOOL istate;
		char l_str[30];

     switch (iMsg)
          {
          case WM_INITDIALOG :

				 sprintf(l_str,"%X",fpga_reg);
				 SetDlgItemText(hDlg,IDC_REGISTER,l_str);
	
				 sprintf(l_str,"%08lX",fpga_value);
				 SetDlgItemText(hDlg,IDC_VALUE,l_str);

				return TRUE ;

		  case WM_COMMAND :

			  switch(LOWORD(wParam))
			  {

				  case IDOK:
						fpga_reg = GetDlgItemInt(hDlg,IDC_REGISTER,&istate,FALSE);
						fpga_value = GetDlgItemInt(hDlg,IDC_VALUE,&istate,FALSE);
						EndDialog(hDlg,0);
					return TRUE;

				  case ID_READ:
						GetDlgItemText(hDlg,IDC_REGISTER,l_str,sizeof(l_str));
						sscanf(l_str,"%X",&fpga_reg);											
						read_fpga(1,fpga_reg,&fpga_value);
						sprintf(l_str,"%08lX",fpga_value);
						SetDlgItemText(hDlg,IDC_VALUE,l_str);
					return TRUE;

				  case ID_WRITE:
						GetDlgItemText(hDlg,IDC_REGISTER,l_str,sizeof(l_str));
						sscanf(l_str,"%X",&fpga_reg);

						GetDlgItemText(hDlg,IDC_VALUE,l_str,sizeof(l_str));
						sscanf(l_str,"%X",&fpga_value);

						write_fpga(1,fpga_reg,fpga_value);
					return TRUE;


			  }
			  break;
          }
     return FALSE ;
     }

BOOL CALLBACK CANDlg (HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
     {

		BOOL istate;
		char l_str[30];
		int i,p_val;
		BYTE buf[8],len,error;
		DWORD id,baud;
		WORD flags;
		static BOOL init_flag = FALSE;

     switch (iMsg)
          {
          case WM_INITDIALOG :
					for(i = 1; i <= 8;i++)
					{
						sprintf(l_str,"%d",i);
						SendMessage(GetDlgItem(hDlg,IDC_CAN_TRANSMIT_LENGTH),CB_ADDSTRING,(WPARAM)0,(LPARAM)l_str);
					}
				   SendMessage (GetDlgItem(hDlg,IDC_CAN_TRANSMIT_LENGTH),CB_SETCURSEL,7,0);

					SendMessage(GetDlgItem(hDlg,IDC_CAN_BAUD),CB_INSERTSTRING,(WPARAM)0,(LPARAM)"125");
					SendMessage(GetDlgItem(hDlg,IDC_CAN_BAUD),CB_INSERTSTRING,(WPARAM)1,(LPARAM)"250");
					SendMessage(GetDlgItem(hDlg,IDC_CAN_BAUD),CB_INSERTSTRING,(WPARAM)2,(LPARAM)"500");
					SendMessage(GetDlgItem(hDlg,IDC_CAN_BAUD),CB_INSERTSTRING,(WPARAM)3,(LPARAM)"1000");
				   SendMessage (GetDlgItem(hDlg,IDC_CAN_BAUD),CB_SETCURSEL,0,0);

				   EnableWindow(GetDlgItem(hDlg, IDC_CAN_TRANSMIT_BUTTON),FALSE);						  
				   EnableWindow(GetDlgItem(hDlg, IDC_CAN_RECEIVE_BUTTON),FALSE);						  
				   EnableWindow(GetDlgItem(hDlg, IDC_CAN_CLOSE),FALSE);						  

					return TRUE ;

		  case WM_COMMAND :

			  switch(LOWORD(wParam))
			  {

				  case IDOK:
						 if(init_flag)
						 {
							close_can(camera);
							init_flag = FALSE;
						 }
						EndDialog(hDlg,0);
					return TRUE;

				  case IDC_CAN_INIT:
					i = (BYTE)SendMessage(GetDlgItem(hDlg,IDC_CAN_BAUD),CB_GETCURSEL,(WPARAM)0,(LPARAM)0);					 
					switch(i)
					{
						case 0: baud = 125; break;
						case 1: baud = 250; break;
						case 2: baud = 500; break;
						case 3: baud = 1000; break;
					}

					error = init_can(camera,baud,0x7ff);	
					if(error)
					{
						sprintf(l_str,"init can error %d",error);
						MessageBox(hDlg ,l_str,szAppName,MB_OK | MB_ICONSTOP);
						init_flag = FALSE;
					}
					else
					{
						init_flag = TRUE;
					   EnableWindow(GetDlgItem(hDlg, IDC_CAN_TRANSMIT_BUTTON),TRUE);						  
					   EnableWindow(GetDlgItem(hDlg, IDC_CAN_RECEIVE_BUTTON),TRUE);						  
					   EnableWindow(GetDlgItem(hDlg, IDC_CAN_CLOSE),TRUE);						  
					   EnableWindow(GetDlgItem(hDlg, IDC_CAN_INIT),FALSE);						  
					}

					return TRUE;

				  case IDC_CAN_CLOSE:
						 if(init_flag)
						 {
							close_can(camera);
							init_flag = FALSE;
						   EnableWindow(GetDlgItem(hDlg, IDC_CAN_INIT),TRUE);						  
						 }
					return TRUE;


				  case IDC_CAN_TRANSMIT_BUTTON:
					id = (DWORD)GetDlgItemInt(hDlg,IDC_CAN_TRANSMIT_ID,&istate,FALSE);					 
					len = (BYTE)SendMessage(GetDlgItem(hDlg,IDC_CAN_TRANSMIT_LENGTH),CB_GETCURSEL,(WPARAM)0,(LPARAM)0);					 
					len++;
					for(i = 0; i < len;i++)
					{
						buf[i] = (BYTE)GetDlgItemInt(hDlg,IDC_CAN_TRANSMIT_DATA_1 + i,&istate,FALSE);
					}
					flags = 0;

					error = send_can(camera,id,len,flags,buf);
					if(error)
					{
						sprintf(l_str,"send error %d",error);
						MessageBox(hDlg ,l_str,szAppName,MB_OK | MB_ICONSTOP);
					}
					return TRUE;

				  case IDC_CAN_RECEIVE_BUTTON:
					error = receive_can(camera,&id,&len,&flags,buf);
					if(error)
					{
						if(error == 3)
							sprintf(l_str,"receive error %d | flags = %lx",error,flags);
						else
							sprintf(l_str,"receive error %d",error);
						MessageBox(hDlg ,l_str,szAppName,MB_OK | MB_ICONSTOP);
					}
					else
					{
						if(len == 0)
						{
							MessageBox(hDlg ,"No message available",szAppName,MB_OK | MB_ICONINFORMATION);
							SetDlgItemText(hDlg,IDC_CAN_RECEIVE_ID,"");
							SetDlgItemText(hDlg,IDC_CAN_RECEIVE_LENGTH,"");
							for(i = 0; i < 8;i++)
								SetDlgItemText(hDlg,IDC_CAN_RECEIVE_DATA_1 + i,"");
						}
						else
						{
							SetDlgItemInt(hDlg,IDC_CAN_RECEIVE_ID,id,FALSE);
							SetDlgItemInt(hDlg,IDC_CAN_RECEIVE_LENGTH,len,FALSE);
							for(i = 0; i < len;i++)
							{
								SetDlgItemInt(hDlg,IDC_CAN_RECEIVE_DATA_1 + i,buf[i],FALSE);
							}
							for(i = len; i < 8;i++)
								SetDlgItemText(hDlg,IDC_CAN_RECEIVE_DATA_1 + i,"");
						}
					}
					return TRUE;

				  case IDC_CAN_TRANSMIT_ID:
						p_val = GetDlgItemInt(hDlg,IDC_CAN_TRANSMIT_ID,&istate,FALSE);
						if(p_val > 0x7ff)
						{
							p_val = 0x7ff;
							SetDlgItemInt(hDlg,IDC_CAN_TRANSMIT_ID,p_val,FALSE);
						}
					return TRUE;

				  case IDC_CAN_TRANSMIT_DATA_1 :		
				  case IDC_CAN_TRANSMIT_DATA_2 :		
				  case IDC_CAN_TRANSMIT_DATA_3 :		
				  case IDC_CAN_TRANSMIT_DATA_4 :		
				  case IDC_CAN_TRANSMIT_DATA_5 :		
				  case IDC_CAN_TRANSMIT_DATA_6 :		
				  case IDC_CAN_TRANSMIT_DATA_7 :		
				  case IDC_CAN_TRANSMIT_DATA_8 :		

						p_val = GetDlgItemInt(hDlg,LOWORD(wParam),&istate,FALSE);
						if(p_val > 255)
						{
							p_val = 255;
							SetDlgItemInt(hDlg,LOWORD(wParam),p_val,FALSE);
						}

					return TRUE;

			  }
			  break;
          }
     return FALSE ;
     }

⌨️ 快捷键说明

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