📄 cmdserver.c
字号:
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 + -