ARM-qt 开发,串口配置

2023-05-16

在使用终端开发使用串口时,配置串口的方式尤为重要

1、要使用串口就先打开串口

 int OpenUartPort(const char *UartPort)
 {
     int fd;
     fd = open(UartPort,O_RDWR|O_NONBLOCK);
     if(fd<0)
     {
         perror("open serial port");
         return -1;
     }
     if(isatty(fd) == 0)
     {
         perror("this is not a terminal device");
         return -1;
     }
     return fd;
 }
isatty,函数名。主要功能是检查设备类型 , 判断文件描述词是否是为终端机。

2、使用串口就要配置串口

int SetUartConfig(int fd, int Baud)
{
    struct termios new_cfg,old_cfg;
    if(tcgetattr(fd,&old_cfg) !=0 )
    {
            perror("tcgetattr");
            return -1;
    }
    new_cfg = old_cfg;
    new_cfg.c_cc[VTIME] = 0;
    new_cfg.c_cc[VMIN]  = 0;//控制字符
    new_cfg.c_iflag = 0;//输入模式标志
    new_cfg.c_oflag = 0;//输出模式标志
    new_cfg.c_lflag = 0;//本地模式标志

    switch(Baud)
    {
       case 9600:new_cfg.c_cflag = B9600 | CS8 | CLOCAL | CREAD;break;//控制模式标志
       case 19200:new_cfg.c_cflag = B19200 | CS8 | CLOCAL | CREAD;break;
       case 115200:new_cfg.c_cflag = B115200 | CS8 | CLOCAL | CREAD;break;
     }
     tcflush(fd,TCIOFLUSH);
     if(tcsetattr(fd,TCSANOW,&new_cfg) !=0)
     {
        perror("tcsettattr");
        return -1;
     }
     return 0;
}
tcflush函数是 Unix终端I/O函数。作用:清空终端未完成的输入/输出请求及数据。
tcgetattr是一个函数,用来获取终端参数,成功返回零;失败返回非零,发生失败接口将设置 errno错误标识。
相关函数:tcsetattr用来设置终端参数。

3、从串口中读取数据

int ReadUartPort(int fd, int Num, u_int8_t *Buff)
{
    int res = 0;
    memset(Buff,0,Num);
    res = read(fd,Buff,Num);
    return res;            
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ARM-qt 开发,串口配置 的相关文章

  • 在嵌入式设备上使用new或malloc引起的段错误[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • C 嵌入式应用程序中 time() 函数的问题

    我在用time 在 ARM 微控制器上 处理器一到达此函数就会重新启动 奇怪的是 当我处于调试模式时 代码运行得很好 但一旦我想将其应用到独立模式 我就会遇到重置 我是否忽略了什么 这个功能有替代品吗 代码部分是这样的 include
  • ARM 中只有两个操作数的 ADD 或 SUB

    我正在学习ARM汇编语言 我读过 ADD 应该有 3 个操作数 然而 我见过很多案例 现实中只有两种 例如 STR R1 SP 0x20 var 1C LDR R1 a lua 0x1DE4E6 MOVS R0 R4 haystack AD
  • M1 MacBook Pro 上的 Android Studio 无法使用 ABI armeabi-v7a 模拟系统映像

    我的 M1 Macbook Pro 上的 Android Studio 可以很好地模拟 ABI arm64 v8a 的所有系统映像 API 24 29 30 31 但是 它无法使用 ABI armeabi v7a 运行所有映像 例如 API
  • 基于 Windows 8 ARM 的平板电脑上的 VB6

    随着 Windows 8 将支持 VB6 我的问题是 Microsoft 是否在任何地方表示 是或否 VB6 应用程序将在基于 ARM 的平板电脑上运行 如果没有 是否有任何 ARM 模拟器 以便我们可以在 Windows 8 ARM 平板
  • AOSP 的“午餐”组合是什么意思?我需要选择什么?

    我是 Android 设备 ROM 开发的新手 无论如何 我现在正在为具有 64 位处理器的中国设备构建 AOSP 我按照 source android com 上的菜单进行操作 当我运行 午餐 命令时 终端显示 午餐菜单 选择一个组合 我
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • 英特尔的最后分支记录功能是英特尔处理器独有的吗?

    最后分支记录是指存储与最近执行的分支相关的源地址和目标地址的寄存器对 MSR 的集合 它们受英特尔酷睿 2 英特尔至强和英特尔凌动处理器系列的支持 http css csail mit edu 6 858 2012 readings ia3
  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s
  • ARM NEON 矢量化失败

    我想在 ARM cortex a9 上启用 NEON 矢量化 但在编译时得到以下输出 未矢量化 不支持相关 stmt D 14140 82 D 14143 77 D 14141 81 这是我的循环 void my mul float32 t
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • 上下文切换到安全模式(arm trustzone)的成本是多少

    我试图了解在arm中可信 安全 和非安全模式之间来回切换的成本 从非安全世界转移到安全世界时到底需要发生什么 我知道需要设置 ns 位 基于某些特殊指令 需要刷新和更新页表 刷新和更新处理器缓存 还有什么需要发生的吗 处理器缓存 它们是分段
  • .ko 文件是如何构建的

    我正在尝试将我自己的驱动程序移植到Beagle 板 xm arm cortex A8 在移植时我试图弄清楚如何 ko文件实际构建 在我们的Makefile我们只有一个命令来构建 o file 怎样是一个 ko文件已建立 使用Linux 2
  • GCC:如何在 MCU 上完全禁用堆使用?

    我有一个在基于 ARM Cortex M 的 MCU 上运行并用 C 和 C 编写的应用程序 我用gcc and g 编译它并希望完全禁用任何堆使用 在 MCU 启动文件中 堆大小已设置为 0 除此之外 我还想禁止代码中意外使用堆 换句话说
  • 错误:-march= 开关的值错误

    我写了一个Makefile 但无法让它工作 我有一个选项应该选择编译到哪个处理器 然而 当我跑步时make从命令行它说 tandex tandex P 6860FX emulators nintendo sdks 3DS SDK HomeB
  • ARM 汇编:从 STDIN 获取字符串

    我目前正在学习 CS 课程 我们刚刚开始在 Raspberry Pi 上使用 ARM Assembly 事实证明这相当困难 想知道是否有人可以提供帮助 我当前的任务是从 stdin 获取一个字符串 使用 scanf 并计算其中的字符数 然后
  • ARM、VFP、浮点、惰性上下文切换

    我正在为 ARM 处理器 Cortex A9 编写操作系统 我正在尝试实现浮点寄存器的延迟上下文切换 这背后的想法是 浮点扩展最初对线程禁用 因此不需要在任务切换上保存浮点上下文 当线程尝试使用浮点指令时 会触发异常 然后 操作系统启用浮点
  • 当我尝试在 Armv8 程序集中分配数组时,执行冻结

    所以我正在用汇编语言进行编程 这只是一个简单的代码 这样我就可以学习如何分配数组 以便稍后在 NEON 编程中使用它们 ASM FUNC FPE data balign 8 array skip 80 array1 word 10 20 3
  • 2022年Android CPU架构分布(armeabi-v7a vs arm64-v8a)

    有没有关于 2022 年 Android 设备上的架构使用情况的官方信息 我有一个支持armeabi v7a 和arm64 v8a 的应用程序 我想要放弃对armeabi v7a的支持并且仅支持 64 位设备 arm64 v8a 但我找不到
  • 支持 ARM 上的 Windows 10 桌面应用程序 - MFC 和 COM 以及 OPOS 可以工作吗?

    我试图了解将在 x86 Windows 10 上运行的 C MFC 应用程序移植到具有 Qualcomm Snapdragon 处理器的 ARM Windows 10 设备的障碍 32位应用程序具有以下特点 MFC 与 C 用于用户界面 C

随机推荐

  • VMware下Linux无法播放声音的解决方案

    问题背景 宿主机环境 xff1a Windows 10 VMware Workstation版本 xff1a VMware Workstation 12 VMware Workstation 15 客户机环境 xff1a CentOS 7
  • pip更新及Requirement already up-to-date解决方法

    pip更新及Requirement already up to date解决方法 文 xff1a 铁乐与猫 2018 9 11 更新命令 将pip更新到最新版本 python m pip install upgrade pip Anacon
  • 如何高效的使用适配器Adapter

    如何高效的使用适配器Adapter 当我们在使用ListView GridView时 xff0c 都会给其设置相应的适配器 xff0c 用来给其设置数据 xff0c 会去继承BaseAdapter xff0c 重写getCount getI
  • kotlin 没有@Parcelable注解

    在使用kotlin的时候 xff0c 有的时候需要对实体类进行序列化的操作 序列化的方式就两种 xff0c 一种是Serializable xff0c 一种是Parcelable 在android中 xff0c 基本都是使用的Parcela
  • Android studio3.0+ 编译Lame库(CMake方式)

    最近在学习音视频方面的知识 xff0c 购买了音视频开发进阶指南 xff0c 在交叉编译LAME库的时候 xff0c 书中使用的还是旧版本的编译方式 xff0c 现在android studio在2 2以后就开始使用CMake的编译方式了
  • 打印正整数n拆分的所有情况

    题目 xff1a 把一个正整数n拆分成若干个正整数的相加 xff0c 列出所有组合 例如 xff1a 4 61 4 4 61 1 43 3 61 2 43 2 4 61 1 43 1 43 2 4 61 1 43 1 43 1 43 1 动
  • redis实现积分排行榜

    在项目开发中常常遇到一些积分排行的问题 一个典型的积分行榜包括以下常见功能 xff1a 能够记录每个用户的分数 xff1b 能够对用户的分数进行更新 xff1b 能够查询每个用户的分数和名次 xff1b 能够按名次查询排名前N名的用户 xf
  • 如何减小Ubuntu 16.04系统下VMware虚拟机硬盘空间占用过大问题

    VMware虚拟机占用硬盘空间只增大不减少 xff0c 即使你删除文件 xff0c 占用的硬盘空间也不释放 用了一段时间后空间不够了 解决办法 方法一 在vmware的安装目录下 xff0c 有一个vmware vdiskmanager 关
  • 使用Redis实现积分排行榜,并支持同积分按时间排序

    排行榜这个功能很常见 xff0c 多用于激励用户活跃和拉新 xff0c 比如CSDN平台实现的周榜 xff0c 按照每周文章总阅读量进行排名 xff0c 用排名和奖品激励用户持续在平台上输出高质量内容 最近笔者也做了一个积分排行榜的功能 x
  • 神奇的排序

    代码 xff1a 此方法只能对互不相同的正整数排序 xff0c 也成为神奇的排序 xff0c 从编程珠玑中看到的 public class magicSort public static void main String args TODO
  • 学会自己测天气之 起卦篇

    找三个一元的硬币 xff0c 找一个安静的没人的地方 xff0c 把钱合在掌内反复摇动 xff0c 心中反复问神灵你想问的事情 然后抛出硬币 xff0c 记录反面 xff08 有花的那面 xff09 的数量 xff08 总共有四种情况 xf
  • Java 使用 jdbc 连接 mysql

    首先要下载Connector J地址 xff1a http www mysql com downloads connector j 这是MySQL官方提供的连接方式 xff1a 解压后得到jar库文件 xff0c 需要在工程中导入该库文件
  • 找零钱的方案数以及所需最少张数的钞票的方案

    问题描述 xff1a 我们知道人民币有1元 xff0c 2元 xff0c 5元 xff0c 10元 xff0c 20元 xff0c 50元 xff0c 100元这几种表示 xff0c 现在给你一个整数 n 让你找零 xff0c 求出有多少种
  • 2017京东校招编程题 烽火台

    描述 xff1a n 个 烽火台围成一个圈 xff0c 任意两个烽火台只要中间的烽火台比他们两个都低就能看见彼此 xff0c 当然相邻的肯定能看见对面 xff0c 求能看见彼此的对数 输入 5 烽火台的个数 3 2 5 4 1 烽火台的高地
  • 利用Oh-My-Zsh打造你的超级终端

    什么是Zsh Zsh是一款强大的虚拟终端 xff0c 既是一个系统的虚拟终端 xff0c 也可以作为一个脚本语言的交互解析器 Zsh的一些特性 兼容bash xff0c 原来使用bash的兄弟切换过来毫无压力 强大的历史纪录功能 xff0c
  • netty源码分析(二十五)Netty自定义协议与TCP粘包拆包问题解决之道

    上一节说了TCP的粘包和拆包 xff0c 用一个实例的方式做了说明 xff0c 那么在netty里面是怎么解决粘包和拆包问题呢 xff0c 这就需要编解码器 xff0c 我们写一个简单的自动以协议的demo xff0c 说明一下编解码器在解
  • Netty UDP通信Demo

    1 服务端代码 package udp import io netty bootstrap Bootstrap import io netty buffer ByteBuf import io netty buffer Unpooled i
  • 用FTP修改网站服务器内容

    用FTP协议可以登陆网站的服务器对网站内容进行维护 xff0c 如果直接从网页登陆可以进行的操作太少 xff0c 所以通常使用一些FTP客户端进行维护操作 常用的FTP客户端有很多 xff0c 个人觉得FileZila比较容易 xff0c
  • Ubuntu 16.04 安装Java jdk-8u171-linux-x64.tar.gz 教程

    一 xff0c 在线安装java 1 打开终端 xff0c 输入 xff1a sudo add apt repository ppa webupd8team java sudo apt get update sudo apt get ins
  • ARM-qt 开发,串口配置

    在使用终端开发使用串口时 xff0c 配置串口的方式尤为重要 1 要使用串口就先打开串口 int OpenUartPort const char UartPort int fd fd 61 open UartPort O RDWR O NO