项目需要通过串口传输音频数据,由于音频数据包含不可显示的字节,属于二进制数据流,因此需要对linux端的串口读取程序设定一些参数。完整的串口配置代码如下:

int fd = open("/dev/ttyACM1", O_RDWR | O_NOCTTY | O_NDELAY, 0); //打开串口设备节点
if(fd <= 0)
{return NULL;
}
set_config(fd, 3000000); //第二个参数是波特率
tcflush(fd, TCIFLUSH);int set_config(int fd, int baud_rate)
{struct serial_struct ss; ioctl(fd, TIOCGSERIAL, &ss);ss.xmit_fifo_size = 102400;ioctl(fd, TIOCSSERIAL, &ss);struct termios cfg;tcgetattr(fd, &cfg);cfsetispeed(&cfg, baud_rate);cfsetospeed(&cfg, baud_rate);//没有以下,会把很多不可显示的字符处理成特殊含义从而收不到正确的二进制数据cfg.c_cflag |= CLOCAL | CREAD;cfg.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);cfg.c_oflag &= ~OPOST;cfg.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);tcsetattr(fd, TCSANOW, &cfg);return 0;
}

然后开始读数据,代码如下:

while(true)
{int len = read(fd, data, 1024);if(len <= 0){usleep(10000);continue;}//在这里解析长度为len个字节的数据
}

参考链接:https://blog.csdn.net/dllbl/article/details/4793156

Arm Linux平台串口通信,二进制数据流相关推荐

  1. 嵌入式基于Linux电机控制,基于嵌入式arm+linux平台的直流电机调速控制系统.pdf

    2012--2013 学年第 二 学期 物电 学院期末考试卷 嵌入式系统与应用 学号 : 姓名 : 班级 : 成绩: 评语: 装 订 (考试题目及要求) 嵌入式大作: 采用实验箱上的电位器作为信号输入 ...

  2. arm Linux 低成本方案,参赛作品《低成本基于ARM+Linux平台搭建web服务器的物联网学习板》...

    [报名阶段需要填写的内容] 1. 参赛者姓名(必填项): 王徕泽 2. 单位或学校名称(选填项): 徕泽电子工作室 3. 当前职务或职称(选填项): 室长 4. 参赛作品的名字(必填项): 低成本基于 ...

  3. linux java web.pdf,Java Web应用在ARM Linux平台上的实现.pdf

    Java Web应用在ARM Linux平台上的实现.pdf lSSN1009-3044 and KnowledgeTechnology电■知识与技术 Computer l-5690963 V01.5 ...

  4. Linux (Android) 串口通信教程

    Demo功能 在学习Linux的串口通信程序之前,我们先来看看Demo的效果,这样比先来一大堆串口知识介绍更加有学习动力,毕竟是能运行的.本文章不会讲解串口的原理,如何接线等,只会讲解在Linux(A ...

  5. linux 嵌入式串口通信设计目的,基于linux的嵌入式串口通信.doc

    PAGE 天津电子信息职业技术学院 <嵌入式软件编程>课程报告 课程名称:基于linux的嵌入式串口通信 课程代码: 115229 姓 名: 甘琦 学 号: 48 专 业: 物联网应用技术 ...

  6. linux 嵌入式串口通信,基于linux的嵌入式串口通信综述.doc

    PAGE 天津电子信息职业技术学院 <嵌入式软件编程>课程报告 课程名称:基于linux的嵌入式串口通信课程代码: 115229 姓 名: 甘琦 学 号: 48 专 业: 物联网应用技术 ...

  7. (二)树莓派Linux环境串口通信编程--AT指令集的发送和接收

    文章目录 一.前言 二.要了解的知识 2.1 termios结构体 2.2 tcflush() 2.3 cfsetispeed()与cfsetospeed() 三.流程图设计与代码实现 serial_ ...

  8. Linux c语言虚拟串口,利用socat和cutecom实现Linux虚拟串口通信

    (1)打开终端,输入 sudo apt-get install socat 等待socat安装完成- (2)输入 socat -d -d pty,raw,echo=0 pty,raw,echo=0 我 ...

  9. linux下串口通信程序,关于Linux下串口通信的一点心得

    1. 打开串口 与其他的关于设备编程的方法一样,在 Linux 下,操作.控制串口也是通过操作起设备文件进行的.在 Linux 下,串口的设备文件是 /dev/ttyS0 或 /dev/ttyS1 等 ...

最新文章

  1. android+图标闪烁动画,如何在android中闪烁通知图标? [DONE]
  2. 技术 | 入门机器学习必须知道的6件事,你可未必都了然于心了
  3. 自动化测试系列-自动化测试框架那些事儿
  4. 重读ORB_SLAM之Tracking线程难点
  5. matlab神经网络3:模式分类
  6. yield的用法详解
  7. 使用URL在线语音合成
  8. c语言程序为什么运行一半就自动关闭了,C语言为什么程序运行一半就出现停止工作...
  9. etmvc mysql乱码_etmvc中集成spring使用druid连接池
  10. 华为:2021数字化转型,从战略到执行.pdf(附103页pdf下载链接)
  11. Flink官方文档学习(三):Standalone Cluster 集群部署
  12. 资料 |《深度学习500问》,川大优秀毕业生的诚意之作
  13. STM32库中自定义的数据类型
  14. html页面网页打开乱码怎么解决方法,网页乱码怎么解决?
  15. axure中继器求和_Axure学习笔记:中继器之价格统计
  16. phpcms 文件:index.html 不可写,phpcms uploadfile不可写怎么办
  17. 【图像增强】灰度图与RGB图Clahe的python实现
  18. 2015年ps计算机试题,2015年3月全国计算机一级考试ps模拟试题及答案(二).doc
  19. Mysql数据库索引的理解及聚簇索引和非聚簇索引的区别
  20. Dreamweaver CS6代码如何自动缩进?

热门文章

  1. 通过PHP(socket_select)阻塞函数实现公共即时聊天
  2. 耐用品 durable goods
  3. UESTC - 1057 秋实大哥与花 线段树模板题
  4. uni-app App打包
  5. 【开源之路】温蒂、一次简单的尝试
  6. 吊炸天的 Docker 图形化工具 Portainer,必须推荐给你
  7. 多个Filter过滤器如何确定执行先后顺序
  8. NotePad++ 不能使用NPP HexEdit
  9. 利用ESP8266制作环境监测系统+APP inventor制作手机App实时显示
  10. 福禄克DSX2-5000 CH电缆认证测试仪的不同寻常之处