⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oap-head.c

📁 这个开发机器人项目源码
💻 C
📖 第 1 页 / 共 2 页
字号:
        /* Set timer count to zero */    result = oap_i2c_smbus_write_byte(file, RESET_TIMER_COUNT_COMMAND);    if (result < 0) {        fprintf(stderr, "Error setting timer count to zero\n");        close(file);        exit(EXIT_FAILURE);    }}void activate(int file){    __s32 result;        /* Activate PWM output */    result = oap_i2c_smbus_write_byte(file, ENABLE_PWM_OUTPUT_COMMAND);    if (result < 0) {        fprintf(stderr, "Error activating PWM output\n");        close(file);        exit(EXIT_FAILURE);    }}    void disable(int file){    __s32 result;        /* Disable PWM output */    result = oap_i2c_smbus_write_byte(file, DISABLE_PWM_OUTPUT_COMMAND);    if (result < 0) {        fprintf(stderr, "Error disabling PWM output\n");        close(file);        exit(EXIT_FAILURE);    }}void report_state(int file){    __s32 result;        /* Read PWM power state */    result = oap_i2c_smbus_read_byte_data(file, READ_PWM_OUTPUT_STATUS_COMMAND);    if (result < 0) {        fprintf(stderr, "Error reading PWM output status\n");        close(file);        exit(EXIT_FAILURE);    }        printf("PWM output, timer, IR sensing status: %s\n",            result ? "Active" : "Disabled");    /* Read Pan servo setpoint */    result = oap_i2c_smbus_read_byte_data(file, READ_PAN_SERVO_SETPOINT_COMMAND);    if (result < 0) {        fprintf(stderr, "Error reading pan servo setpoint\n");        close(file);        exit(EXIT_FAILURE);    }        printf("Pan servo setpoint: %d\n", result);        /* Read Pan servo actual */    result = oap_i2c_smbus_read_word_data(file, READ_PAN_SERVO_ACTUAL_COMMAND);    if (result < 0) {        fprintf(stderr, "Error reading pan servo actual\n");        close(file);        exit(EXIT_FAILURE);    }        printf("Pan servo actual driven position: %d\n", result / 256);    printf("Pan servo reading timer count: %d\n", result % 256);        /* Read Tilt servo setpoint */    result = oap_i2c_smbus_read_byte_data(file, READ_TILT_SERVO_SETPOINT_COMMAND);    if (result < 0) {        fprintf(stderr, "Error reading tilt servo setpoint\n");        close(file);        exit(EXIT_FAILURE);    }        printf("Tilt servo setpoint: %d\n", result);        /* Read Tilt servo actual */    result = oap_i2c_smbus_read_word_data(file, READ_TILT_SERVO_ACTUAL_COMMAND);    if (result < 0) {        fprintf(stderr, "Error reading tilt servo actual\n");        close(file);        exit(EXIT_FAILURE);    }        printf("Tilt servo actual driven position: %d\n", result / 256);    printf("Tilt servo reading timer count: %d\n", result % 256);        /* Read raw analog IR sensor */    result = oap_i2c_smbus_read_byte_data(file, READ_RAW_ANALOG_IR_SENSOR_COMMAND);    if (result < 0) {        fprintf(stderr, "Error reading raw IR sensor analog value\n");        close(file);        exit(EXIT_FAILURE);    }        printf("IR sensor raw ADC bitcount: %d\n", result);        /* Read 8-bit timer count */    result = oap_i2c_smbus_read_byte_data(file, READ_CURRENT_TIMER_COUNT_COMMAND);    if (result < 0) {        fprintf(stderr, "Error reading timer count\n");        close(file);        exit(EXIT_FAILURE);    }        printf("8-bit free running timer tick count: %d\n", result);        /* IR Triggered Event Status */    result = oap_i2c_smbus_read_byte_data(file, READ_IR_TRIGGERED_EVENT_STATUS_COMMAND);    if (result < 0) {        fprintf(stderr, "Error reading IR triggered event status\n");        close(file);        exit(EXIT_FAILURE);    }        printf("IR Triggered Event Stored: %s\n", result ? "yes" : "no");    if (result) {        /* IR Triggered Event is stored - get the details */        /* IR triggered event pan actual driven position */        result = oap_i2c_smbus_read_byte_data(file, READ_IR_TRIGGERED_EVENT_PAN_ACTUAL_COMMAND);        if (result < 0) {            fprintf(stderr, "Error reading IR triggered event pan actual\n");            close(file);            exit(EXIT_FAILURE);        }            printf("IR Triggered Event Pan position: %d\n", result);        /* IR triggered event ADC bitcount */        result = oap_i2c_smbus_read_byte_data(file, READ_IR_TRIGGERED_EVENT_ANALOG_COMMAND);        if (result < 0) {            fprintf(stderr, "Error reading IR triggered event analog bitcount\n");            close(file);            exit(EXIT_FAILURE);        }            printf("IR Triggered Event ADC bitcount: %d\n", result);        /* IR triggered event timer */        result = oap_i2c_smbus_read_byte_data(file, READ_IR_TRIGGERED_EVENT_TIMER_COUNT_COMMAND);        if (result < 0) {            fprintf(stderr, "Error reading IR triggered event timer\n");            close(file);            exit(EXIT_FAILURE);        }            printf("IR Triggered Event timer count: %d\n", result);        printf("IR Triggered Event is now locked. Use 'oap-head r' to reset.\n");    }        /* Maximum Change Per Period */    result = oap_i2c_smbus_read_byte_data(file, READ_MAX_CHANGE_PER_PERIOD_COMMAND);    if (result < 0) {        fprintf(stderr, "Error reading max change per period\n");        close(file);        exit(EXIT_FAILURE);    }        printf("'Maximum Change Per Period' configuration setting: %d\n", result);    /* IR Sensor Neutral */    result = oap_i2c_smbus_read_byte_data(file, READ_IR_SENSOR_NEUTRAL_VALUE_COMMAND);    if (result < 0) {        fprintf(stderr, "Error reading IR sensor neutral\n");        close(file);        exit(EXIT_FAILURE);    }        printf("'IR Sensor Neutral' configuration setting: %d\n", result);    /* IR sensor trigger */    result = oap_i2c_smbus_read_byte_data(file, READ_IR_SENSOR_TRIGGER_THRESHOLD_COMMAND);    if (result < 0) {        fprintf(stderr, "Error reading IR sensor trigger\n");        close(file);        exit(EXIT_FAILURE);    }        printf("'IR Sensor Trigger Threhsold' configuration setting: %d\n", result);    /* IR triggered event mode */    result = oap_i2c_smbus_read_byte_data(file, READ_IR_TRIGGERED_EVENT_MODE_COMMAND);    if (result < 0) {        fprintf(stderr, "Error reading IR triggered event mode\n");        close(file);        exit(EXIT_FAILURE);    }        printf("'IR Triggered Event Mode' configuration setting: %d\n", result);}int check_params(int argc, char* argv[]){    if ((argc == 2) && (strcmp(argv[1], "s") == 0))         return 1;        if ((argc == 3) && (strcmp(argv[1], "p") == 0))         return 1;        if ((argc == 3) && (strcmp(argv[1], "t") == 0))         return 1;        if ((argc == 3) && (strcmp(argv[1], "c") == 0))         return 1;        if ((argc == 3) && (strcmp(argv[1], "n") == 0))         return 1;        if ((argc == 3) && (strcmp(argv[1], "i") == 0))         return 1;        if ((argc == 2) && (strcmp(argv[1], "r") == 0))         return 1;        if ((argc == 3) && (strcmp(argv[1], "m") == 0))         return 1;        if ((argc == 2) && (strcmp(argv[1], "z") == 0))         return 1;        if ((argc == 2) && (strcmp(argv[1], "a") == 0))         return 1;        if ((argc == 2) && (strcmp(argv[1], "d") == 0))         return 1;        return 0;}void read_config(){    config_t conf;    char s_device_address[4];    /* Open configuration file */    if (!config_open(&conf, CONFIG_FILENAME, C_READ)) {        fprintf(stderr, "Unable to open configuration file %s for reading\n",                 CONFIG_FILENAME);        exit(EXIT_FAILURE);    }    /* Read configuration settings */    if (!config_read(&conf, "I2C", "DeviceName", filename, 100)) {        fprintf(stderr,         "Unable to read DeviceName from [I2C] section of configuration file\n");        config_close(&conf);        exit(EXIT_FAILURE);    }        if (!config_read(&conf, "Head Control Module", "I2CAddress",                 s_device_address, 4)) {        fprintf(stderr,         "Unable to read I2CAddress from [Head Control Module] section of\n"         "configuration file.\n");        config_close(&conf);        exit(EXIT_FAILURE);    }    device_address = atoi(s_device_address);    /* Close configuration file */    config_close(&conf);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -