美文网首页
传感器值信息和描述信息的分离

传感器值信息和描述信息的分离

作者: qianlihu | 来源:发表于2017-11-06 21:10 被阅读70次

    一般来讲,传感器数据可以分为离散型和数值型。离散型传感器记录布尔值类型信息
    如,开/关,正常/不正常。数值型传感器要记录的数据稍微复杂一些,如:31摄氏度,15毫米

    对于数值型传感器数据,在程序中一般可以这样描述

    对于传感器A(风扇)0 代表关,1代表开,获取到传感器A 的数据为1时,代表风扇开。
    对于传感器B(温度异常检测器件)0代表不正常,1代表正常,获取到传感器B的数据为1时,代表温度正常。

    C语言描述上述逻辑可以这样写:

            struct sensor{
                    const char *false_desc;
                    const char *true_desc;
            }
    
            struct sensor sensor_a= {"关","开"};
            struct sensor sensor_b= {"不正常","正常"};
    
            int value = get_sensor_a();
    
            if(value == 0)
                    printf("sensor a = %s\n",sensor_a->false_desc);
            else
                   printf("sensor a = %s\n",sensor_a->true_desc);
    
            value = get_sensor_b();
    
            if(value == 0)
                    printf("sensor b = %s\n",sensor_b->false_desc);
            else
                    printf("sensor b = %s\n",sensor_b->true_desc);
    

    当项目中传感器的数量和类型较多时,代码可以这样修改

            void register_sensor(int sensor_id,int sensor_type)
            {
                    register();
            }
    
            int find_sensor_type_by_id(int id)
            {
                    return type;
            }
    
            struct sensor_desc{
                    const char *false_desc;
                    const char *true_desc;
            }
            static struct sensor_desc *find_sensor_desc_by_type(int sensor_type)
            {
                    return  &sensor_desc;
            }
    
            void print_sensor_value(int sensor_id,int value)
            {
                    int sensor_type = find_sensor_type_by_id(sensor_id);
                    struct sensor_desc *desc = find_sensor_desc_by_type(sensor_type);
    
                    if(value ==0)
                            printf("value=%s\n",desc->false_desc);
                    else
                            printf("value=%s\n",desc->true_desc);
    
            }
    
    
            int main()
            {
                    register_sensor()
    
    
                    while(1){
                       int v = get_sensor_value(sensor_id);
                            print_sensor_value(sensor_id,v);
                    }
            }
    

    这样我们分离了传感器的描述信息和值信息。对于数值型传感器值信息和描述信息也可以这样分离。

    相关文章

      网友评论

          本文标题:传感器值信息和描述信息的分离

          本文链接:https://www.haomeiwen.com/subject/prdrmxtx.html