首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux基础(串口编程)

虽然以太网接口和USB接口也是以一个串行流进行数据传送的,但是串口连接通常特指那些与RS-232标准兼容的硬件或者调制解调器的接口。废话少讲,今天来解剖使用串口时的编程代码细节。...上面的代码是使用串口的第一步,来解释下都是啥意思。...来瞧瞧: 第21-22行,定义了一个用来配置串口属性的结构体: struct termios serial; bzero(&serial, sizeof(serial)); 第24行,将串口设置为raw...cfsetispeed(&serial, B9600); cfsetospeed(&serial, B9600); 第28-32行,设置串口控制属性(c_cflag),其中: serial.c_cflag...: tcsetattr(fd,TCSANOW,&serial); 当然,上面的 fd 就是系统中的某一个你想要设置的成上面那样的属性参数的串口,比如就拿粤嵌GEC210开发板来说,他有四个串口,其中第一个就已经被用于终端控制了

12.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

基于STM32的串口循环队列

先说串口,这个应该都知道吧!(不知道的童鞋,先把基本功学好)大部分单片机或者处理器都会带一个或者多个串口,方便进行数据的通信。 那么串口的循环队列是什么?这里以STM32的串口为例,进行解释说明。...假设串口一次只发一个数据,这倒是简单了,每次只对这一个数据进行判断,然后处理相关指令。...假设你定义了一个30个元素的数组a[30],每次串口收到数据都往里面存,存的时候地址加一。这个操作很简单吧,应该是都会的。 但是取的时候怎么取?...如此一来,相当于把这个数组的头和尾连了起来,成了一个封闭的环,这种处理方式,就叫做串口的循环队列。只要确保数组够大,处理速度够快,那么头和尾就不会撞上。当然,程序上也要对这种意外情况做一个处理。...以上,就是串口循环队列的一个简介,如果有写的不好的,欢迎留言指正。当然,方法千千万,不一定只能用这种。最后,借用流浪地球的一句经典台词作为结尾: 方法千万条,稳定第一条。 代码不规范,码农两行泪。

97620

Linux 查看本机串口方法

最近在了解嵌入式方面的知识,就随笔记录一下: 查看Linux本机串口: 1、查看串口是否可用    可以对串口发送数据比如对com1口,echo /dev/ttyS0 2、查看串口名称使用    ls...-l /dev/ttyS*   一般情况下串口的名称全部在dev下面,如果你没有外插串口卡的话默认是dev下的ttyS*,一般ttyS0对应com1,ttyS1对应com2,当然也不一定是必然的; 3、...查看串口驱动    cat/proc/tty/drivers/serial 4、查看串口设备    dmesg | grep ttyS* 5、查一下板子上的串口有没有设备    grep tty/proc.../dev下应该有一个USB串口:/dev/ttyUSB0. 当一个串行卡或数据卡被侦测到时,它会被指定成为第一个可用的串行设备。...PC上的串口一般是ttyS,板子上Linux串口一般叫做ttySAC; 串口使用: 如果需要查看这个串口设备输出: cat ttyUSB0 如果需要对这个设备输入: echo yaoxu > ttyUSB0

21.5K20

来看看加入环形队列串口发送数据

现在的想法是需要有个缓存,我不停的往缓存里面写数据,串口发送中断不停的从缓存里面取出来,然后发出去! 直接利用环形队列是很好的选择....我把发送的数据写入环形队列,然后打开串口发送中断 串口发送中断里面判断环形队列里面的数据个数是不是大于0,如果是就读出来发出去! 二,定义一些变量 ? ? ? ?...三,然后把数组交给 环形队列变量去管理 ? 四,串口发送中断里面就是这样 ? 五,修改一下环形队列的一个函数,填充完数据就打开中断 ? 六,现在测试 ? ? 现在的数据不会出现丢失!...注意:即使是使用了环形队列也不要在主循环里面 ? 环形队列缓存也有限! 只要波特率定好了,中断发送每一位数据的时间是一定的,发送数据就一定需要时间! 现在是直接造成死机, ?...其实造成死机的原因是因为环形队列里面使用的printf, ? 而printf 并不是中断发送,造成了冲突 ? 改一下 ? ?

1.8K20

Linux 串口的基本用法

查看Linux本机串口: 1、查看串口是否可用 如果需要查看这个串口设备输出: cat ttyUSB0 如果需要对这个设备输入: echo yaoxu > ttyUSB0 常用的调试工具有: minicom...cutecom Linux系统可视化串口应用软件,使用上与Windows系统串口调试工具。 picocom 效果上类似 minicom 的精简版,设置比较简单,还可以有背景颜色。...PC上的串口一般是ttyS,板子上Linux串口一般叫做ttySAC; 串口权限问题 临时调试解决 在使用串口进行通信时,经常需要使用指令来赋予用户读写的权限 $ sudo chmod 777 /dev...查看linux所有用户 使用 /etc/passwd 文件 使用任何一个像 cat、more、less 等文件操作命令来打印 Linux 系统上创建的用户列表。.../etc/passwd 是一个文本文件,其中包含了登录 Linux 系统所必需的每个用户的信息。

9.9K41

嵌入式Linux串口编程

简介 嵌入式Linux串口编程与Linux系统下的编程没有什么区别,系统API都是一样的。...嵌入式设备中串口编程是很常用的,比如会对接一些传感器模块,这些模块大多是RS232或者RS485接口,对于软件层面上来说,RS232与RS48区别不大。...RS232与RS485在使用上的区别,RS232是全双工的,只能对接一个设备串口设备。RS485是半双工的总线协议,一般可以挂多个传感器设备,半双工的意思是同时只能有一个设备向串口发数据。...用到的API函数 函数 说明 open 打开设备,用于打开串口设备 fcntl 修改设备描述符属性参数 isatty 检测打开的描述符是否指向一个终端 tcgetattr 用来获取串口终端参数 cfmakeraw...将终端设置为原始模式,该模式下所有的输入数据以字节为单位被处理 tcflush 用于清空输入、输出缓冲区 tcsetattr 设置串口终端参数 read 读取数据 write 写数据 close 关闭串口设备

13.1K20

Linux消息队列

什么是消息队列 消息队列可以分为队列和消息 队列 队列是从开始到结束,有序的排放消息。消息队列是用来在应用程序发送消息,队列中存放了一些待处理的消息。...消息队列的基本结构是简单的,有一个客户端应用程序称为生产者,创建消息,并将它们传送到消息队列。其他应用程序,称为消费者,连接到队列,并得到要处理的消息。...消息队列API 创建新消息队列或取得已存在消息队列 #include ------------------------------------ int msgget(key_t...如果该队列已经存在,返回该队列ID.IPC_CREAT & IPC_EXCL: 如果该队列不存在创建,如果存在返回失败EEXIST....IPC_SET该命令用来设置消息队列的属性,要设置的属性存储在buf中。IPC_RMID从内核中删除 msqid 标识的消息队列

4.2K30

Linux内核编程--消息队列

一,关于Linux中的IPC IPC的意思是“ 进程间通信机制”,Linux内核有三种常用IPC对象可以拿来做进程间通信--消息队列,共享内存,信号量。...这三种IPC对象在Linux内核中都以链表的形式存储,它们都有特定的ID来标识(消息队列标识符msqid、共享内存标识符shmid,信号量标识符semid)。...但是在多核系统上,为了避免产生高速缓存一致性问题,更推荐使用消息队列。 消息队列特点: (1)消息队列可认为是全局的一个链表,由消息队列标识符进行标识。...参考教程: 《UNIX环境高级编程第3版》 https://programs.team/linux-message-queue-programming.html https://www.tutorialspoint.com.../inter_process_communication/ https://programmer.ink/think/linux-message-queue-for-interprocess-communication.html

4.4K20

难道有环形队列串口发送数据就万事大吉了吗

2.环形队列虽然解决了一开始的中断发送数据覆盖问题,但是呢却引入了新的问题 ? 3.然后看看中断发送 ? 4.想没想明白是什么问题 ?  5.发送数据1 和发送数据2 之间没有延时.........咱做程序的时候经常碰到各个地方都需要发送串口的数据,但是如果两个发送函数一个先发送完,另一个紧接着就发送了..........好现在解决这个问题 主要目的就是发送的数据还需要管理一下,让发送的数据之间有时间间隔 好,再加个环形队列 这个环形队列呢,记录要发送的数据个数 现在就有两个环形队列, 一个环形队列数存储数据,就是咱一开始用的...另一个环形队列是存储这次要发送的数据个数 那么每次发送数据变为 ?...= RESET) { if(Usart1ManageSendDatLen>0 && rbCanRead(&Uart1rb)>0)//发送的数据个数大于0 ,环形队列可以读出来数据

76110

循环队列原理及在单片机串口通讯中的应用(一)

用数组创建一个普通队列,当有数据存储时,队列尾指针不断增加,直到空间用完,当数据出队列时,队列头指针不断增加,直至和队列尾相同时,所有数据完成出队列,那么这时候会引入一个问题,全部出队后,将无法继续入队...,这样的情况也叫做“假溢出”,即使数组中,明明还有空间可以利用,但是却无法使用(平时我们做串口接收的时候,往往是通过清零计数器,清空数组,重新接收来解决这一问题)。...相连接在一起,将这样形式的队列成为循环队列。...环列队列的是逻辑上将数组元素q[0]与q[MAXN-1]连接,形成一个存放队列的环形空间。 ? ?   环形队列设计的重要部分是,确定队列的状态,即队列时空还是满状态。...*/ { printf("顺序循环队列已经是空队列,不能再进行出队列操作!")

89420

使用picocm来进行Linux下的串口调试

主要原因就是minicom没有彩色文字,看着难受,特别是调试ARM Linux的时候233 安装 因为正常是在Debian系列的Linux发行版上面使用的(deepin或者ubuntu这些的,解决方案比较完善...然后使得这个设备能被picocom工具访问使用 sudo chmod 777 /dev/ttyUSBx 请自行将ttyUSBx替换为当前使用的串口设备 连接串口设备 下面是一般连接一个串口设备说使用的命令...参数讲解 -b: 设置波特率参数 /dev/ttyUSBx:串口设备,请替换为当前使用的串口设备 打开帮助提示页面 ?...需要注意的一点是,里面的命令提示都是说C-x什么的,其实C-就是由Ctrl+a转义过来的,正如帮助页面的C-h,就是用Ctrl a+h打开的,所以其他的命令也是同理 发送接收文件 如果直接使用上面的连接串口设备的命令直接去进行文件发送的话...例如使用ymode进行发送接收的例子 picocom --send-cmd "sb -vv" --receive-cmd "rb -vv" -b 115200 /dev/ttyUSBx 同样的,使用当前的串口设备文件

9.6K60

Spring boot串口通信,windows、linux,docker环境配置说明

1.Spring boot有转用于串口通讯包 该包网上教程大多都是监听串口获取数据,如果只接收数据,可以自行百度,该包使用方法 2.使用com.fazecast下的jSerialComm...(); //通过串口名称获取串口对象,Windows一般COM+数字,Liunx一般ttyUSB+数字 SerialPort.getCommPort("COM") //预设rts; serialPort.setRTS...,off为字节数组,返回写入的字节长度 serialPort.writeBytes(off, off.length); //读取串口输出内容,content为串口输出内容,返回读取长度 serialPort.readBytes...(content, content.length) //关闭串口 serialPort.closePort(); 3.docker容器配置 使用docker发布jar时,如果不映射本机设备,将导致无法访问串口...,所以最好指定特定串口

3.5K30

Linux进程间通信 消息队列

消息队列 是消息的链接表,存储内核中,由消息标识符标识。 --《UNIX环境高级编程》 简单理解,消息队列就是一堆消息的有序集合,并缓存于内核中。...,其中cmd指进行的操作,buf记录了消息队列的信息。...总结 消息队列在进程间通信的优势总结起来有以下几点: 缓存:数据较大的消息处理起来时间较长,此时将其写入消息队列更快,待系统空闲时再处理。提高系统任务执行效率。...送达:消息队列存储的消息,会一直保留在队列中直到消息被处理,且被取走后就会被队列释放。因此无论多少个进程在获取,每个消息仅会被处理一次。 排序:消息在队列中一直按照“先入先出”的顺序来执行。...异步:消息队列因为会缓存消息,且顺序处理不会丢失。因此多个进程可通过消息队列实现异步通信,互不阻塞。

4.5K40
领券