2012-03-22 19 views
0

在我的串行COM类
options.c_cflag |= (CLOCAL | CREAD | CS8);如何使此串行配置代码可配置?

我要让|= (CLOCAL | CREAD | CS8)编辑,如我将在从一个文本文件中这部分读取和“追加”到options.c_cflag

我尝试使用string变量,但无法使其工作。 任何人都知道我该怎么做?

回答

0

你必须编写代码来实现这个目标,因为基本上你试图在运行时编译C代码。你可以使用正则表达式引擎或简单的字符串拆分来提取每个组件,然后将它们从字符串转换为符号(使用表或类似的东西:if(!strcmp(text,“CLOCAL”))v = CLOCAL; )。

0

OR'd标志为您提供了一个实际的数值,可以通过stringstream将其读取并转换为该值。

template<typename T> 
T flagValue(const std::string& flag_str) 
{ 
    T value; 
    std::stringstream ss; 
    ss << hex << flag_str; 
    ss >> value; 
    return value; 
} 

,但你需要知道的逻辑与的标志的精确值,它写的地方,并与flagValue的结果分配options.c_flag

例如flagValue<unsigned int>("1a")