示例#1
0
文件: iio.c 项目: zhanpeic/nanopi
EXPORT int dht11Read(int type, int *data) 
{
    clearLastError();
    int ret = -1;
    char *dht11Path = (char *) malloc(FILE_PATH_LENGTH);
    memset(dht11Path, 0, FILE_PATH_LENGTH);
    strcpy(dht11Path, DHT11_PATH);

    switch(type) {
    case DHT_TEMP:
        strcat(dht11Path, "in_temp_input");
        ret = readIntValueFromFile(dht11Path);
        break;
    case DHT_HUMIDITY:
        strcat(dht11Path, "in_humidityrelative_input");
        ret = readIntValueFromFile(dht11Path);
        break;
    default:
        setLastError("Unsupport dht11 data type %d", type);
        break;
    }
    if (ret != -1) {
        *data = ret;
        ret = 0;
    } else {
        setLastError("Invalid dht11 data");
    }

    free(dht11Path);
    return ret;
}
示例#2
0
static int pcf8591Read(int channel, int *value)
{
    int existFlag = 0;
    DIR *d;
    struct dirent *de;
    char pcfFile[FILE_PATH_LENGTH];

    if (!(d = opendir(PCF8591_SYS_PATH))) {
        PyErr_SetString(PyExc_RuntimeError, "Fail to opendir pcf8591 directory");
        return -1;
    }
    while ((de = readdir(d))) {
        if (de->d_name[0] == '.')
            continue;

        sprintf(pcfFile, "%s%s/in%d_input", PCF8591_SYS_PATH, de->d_name, channel);
        if (access(pcfFile, F_OK) != -1) {
            existFlag = 1;
            break;
        }
    }
    closedir(d);

    if (existFlag == 0) {
        PyErr_SetString(PyExc_RuntimeError, "Fail to access pcf8591 sys file");
        return -1;
    }
    if ((*value = readIntValueFromFile(pcfFile)) != -1) {
        return 0;
    } else {
        PyErr_SetString(PyExc_RuntimeError, "Invalid pcf8591 data");
        return -1;
    }
}
示例#3
0
文件: iio.c 项目: friendlyarm/matrix
EXPORT int dht11Read(int type, int *data)
{
    clearLastError();
    int ret = -1;
    DIR *d;
    struct dirent *de;

    if (!(d = opendir(DHT11_SYS_PATH))) {
        setLastError("Fail to opendir %s", DHT11_SYS_PATH);
        return 0;
    }
    char dht11File[FILE_PATH_LENGTH];
    while ((de = readdir(d))) {
        if (de->d_name[0] == '.')
            continue;

        if (type == DHT_HUMIDITY)
            sprintf(dht11File, "%s%s/in_humidityrelative_input", DHT11_SYS_PATH, de->d_name);
        else if(type == DHT_TEMP)
            sprintf(dht11File, "%s%s/in_temp_input", DHT11_SYS_PATH, de->d_name);

        if (access(dht11File, F_OK) != -1) {
            break;
        }
    }
    closedir(d);

    switch(type) {
    case DHT_TEMP:
        ret = readIntValueFromFile(dht11File);
        break;
    case DHT_HUMIDITY:
        ret = readIntValueFromFile(dht11File);
        break;
    default:
        setLastError("Unsupport dht11 data type %d", type);
        break;
    }
    if (ret != -1) {
        *data = ret;
        ret = 0;
    } else {
        setLastError("Invalid dht11 data");
    }

    return ret;
}
示例#4
0
文件: iio.c 项目: friendlyarm/matrix
EXPORT int Hcsr04Read(int *distance)
{
    clearLastError();
    int ret = HCSR04_MAX_DISTANCE + 1;
    char *hcsr04Path = (char *) malloc(FILE_PATH_LENGTH);
    memset(hcsr04Path, 0, FILE_PATH_LENGTH);
    strcpy(hcsr04Path, HCSR04_PATH);
    ret = readIntValueFromFile(hcsr04Path);
    *distance = (int)(ret / HCSR04_PER_METRE);
    free(hcsr04Path);
    return ret;
}