如何使此串行配置代码可配置?

时间:2012-03-22 07:47:56

标签: c++ serial-port

在我的连续课程中 options.c_cflag |= ( CLOCAL | CREAD | CS8);

我想让|= ( CLOCAL | CREAD | CS8)可编辑,因为我将从文本文件中读取此部分并“追加”到options.c_cflag

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

2 个答案:

答案 0 :(得分:0)

你必须编写代码来实现这一点,因为基本上你是在尝试在运行时编译C代码。

您可以使用正则表达式引擎或简单字符串拆分来提取每个组件,然后将它们从字符串转换为符号(使用表格或类似:if(!strcmp(text,“CLOCAL”))v = CLOCAL;) 。

答案 1 :(得分: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;
}

但是你需要知道OR标志的确切值,将其写在某处并为options.c_flag分配flagValue的结果。

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

相关问题