一般來講费就,傳感器數(shù)據(jù)可以分為離散型和數(shù)值型诉瓦。離散型傳感器記錄布爾值類型信息
如,開/關,正常/不正常力细。數(shù)值型傳感器要記錄的數(shù)據(jù)稍微復雜一些睬澡,如:31攝氏度,15毫米
對于數(shù)值型傳感器數(shù)據(jù),在程序中一般可以這樣描述
對于傳感器A(風扇)0 代表關眠蚂,1代表開,獲取到傳感器A 的數(shù)據(jù)為1時煞聪,代表風扇開。
對于傳感器B(溫度異常檢測器件)0代表不正常逝慧,1代表正常昔脯,獲取到傳感器B的數(shù)據(jù)為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);
當項目中傳感器的數(shù)量和類型較多時云稚,代碼可以這樣修改
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);
}
}
這樣我們分離了傳感器的描述信息和值信息。對于數(shù)值型傳感器值信息和描述信息也可以這樣分離沈堡。