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

📄 dlgs.c

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

	 FILE  :  DLGS.C                   TYP ( PROG/UNIT ) :  UNIT
	 
		AUTOR :   rw
		
		  DATE :   12.01.2004
		  
			 Description :
			 - WIN Demo for CanCam 
			 - Dialog
***************************************************************************/
#include <windows.h>
#include <stdio.h>
#include <commctrl.h>  // Headerfile der Common Controls
#include "dlgs.h"   
#include "Grabber.h"	
#include "CanCam.h"	

//BYTE v_size;
extern char host_adr[20];
extern WORD port_adr, itime, wx1, wx2, wy1, wy2;
extern DWORD exptime;
extern BYTE cal_param, gain;
extern WORD row_delay, frame_delay;
extern BYTE ss_mode,ss_d_h,ss_d_v,ss_a_h,ss_a_v;
extern BYTE snapshot_trigger, snapshot_shutter,snapshot_reset;
extern BYTE gain0,gain1,gain2,gain3,low_light;
extern BYTE io_port[4];
extern WORD img_cnt;
extern DWORD fpga_mem_offset;
extern BYTE camera;

extern char szAppName[];

WORD fpga_reg = 0;
DWORD fpga_value = 0;

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

		BOOL istate;

     switch (iMsg)
          {
          case WM_INITDIALOG :
				 strcpy(host_adr,"192.168.0.70");
				 port_adr = 4711;
				 SetDlgItemText(hDlg,IDC_HOST,host_adr);
				 SetDlgItemInt(hDlg,IDC_PORT,port_adr,FALSE);
				 SetDlgItemInt(hDlg,IDC_CAMERA,camera,FALSE);
				return TRUE ;

		  case WM_COMMAND :

			  switch(LOWORD(wParam))
			  {
				  case IDOK:
						GetDlgItemText(hDlg,IDC_HOST,host_adr,sizeof(host_adr));
						port_adr = GetDlgItemInt(hDlg,IDC_PORT,&istate,FALSE);
						camera = GetDlgItemInt(hDlg,IDC_CAMERA,&istate,FALSE);
						EndDialog(hDlg,IDOK);
					return TRUE;

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

BOOL CALLBACK IODlg (HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
	BYTE p_val=0;
	static BYTE lio_port[4];

     switch (iMsg)
          {
          case WM_INITDIALOG :

				 SendDlgItemMessage (hDlg, IDC_PORT_0_OUT,  BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
				 SendDlgItemMessage (hDlg, IDC_PORT_1_OUT,  BM_SETCHECK, (WPARAM)BST_CHECKED, 0);

				 if(io_port[2])
					SendDlgItemMessage (hDlg, IDC_PORT_2_OUT,  BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
				 else
					SendDlgItemMessage (hDlg, IDC_PORT_2_IN,  BM_SETCHECK, (WPARAM)BST_CHECKED, 0);

				 if(io_port[3])
					SendDlgItemMessage (hDlg, IDC_PORT_3_OUT,  BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
				 else
					SendDlgItemMessage (hDlg, IDC_PORT_3_IN,  BM_SETCHECK, (WPARAM)BST_CHECKED, 0);

				 lio_port[0] = io_port[0];
				 lio_port[1] = io_port[1];
				 lio_port[2] = io_port[2];
				 lio_port[3] = io_port[3];

				SetTimer(hDlg,1,500,NULL);
				return TRUE ;

			 case WM_TIMER:
		       KillTimer(hDlg,1);
				 if(lio_port[2] == 0)
				 {
					get_io_port(camera,2,&p_val);
					SendDlgItemMessage (hDlg, IDC_PORT_2,  BM_SETCHECK, (WPARAM)p_val, 0);
				 }

				 if(lio_port[3] == 0)
				 {
					get_io_port(camera,3,&p_val);
					SendDlgItemMessage (hDlg, IDC_PORT_3,  BM_SETCHECK, (WPARAM)p_val, 0);
				 }
 				 SetTimer(hDlg,1,200,NULL);
				 return TRUE;

		  case WM_COMMAND :

			  switch(LOWORD(wParam))
			  {
				  case IDOK:
		            KillTimer(hDlg,1);
						if(SendDlgItemMessage (hDlg, IDC_PORT_0_OUT,  BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)
							io_port[0] = 1;
						else
							io_port[0] = 0;
						if(SendDlgItemMessage (hDlg, IDC_PORT_1_OUT,  BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)
							io_port[1] = 1;
						else
							io_port[1] = 0;
						if(SendDlgItemMessage (hDlg, IDC_PORT_2_OUT,  BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)
							io_port[2] = 1;
						else
							io_port[2] = 0;
						if(SendDlgItemMessage (hDlg, IDC_PORT_3_OUT,  BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)
							io_port[3] = 1;
						else
							io_port[3] = 0;

						EndDialog(hDlg,IDOK);
					return TRUE;

				  case IDCANCEL:
						EndDialog(hDlg,IDCANCEL);
					return TRUE;

				  case IDC_PORT_SET:
						p_val = 0;
						if(SendDlgItemMessage (hDlg, IDC_PORT_0_OUT,  BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)
						{
							p_val = 1; 
							lio_port[0] = 1;
						}
						if(SendDlgItemMessage (hDlg, IDC_PORT_1_OUT,  BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)
						{
							p_val += 2; 
							lio_port[1] = 1;
						}
						if(SendDlgItemMessage (hDlg, IDC_PORT_2_OUT,  BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)
						{
							p_val += 4; 
							lio_port[2] = 1;
						}
						else
							lio_port[2] = 0;

						if(SendDlgItemMessage (hDlg, IDC_PORT_3_OUT,  BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)
						{
							p_val += 8; 
							lio_port[3] = 1;
						}
						else
							lio_port[3] = 0;

						config_io_ports(camera,p_val);
					  return TRUE;

				  case IDC_PORT_0:
						if(SendDlgItemMessage (hDlg, IDC_PORT_0,  BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)
							set_io_port(camera,0,1);
						else
							set_io_port(camera,0,0);
					return TRUE;

				  case IDC_PORT_1:
						if(SendDlgItemMessage (hDlg, IDC_PORT_1,  BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)
							set_io_port(camera,1,1);
						else
							set_io_port(camera,1,0);
					return TRUE;

				  case IDC_PORT_2:
					  if(lio_port[2] == 1)
					  {
						if(SendDlgItemMessage (hDlg, IDC_PORT_2,  BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)
							set_io_port(camera,2,1);
						else
							set_io_port(camera,2,0);
					  }
					  else
							SendDlgItemMessage (hDlg, IDC_PORT_2,  BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
					return TRUE;

				  case IDC_PORT_3:
					  if(lio_port[3] == 1)
					  {
						if(SendDlgItemMessage (hDlg, IDC_PORT_3,  BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)
							set_io_port(camera,3,1);
						else
							set_io_port(camera,3,0);
					  }
					  else
							SendDlgItemMessage (hDlg, IDC_PORT_3,  BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);

					return TRUE;

			  }
			  break;
          }
     return FALSE ;
}


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

		BOOL istate;
		int p_val;

     switch (iMsg)
          {
          case WM_INITDIALOG :
				 SetDlgItemInt(hDlg,IDC_PARAM,cal_param,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 > 255)
						{
							p_val = 255;
							SetDlgItemInt(hDlg,IDC_PARAM,p_val,FALSE);
						}
					return TRUE;

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

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

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

		BOOL istate;
		int p_val;
	
     switch (iMsg)
          {
          case WM_INITDIALOG :
				 SetDlgItemInt(hDlg,IDC_PARAM,itime,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 > 32767)		
						{
							p_val = 32767;
							SetDlgItemInt(hDlg,IDC_PARAM,p_val,FALSE);
						}
					return TRUE;

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

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

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

		BOOL istate;
		int p_val;
	
     switch (iMsg)
          {
          case WM_INITDIALOG :
				 SetDlgItemInt(hDlg,IDC_PARAM,exptime,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);
						}
						
					return TRUE;

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

				  case IDCANCEL:
						EndDialog(hDlg,IDCANCEL);
					return TRUE;
			  }
			  break;
          }
     return FALSE ;
     }
BOOL CALLBACK SetGainDlg (HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
     {

		BOOL istate;
		int p_val;

     switch (iMsg)
          {
          case WM_INITDIALOG :
				 SetDlgItemInt(hDlg,IDC_GAIN0,gain0,FALSE);
				 SetDlgItemInt(hDlg,IDC_GAIN1,gain1,FALSE);
				 SetDlgItemInt(hDlg,IDC_GAIN2,gain2,FALSE);
				 SetDlgItemInt(hDlg,IDC_GAIN3,gain3,FALSE);

				 SendDlgItemMessage (hDlg, IDC_LOW_LIGHT,  BM_SETCHECK, low_light, 0);
				return TRUE ;

		  case WM_COMMAND :

			  switch(LOWORD(wParam))
			  {

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

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

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

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

				  case IDOK:
						gain0 = GetDlgItemInt(hDlg,IDC_GAIN0,&istate,FALSE);
						gain1 = GetDlgItemInt(hDlg,IDC_GAIN1,&istate,FALSE);
						gain2 = GetDlgItemInt(hDlg,IDC_GAIN2,&istate,FALSE);
						gain3 = GetDlgItemInt(hDlg,IDC_GAIN3,&istate,FALSE);

						if(SendDlgItemMessage (hDlg, IDC_LOW_LIGHT,  BM_GETCHECK, 0, 0) == BST_CHECKED)
							low_light = 1;
						else
							low_light = 0;

						EndDialog(hDlg,IDOK);
					return TRUE;

				  case IDCANCEL:
						EndDialog(hDlg,IDCANCEL);
					return TRUE;

			  }
			  break;
          }
     return FALSE ;
     }

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

		BOOL istate;
		int p_val;

     switch (iMsg)
          {
          case WM_INITDIALOG :
				 SetDlgItemInt(hDlg,IDC_X1,wx1,FALSE);
				 SetDlgItemInt(hDlg,IDC_X2,wx2,FALSE);
				 SetDlgItemInt(hDlg,IDC_Y1,wy1,FALSE);
				 SetDlgItemInt(hDlg,IDC_Y2,wy2,FALSE);
				return TRUE ;

		  case WM_COMMAND :

			  switch(LOWORD(wParam))
			  {

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

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

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

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

				  case IDOK:
						wx1 = GetDlgItemInt(hDlg,IDC_X1,&istate,FALSE);
						wx2 = GetDlgItemInt(hDlg,IDC_X2,&istate,FALSE);
						wy1 = GetDlgItemInt(hDlg,IDC_Y1,&istate,FALSE);
						wy2 = GetDlgItemInt(hDlg,IDC_Y2,&istate,FALSE);
						EndDialog(hDlg,IDOK);
					return TRUE;

				  case IDCANCEL:
						EndDialog(hDlg,IDCANCEL);
					return TRUE;

			  }

⌨️ 快捷键说明

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