• 大小: 5KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: 其他
  • 标签: pixhawk  pix  uart  串口  

资源简介

自定义uart的数据并发送到pixhawk,pixhawk能够传到qgc上

资源截图

代码片段和文件信息

/*
 * read_uart_sensor.c
 * 
 * read sensor through uart
 */

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
// #include 
#include 
#include nk_log.h>
#include 

#include 


__EXPORT int read_uart_sensor_main(int argc char *argv[]);


static bool thread_should_exit = false; /*Ddemon exit flag*/
static bool thread_running = false;  /*Daemon status flag*/
static int daemon_task;
struct uart_pos_s uart_data;
orb_advert_t mavlink_uart_pub ;
orb_advert_t uart_pub;
/**
 * Main loop
 */
int read_uart_thread_main(int argc char *argv[]);
int read_uart(char data);

static int uart_init(const char * uart_name);
static int set_uart_baudrate(const int fd unsigned int baud);
static void usage(const char *reason);

int set_uart_baudrate(const int fd unsigned int baud)
{
    int speed;

    switch (baud) {
        case 9600:   speed = B9600;   break;
        case 19200:  speed = B19200;  break;
        case 38400:  speed = B38400;  break;
        case 57600:  speed = B57600;  break;
        case 115200: speed = B115200; break;
        default:
            warnx(“ERR: baudrate: %d\n“ baud);
            return -EINVAL;
    }

    struct termios uart_config;

    int termios_state;

    /* fill the struct for the new configuration */
    tcgetattr(fd &uart_config);
    /* clear ONLCR flag (which appends a CR for every LF) */
    uart_config.c_oflag &= ~ONLCR;
    /* no parity one stop bit */
    uart_config.c_cflag &= ~(CSTOPB | PARENB);
    /* set baud rate */
    if ((termios_state = cfsetispeed(&uart_config speed)) < 0) {
        warnx(“ERR: %d (cfsetispeed)\n“ termios_state);
        return false;
    }

    if ((termios_state = cfsetospeed(&uart_config speed)) < 0) {
        warnx(“ERR: %d (cfsetospeed)\n“ termios_state);
        return false;
    }

    if ((termios_state = tcsetattr(fd TCSANOW &uart_config)) < 0) {
        warnx(“ERR: %d (tcsetattr)\n“ termios_state);
        return false;
    }

    return true;
}


int uart_init(const char * uart_name)
{
    int serial_fd = open(uart_name O_RDWR | O_NOCTTY);

    if (serial_fd < 0) {
        err(1 “failed to open port: %s“ uart_name);
        return false;
    }
    return serial_fd;
}

static void usage(const char *reason)
{
    if (reason) {
        fprintf(stderr “%s\n“ reason);
    }

    fprintf(stderr “usage: read_uart_sensor {start|stop|status} [param]\n\n“);
    exit(1);
}

int read_uart_sensor_main(int argc char *argv[])
{
    if (argc < 2) {
        usage(“missing command“);
    }

    if (!strcmp(argv[1] “start“)) {
        if (thread_running) {
            warnx(“already running\n“);
            return 0;
        }

        thread_should_exit = false;
      

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-03-19 11:57  uart\
     文件        3493  2018-03-19 11:22  uart\nuttx_px4fmu-v2_default.cmake
     文件         276  2018-03-19 11:15  uart\uart_pos.msg
     目录           0  2018-03-19 11:21  uart\read_uart\
     文件        1920  2018-03-19 11:21  uart\read_uart\CMakeLists.txt
     文件        5657  2018-03-19 11:45  uart\read_uart\read_uart.c

评论

共有 条评论