zoukankan      html  css  js  c++  java
  • adc 测量子系统

            #include <stdio.h>
            #include <stdlib.h>
            #include <fcntl.h>
            #include <unistd.h>
            #include <math.h> 

            char iiotype[16][32] = {
                    'in_voltage1_raw',
                    'in_voltage2_raw',
            };
                  

          
           
            // return = 0: voltage value from AIN1, unit: mV
            // < 0: failed
            int read_AIN1(float *fvoltage)
            {
                    int value, ret = 0;
                    char filename[80];
                    FILE *fp;
                    char buf[20];

                    sprintf( filename, '/sys/bus/iio/devices/iio:device0/%s', iiotype[0]);
                    fp = fopen(filename, 'rt' );
                    if( fp==NULL )
                    {
                            printf('open %s fail! ', filename);
                            *fvoltage = 0.0;
                            ret = -1;
                            return ret;
                    }
                    fread( buf, 1, sizeof(buf), fp );
                    fclose(fp);

                    // convert to integer
                    sscanf( buf, '%d', &value );
                    *fvoltage = 0.8 * value;
                    return ret;
            }

       // return = 0: voltage value from AIN2, unit: mV
            // < 0: failed
            int read_AIN2(float *fvoltage)
            {
                    int value, ret = 0;
                    char filename[80];
                    FILE *fp;
                    char buf[20];

                    sprintf( filename, '/sys/bus/iio/devices/iio:device0/%s', iiotype[1]);
                    fp = fopen(filename, 'rt' );
                    if( fp==NULL )
                    {
                            printf('open %s fail! ', filename);
                            *fvoltage = 0.0;
                            ret = -1;
                            return ret;
                    }
                    fread( buf, 1, sizeof(buf), fp );
                    fclose(fp);

                    // convert to integer
                    sscanf( buf, '%d', &value );
                    *fvoltage = 0.8 * value;
                    return ret;
            }


          
            int main(int argc, char** argv)
            {
                    int ret = 0;
                    float fvalue;

                
                    // read AIN1
                    ret = read_AIN1(&fvalue);
                    if(ret < 0)
                    {
                            return ret;
                    }
                    printf('AIN1 = %.2f mV ', fvalue);

                    // read AIN2
                    ret = read_AIN2(&fvalue);
                    if(ret < 0)
                    {
                            return ret;
                    }
        
            }

  • 相关阅读:
    django-restframework频率功能、过滤功能等相关内容-87
    django-restframework认证功能等相关内容-86
    视图基类、扩展类、子类及试图集等相关内容-85
    vue框架前后端分离项目之课程接口、页面、前台等相关内容-127
    vue框架前后端分离项目之课程页面前端、课程表分析、编写及数据录入等相关内容-126
    celery的基础使用等相关内容-125
    数据库时间戳排序协议
    单节点部署OpenStack(Queens版本、DevStack)
    变量命名规范及str类型
    程序员职业生涯规划
  • 原文地址:https://www.cnblogs.com/zym0805/p/5984337.html
Copyright © 2011-2022 走看看