【问题标题】:I need help getting data from two different sensors in C programming我需要帮助从 C 编程中的两个不同传感器获取数据
【发布时间】:2022-01-10 04:10:10
【问题描述】:

所以我基本上有一个温度传感器和一个光敏电阻,我试图弄清楚如何分离我得到的值。这是我到目前为止所做的:

#define type_temp 0 

#define type_photo 1

typedef struct AMESSAGE{
    
    char        type;
    uint8_t     adc;

} AMESSAGE;

我尝试定义两种不同类型的数据并将其分配给我项目中的每个 ADC。然后我尝试在我的项目中调用这两种不同的类型,但它不起作用。我想知道我做错了什么。我最好的猜测是我创建的结构不正确。

void MyTask1(void *pvParameters)
{
    
    AMESSAGE    xMessage;
    uint8_t     adc;
    uint8_t     adc1;
    int16_t     vin;
    int16_t     vin1;
    char        str[80];
    
    ADC_StartConvert();
    ADC1_StartConvert();
    
    while(1){
        if (ADC_IsEndConversion(ADC_RETURN_STATUS)){ //ADC_WAIT_FOR_RESULT) ){
            adc = ADC_GetResult8();
            vin = ADC_CountsTo_mVolts(adc);   
            xMessage.adc = adc;            
         
        
        while ( xQueueSendToBack(xQueue, &xMessage.adc, pdMS_TO_TICKS(10)) != pdPASS){};
     
        } 
        vTaskDelay( pdMS_TO_TICKS(20)); // Delay for 20ms  
        
        
    if (ADC1_IsEndConversion(ADC1_RETURN_STATUS)){ //ADC_WAIT_FOR_RESULT) ){
        adc1 = ADC1_GetResult8();
        vin1 = ADC1_CountsTo_mVolts(adc1);   
        xMessage.adc = adc1;            
        
        
        while ( xQueueSendToBack(xQueue, &xMessage.adc, pdMS_TO_TICKS(10)) != pdPASS){};
     
        } 
        vTaskDelay( pdMS_TO_TICKS(20)); // Delay for 20ms  
        }
}

【问题讨论】:

  • 您是否尝试过仅从其中一个传感器获取数据?让它工作,对另一个传感器本身做同样的事情,然后尝试以某种方式组合它们。
  • 嗨,是的,我的两个传感器都单独工作,我只是对如何分离数据感到困惑,也非常感谢您的回复。
  • 您必须使消息不同,例如通过将 aMessage.type 设置为每个传感器的不同值,我假设这就是 type_temptype_photo 的用途。仅供参考,一个常见的约定是将这些常量全部大写,并使用枚举。

标签: c embedded freertos task-queue


【解决方案1】:

AMESSAGE 结构中已经有 type 字段。转换后将其设置为所需的值 - type_temp 或 type_photo(我假设第一个 if 正确接收来自一个传感器的数据,第二个 - 来自另一个)。然后将整个 xMessage 发送到队列,而不仅仅是 ADC 结果

xQueueSendToBack(xQueue, &xMessage, pdMS_TO_TICKS(10));

应使用sizeof(AMESSAGE) 项目大小创建队列。

【讨论】:

    猜你喜欢
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 2019-10-24
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多