nuttx杂记

这篇具有很好参考价值的文章主要介绍了nuttx杂记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、设置自启动应用

修改deconfig文件下的“CONFIG_INIT_ENTRYPOINT”参数即可

2、消息队列使用

以下是Nuttx系统中使用queue_create函数创建队列的示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <mqueue.h>

#define QUEUE_NAME "/my_queue"
#define MAX_MSG_SIZE 256
#define MSG_BUFFER_SIZE (MAX_MSG_SIZE + 10)


/*队列生成者*/
void *producer(void *arg)  
{
    mqd_t mq;
    char buffer[MSG_BUFFER_SIZE];

    mq = mq_open(QUEUE_NAME, O_WRONLY);

    if (mq == -1) {
        perror("mq_open");
        exit(1);
    }

    printf("Producer: Enter message to send, 'exit' to quit\n");

    while(1) {
        fgets(buffer, MSG_BUFFER_SIZE, stdin);

        if (strncmp(buffer, "exit", 4) == 0) {
            break;
        }

        if (mq_send(mq, buffer, strlen(buffer), 0) == -1) {
            perror("mq_send");
        }
    }

    mq_close(mq);
    return NULL;
}

/*队列消费者*/
void *consumer(void *arg)
{
    mqd_t mq;
    char buffer[MSG_BUFFER_SIZE];
    ssize_t bytes_read;

    mq = mq_open(QUEUE_NAME, O_RDONLY);

    if (mq == -1) {
        perror("mq_open");
        exit(1);
    }

    while(1) {
        bytes_read = mq_receive(mq, buffer, MSG_BUFFER_SIZE, NULL);

        if (bytes_read == -1) {
            perror("mq_receive");
            continue;
        }

        printf("Consumer: Received message: %s", buffer);
    }

    mq_close(mq);
    return NULL;
}

int main(int argc, char **argv)
{
    pthread_t prod_thread, cons_thread;
    struct mq_attr attr;
    attr.mq_flags = 0;
    attr.mq_maxmsg = 10;
    attr.mq_msgsize = MAX_MSG_SIZE;
    attr.mq_curmsgs = 0;

    mq_unlink(QUEUE_NAME);

    mqd_t mq = mq_open(QUEUE_NAME, O_CREAT | O_EXCL | O_RDONLY, 0666, &attr);

    if (mq == -1) {
        perror("mq_open");
        exit(1);
    }

    mq_close(mq);

    mq = mq_open(QUEUE_NAME, O_CREAT | O_EXCL | O_WRONLY, 0666, &attr);

    if (mq == -1) {
        perror("mq_open");
        exit(1);
    }

    pthread_create(&prod_thread, NULL, producer, NULL);
    pthread_create(&cons_thread, NULL, consumer, NULL);

    pthread_join(prod_thread, NULL);
    pthread_join(cons_thread, NULL);

    mq_close(mq);
    mq_unlink(QUEUE_NAME);

    return 0;
}


该示例代码创建了一个名为“my_queue”的消息队列,允许最多10个消息,每个消息的最大大小为256字节。它使用pthread库创建两个线程:一个生产者和一个消费者。生产者从标准输入读取消息并将其发送到消息队列中,而消费者从消息队列中读取消息并将其打印到标准输出中。文章来源地址https://www.toymoban.com/news/detail-413367.html

到了这里,关于nuttx杂记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux修改hadoop配置文件及启动hadoop集群详细步骤

    目录 一、配置Hadoop环境 1.查看Hadoop解压位置 2.配置环境变量 3.编辑环境变量 4.重启环境变量 5.查看Hadoop版本,查看成功就表示Hadoop安装成功了 二、修改配置文件 1.检查三台虚拟机: 2.切换到配置文件目录 3.修改 hadoop-env.sh 文件 4.修改 core-site.xml 文件 5.修改 mapred-site.xml 文件

    2024年02月03日
    浏览(61)
  • ubuntu下自启动设置,为了开机自启动launch文件

    每隔5秒钟启动一个launch文件,也可以直接在一个launch文件中启动多个,这里为了确保启动顺利,添加了一些延时 (1)、进入主菜单界面在搜索框中输入startup applications (2)、按照如下提示,加入后重启启动即可实现自启动

    2024年02月10日
    浏览(44)
  • 【WSA】启动 Windows 安卓子系统的内置设置应用

            Windows 11 终于推送了安卓子系统,本想在 Windows 上尝试基于无障碍服务的脚本运行,结果发现微软将无障碍服务入口隐藏了,即使通过软件触发,也是跳转到 Windows 系统的无障碍设置页面。         既然无法通过应用跳转到无障碍服务设置页面,那就只能通过

    2024年02月12日
    浏览(59)
  • windows运行.bat文件且设置为开机启动,不显示窗口

    步骤1;为 脚本 设置桌面快捷方式 步骤2: 将生成的快捷方式复制/剪切到以下文件夹 C:ProgramDataMicrosoftWindowsStart MenuProgramsStartup 这样就能开机自动启动了,愉快使用吧! 创建vbs文件

    2024年02月12日
    浏览(83)
  • Ubuntu18.04修改file descriptors(文件描述符限制),解决elasticsearch启动报错问题

    最近在学习elasticsearch,使用的平台是Ubuntu18.04,在部署过程中的坑记录一下。 下载安装的过程就不说了,在启动es的时候报错 1 max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535] 看了下网上给的解决方案都是修改vim /etc/security/limits.conf,添加配置 1 2 * s

    2024年02月13日
    浏览(43)
  • windows默认文件(桌面、下载、文档等)设置为C盘根路径后怎么修改回去

    在系统C盘存储不够时,我们常常会把系统自带的文件路径移动的除C盘以外的其他盘去,但是一不小心就讲文件移动的盘的根路径去了,这时候再通过简单的跟换路径是更换不了的,系统这些自带的桌面、下载、图片、文档、音乐、视频本身就是一个文件夹,只是windows系统将

    2024年02月04日
    浏览(46)
  • Linux修改目录文件的属主(属组)命令、设置宿主目录并删除原来宿主目录

    1.属主(属组)的目的: 2.属主(属组)的用处: 3.修改属主和属组的用途: 1. 权限控制: 2. 用户管理: 3. 文件管理: 4.修改目录或文件的属主和属组的命令: 1. chown命令: 2. chgrp命令: 5.设置宿主目录并删除原来宿主目录: 1.设置宿主目录的原因: 1. 数据持久性: 2. 共享数

    2024年02月09日
    浏览(44)
  • centos格式化xfs文件系统格式并设置自动启动挂载磁盘

    非全方位资料,学习实践而来,欢迎参考学习 要将 /dev/sdb1 分区快速格式化为 XFS 文件系统并设置开机自动挂载,可以按照以下步骤进行操作: 查看已连接的硬盘列表,主要是设备名称(如 /dev/sda)、分区信息和容量。 安装文件系统工具。 快速格式化分区为 XFS 文件系统,强

    2024年02月04日
    浏览(64)
  • springboot如何用jar包启动,同时为不同机房设置不同的配置文件

    示例代码: 利用maven-assembly-plugin,抽取配置文件到conf目录下, 示例代码: 最终效果如下: 示例代码如下: 最终达到的效果是: 将springboot的jar包解压后,可以看到.MF文件中加了一个类路径 ../conf 特别注意: java -jar XX 使用-jar启动java进程的,-classpath不会生效了,如果要加类

    2024年02月05日
    浏览(33)
  • WindwosServer系统一些设置【网卡驱动修复】【安装UWP应用】【服务器管理取消开机自启动】

    这里以2022为例: 此教程只针对I219-V/LM网卡! 小知识: 当电脑没网时,将手机和电脑用USB数据线连接 打开设置; 搜索“USB网络共享”; 打开,在右边弹出提示,点‘是’; 即可连接网络 下载文件:I219-V/LM安装程序 (I219-V和LM通用,不用担心兼容问题) 下载之后不要运行

    2024年02月10日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包