資源簡介
自定義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
評論
共有 條評論