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

📄 cmdserver.c

📁 关于处理图像二值化的程序
💻 C
📖 第 1 页 / 共 3 页
字号:
					      if(sendto(server_sockfd, buffer, BUFLEN-1, 0,(struct sockaddr *) &cli_addr, cli_length) == -1)
								printf("error sendto\n");
							break;

			case  59 :  // set_snapshot_trigger_line
							//hier macht nur der Level-Trigger Sinn also mode=1
							mode = cancam_dat[0] & 0x000000ff;
							level = cancam_dat[1] & 0x000000ff;

							error = set_snapshot_trigger_line(mode, level);

							cancam_dat[0] = error;
							cancam_len = 1;
							len = make_send_param(buffer);
						   cli_length = sizeof(cli_addr);
					      if(sendto(server_sockfd, buffer, BUFLEN-1, 0,(struct sockaddr *) &cli_addr, cli_length) == -1)
								printf("error sendto\n");
							break;

			case  60 :  // disable snapshot
							error = disable_snapshot();

							cancam_dat[0] = error;
							cancam_len = 1;
							len = make_send_param(buffer);
						   cli_length = sizeof(cli_addr);
					      if(sendto(server_sockfd, buffer, BUFLEN-1, 0,(struct sockaddr *) &cli_addr, cli_length) == -1)
								printf("error sendto\n");
							break;
							
			case  63 :  // grab image and send image to client
							if(atoi(hardware_info.version) == 2)
							{
								get_grab_param(&shelp, &lhelp);
				         	if (shelp > 1)
				         		cancam_dat[1] = (unsigned long)shelp * lhelp;
				         	else
	            				cancam_dat[1] = isize;
	            		}
	            		else
	            			cancam_dat[1] = isize;


					      error_grab = grab_image(0);
//////////////////////////////////////////////////相机中二值化处理
 get_pixel_ptr(0,&ptr);
  phelp=(unsigned char*)ptr;
							{  for(ii=0;ii<isize;ii++)
	                                             {
		                                         if(*phelp>110)
                                                             *phelp=255;
                                                          else
                                                                *phelp=0;
                                                                phelp++;
                                                     	   }
                                                  
///////////////////////////////////////////////////
                                                        

							cancam_dat[0] = error_grab;

							cancam_len = 2;
							len = make_send_param(buffer);
						   cli_length = sizeof(cli_addr);
					      if(sendto(server_sockfd, buffer, BUFLEN-1, 0,(struct sockaddr *) &cli_addr, cli_length) == -1)
								printf("error sendto\n");
							
							
							if(error_grab == 0)
                                                      

                                                        
		                   				do
								{
                                                         
									timeout.tv_sec = 2;
									timeout.tv_usec = 0;

									FD_ZERO(&socks);
									FD_SET(server_sockfd,&socks);
									readsocks =
									select(server_sockfd+1, &socks,NULL , (fd_set *) 0, &timeout);
									if (readsocks > 0)
									{
									if (FD_ISSET(server_sockfd,&socks))
									{
										long buf[2];
										cli_length = sizeof(cli_addr);
										
										len = recvfrom(server_sockfd, buf, 8, 0,
															(struct sockaddr *) &cli_addr, &cli_length);
										lstart = buf[0];
										lsize = buf[1];
										if(len == 8)
										{
											// check for end of transfer
											if(lsize == 0) break;
											
											phelp = (unsigned char *) ptr_adr + lstart;
											
											cli_length = sizeof(cli_addr);
											len = sendto(server_sockfd, phelp, lsize, 0,
															(struct sockaddr *) &cli_addr, cli_length);
										}
										else break;
									}
									}
									else break;
								}
								while(lsize != 0);
							}

							break;

			case  64 :  // send last image to client and then grab a new image
							if(atoi(hardware_info.version) == 2)
							{
								get_grab_param(&shelp, &lhelp);
				         	if (shelp > 1)
				         		cancam_dat[1] = (unsigned long)shelp * lhelp;
				         	else
	            				cancam_dat[1] = isize;
	            		}
	            		else
	            			cancam_dat[1] = isize;

							cancam_dat[0] = error_grab;
							cancam_len = 2;
							len = make_send_param(buffer);
						   cli_length = sizeof(cli_addr);
					      if(sendto(server_sockfd, buffer, BUFLEN-1, 0,(struct sockaddr *) &cli_addr, cli_length) == -1)
								printf("error sendto\n");

							if(error_grab == 0)
							{
								do
								{
									timeout.tv_sec = 2;
									timeout.tv_usec = 0;

									FD_ZERO(&socks);
									FD_SET(server_sockfd,&socks);
									readsocks =
									select(server_sockfd+1, &socks,NULL , (fd_set *) 0, &timeout);
									if (readsocks > 0)
									{
									if (FD_ISSET(server_sockfd,&socks))
									{
										long buf[2];
										cli_length = sizeof(cli_addr);
										/* this is different! */
										len = recvfrom(server_sockfd, buf, 8, 0,
															(struct sockaddr *) &cli_addr, &cli_length);
										lstart = buf[0];
										lsize = buf[1];
										if(len == 8)
										{
											/* check for end of transfer */
											if(lsize == 0) break;
											/* maybe this can be optimized (omitting mem) */
											phelp = (unsigned char *) ptr_adr + lstart;
											cli_length = sizeof(cli_addr);
											len = sendto(server_sockfd, phelp, lsize, 0,
															(struct sockaddr *) &cli_addr, cli_length);
										}
										else break;
									}
									}
									else break;
								}
								while(lsize != 0);
							}
					      error_grab = grab_image(0);
							break;

			case  65 :  // grab snapshot image and send image to client
							if(atoi(hardware_info.version) == 2)
							{
								get_grab_param(&shelp, &lhelp);
				         	if (shelp > 1)
				         		cancam_dat[1] = (unsigned long)shelp * lhelp;
				         	else
	            				cancam_dat[1] = isize;
	            		}
	            		else
	            			cancam_dat[1] = isize;
	            			
					      error_grab = grab_image_on_trigger(0,4000);
					      
							cancam_dat[0] = error_grab;
							cancam_len = 2;
							len = make_send_param(buffer);
						   cli_length = sizeof(cli_addr);
					      if(sendto(server_sockfd, buffer, BUFLEN-1, 0,(struct sockaddr *) &cli_addr, cli_length) == -1)
								printf("error sendto\n");

							if(error_grab == 0)
							{
								do
								{
									timeout.tv_sec = 2;
									timeout.tv_usec = 0;

									FD_ZERO(&socks);
									FD_SET(server_sockfd,&socks);
									readsocks =
									select(server_sockfd+1, &socks,NULL , (fd_set *) 0, &timeout);
									if (readsocks > 0)
									{
									if (FD_ISSET(server_sockfd,&socks))
									{
										long buf[2];
										cli_length = sizeof(cli_addr);
										/* this is different! */
										len = recvfrom(server_sockfd, buf, 8, 0,
															(struct sockaddr *) &cli_addr, &cli_length);
										lstart = buf[0];
										lsize = buf[1];
										//printf("start = %ld, size = %lx\n",start,size);
										if(len == 8)
										{
											/* check for end of transfer */
											if(lsize == 0) break;
											/* maybe this can be optimized (omitting mem) */
											phelp = (unsigned char *) ptr_adr + lstart;
											cli_length = sizeof(cli_addr);
											len = sendto(server_sockfd, phelp, lsize, 0,
															(struct sockaddr *) &cli_addr, cli_length);
										}
										else break;
									}
									}
									else break;
								}
								while(lsize != 0);
							}

							break;


			case  67 :  // grab synchronized image and send image to client
				         if(atoi(hardware_info.version) == 2)
							{
								get_grab_param(&shelp, &lhelp);
				         	if (shelp > 1)
				         		cancam_dat[1] = (unsigned long)shelp * lhelp;
				         	else
	            				cancam_dat[1] = isize;
	            		}
	            		else
	            			cancam_dat[1] = isize;

							help1 = cancam_dat[0] & 0x000000ff;
					      error_grab = grab_sync_image_on_trigger(0,help1);
							cancam_dat[0] = error_grab;
							cancam_len = 2;
							
							len = make_send_param(buffer);
						   cli_length = sizeof(cli_addr);
					      if(sendto(server_sockfd, buffer, BUFLEN-1, 0,(struct sockaddr *) &cli_addr, cli_length) == -1)
								printf("error sendto\n");

							if(error_grab == 0)
							{
								do
								{
									timeout.tv_sec = 2;
									timeout.tv_usec = 0;

									FD_ZERO(&socks);
									FD_SET(server_sockfd,&socks);
									readsocks =
									select(server_sockfd+1, &socks,NULL , (fd_set *) 0, &timeout);
									if (readsocks > 0)
									{
									if (FD_ISSET(server_sockfd,&socks))
									{
										long buf[2];
										cli_length = sizeof(cli_addr);
										/* this is different! */
										len = recvfrom(server_sockfd, buf, 8, 0,
															(struct sockaddr *) &cli_addr, &cli_length);
										lstart = buf[0];
										lsize = buf[1];
										if(len == 8)
										{
											/* check for end of transfer */
											if(lsize == 0) break;
											/* maybe this can be optimized (omitting mem) */
											phelp = (unsigned char *) ptr_adr + lstart;
											cli_length = sizeof(cli_addr);
											len = sendto(server_sockfd, phelp, lsize, 0,
															(struct sockaddr *) &cli_addr, cli_length);
										}
										else break;
									}
									}
									else break;
								}
								while(lsize != 0);
							}

							break;
						
			case 90: // set lut
						shelp = (unsigned short)cancam_dat[0];
						help = (unsigned char)cancam_dat[1];
						error = set_lut(shelp,help);
						cancam_dat[0] = error;
						cancam_len = 1;
						len = make_send_param(buffer);
				      if(sendto(server_sockfd, buffer, BUFLEN-1, 0,(struct sockaddr *) &cli_addr, cli_length) == -1)
							printf("error sendto\n");
						break;

			case 91:	// get lut
						shelp = (unsigned short)cancam_dat[0];
					   error = get_lut(shelp,&help);
						cancam_dat[0] = help;
						cancam_dat[1] = error;
						cancam_len = 2;
						len = make_send_param(buffer);
				      if(sendto(server_sockfd, buffer, BUFLEN-1, 0,(struct sockaddr *) &cli_addr, cli_length) == -1)
							printf("error sendto\n");
						break;
			case 92: // set integration time
						exptime = cancam_dat[0];
						error = set_integration_time(exptime);
						cancam_dat[0] = error;
						cancam_len = 1;
						len = make_send_param(buffer);
				      if(sendto(server_sockfd, buffer, BUFLEN-1, 0,(struct sockaddr *) &cli_addr, cli_length) == -1)
							printf("error sendto\n");
						break;
						
			case 93:	// get integration time
					   error = get_integration_time(&exptime);
					   cancam_dat[0] = exptime;
						cancam_dat[1] = error;
						cancam_len = 2;
						len = make_send_param(buffer);
				      if(sendto(server_sockfd, buffer, BUFLEN-1, 0,(struct sockaddr *) &cli_addr, cli_length) == -1)
							printf("error sendto\n");
						break;

			case 255: // exit application
						exit_app = 1;
						cancam_dat[0] = 0;
						cancam_len = 1;
						len = make_send_param(buffer);
					   cli_length = sizeof(cli_addr);
				      if(sendto(server_sockfd, buffer, BUFLEN-1, 0,(struct sockaddr *) &cli_addr, cli_length) == -1)
							printf("error sendto\n");
						break;

			default:		// send error unknown commando
							cancam_dat[0] = 99;
							cancam_len = 1;
							len = make_send_param(buffer);
						   cli_length = sizeof(cli_addr);
					      if(sendto(server_sockfd, buffer, BUFLEN-1, 0,(struct sockaddr *) &cli_addr, cli_length) == -1)
								printf("error sendto\n");

						break;
		}
		in_action = 0;
	 }
  }
  if(cancam_init)
	 error = close_cancam();

  close(server_sockfd);
  sprintf(l_str,"/home/httpd/image_s/%ld.jpg",internet_cnt);
  unlink(l_str);


   close (fd1);                                // Treiber schliessen.


  exit(0);
}

⌨️ 快捷键说明

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