背景
在项目中需要实现在程序运行时动态更改摄像头曝光值,一个终端运行应用程序,另外开一个终端来向程序发送更改变量的指令。
实现方式
通过有名管道实现
应用程序中的代码
/*********************************************
函数名:debug_thread
描述:调试线程函数,创建名为“C”的管道,在另一个终端输入 echo xxx > C 就可以设置相关摄像头参数
其中XXX为:
B -> 曝光 eg: B 50
F -> 分辨率 eg: F 640 480
输入:
输出:
返回值:
*********************************************/
void* Debug::debug_thread(void* arg)
{
FILE* fifo_fd;
char debug_info[64] = {0};
cout << "Enter debug thread" << endl;
unlink( "C" );
if(0 !=mkfifo( "C", O_RDWR|O_CREAT|O_TRUNC ))
{
cout << "mkfifo error" << endl;
return NULL;
}
while(1)
{
fifo_fd = fopen( "C", "r");
if(NULL == fifo_fd)
{
cout << "can not open pip file" << endl;
break;
}
if(0 == fgets( debug_info, 64, fifo_fd))
{
fclose(fifo_fd);
continue;
}
//delete '\n'
debug_info[strlen(debug_info) - 1] = 0;
cout << "nihao " << debug_info << endl;
del_dbg_cmd(debug_info, strlen(debug_info)-1);
fclose(fifo_fd);
}
return NULL;
}
在另一个终端输入
echo xxx > C
可以看到程序所在终端收到了指令,后面进行解析就行。