搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
Monodyee
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Airtest笔记(一)
2
Hadoop文件系统的接口(二)_基于hadoop文件读写接口
3
IDEA插件CamelCase使用技巧:下划线转驼峰及大小写转换插件和快捷键_camelcase使用方法
4
CSDN认证C1等级考试——练习(一)_csdn考试
5
edge无法登录账户_Win7系统安装Edge浏览器后无法登陆微软账户
6
NVIDIA-TX2/TX2i 烧写方式_tx2与tx2i
7
开设新量子计算中心!IonQ 全力加速量子商业化
8
C语言浮点数转换为IEEE 754标准_c语言浮点数转 ieee754
9
php微信小程序获取用户信息,微信小程序调用接口获取登录获取用户信息
10
jenkins的自动化打包部署_jenkins打包,发布,部署
当前位置:
article
> 正文
Linux C 串口编程_linux c串口编程
作者:Monodyee | 2024-03-12 18:04:38
赞
踩
linux c串口编程
[csharp]
view plain
copy
arch/arm/include/asm/termbits.h
struct
termios {
tcflag_t c_iflag;
/* input mode flags */
tcflag_t c_oflag;
/* output mode flags */
tcflag_t c_cflag;
/* control mode flags */
tcflag_t c_lflag;
/* local mode flags */
cc_t c_line;
/* line discipline */
cc_t c_cc[NCCS];
/* control characters */
};
串口的设置主要是设置
struct
termios结构体的各成员
/**
*s3c6410 serial_test
*测试的时候应用程序在后台运行./serial_test &
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h> //文件控制定义
#include <termios.h>//终端控制定义
#include <errno.h>
#define DEVICE "/dev/s3c2410_serial0"
int
serial_fd = 0;
//打开串口并初始化设置
init_serial(
void
)
{
serial_fd = open(DEVICE, O_RDWR | O_NOCTTY | O_NDELAY);
if
(serial_fd < 0) {
perror(
"open"
);
return
-1;
}
//串口主要设置结构体termios <termios.h>
struct
termios options;
/**1. tcgetattr函数用于获取与终端相关的参数。
*参数fd为终端的文件描述符,返回的结果保存在termios结构体中
*/
tcgetattr(serial_fd, &options);
/**2. 修改所获得的参数*/
options.c_cflag |= (CLOCAL | CREAD);
//设置控制模式状态,本地连接,接收使能
options.c_cflag &= ~CSIZE;
//字符长度,设置数据位之前一定要屏掉这个位
options.c_cflag &= ~CRTSCTS;
//无硬件流控
options.c_cflag |= CS8;
//8位数据长度
options.c_cflag &= ~CSTOPB;
//1位停止位
options.c_iflag |= IGNPAR;
//无奇偶检验位
options.c_oflag = 0;
//输出模式
options.c_lflag = 0;
//不激活终端模式
cfsetospeed(&options, B115200);
//设置波特率
/**3. 设置新属性,TCSANOW:所有改变立即生效*/
tcflush(serial_fd, TCIFLUSH);
//溢出数据可以接收,但不读
tcsetattr(serial_fd, TCSANOW, &options);
return
0;
}
/**
*串口发送数据
*@fd:串口描述符
*@data:待发送数据
*@datalen:数据长度
*/
int
uart_send(
int
fd,
char
*data,
int
datalen)
{
int
len = 0;
len = write(fd, data, datalen);
//实际写入的长度
if
(len == datalen) {
return
len;
}
else
{
tcflush(fd, TCOFLUSH);
//TCOFLUSH刷新写入的数据但不传送
return
-1;
}
return
0;
}
/**
*串口接收数据
*要求启动后,在pc端发送ascii文件
*/
int
uart_recv(
int
fd,
char
*data,
int
datalen)
{
int
len=0, ret = 0;
fd_set fs_read;
struct
timeval tv_timeout;
FD_ZERO(&fs_read);
FD_SET(fd, &fs_read);
tv_timeout.tv_sec = (10*20/115200+2);
tv_timeout.tv_usec = 0;
ret = select(fd+1, &fs_read, NULL, NULL, &tv_timeout);
printf(
"ret = %d\n"
, ret);
//如果返回0,代表在描述符状态改变前已超过timeout时间,错误返回-1
if
(FD_ISSET(fd, &fs_read)) {
len = read(fd, data, datalen);
printf(
"len = %d\n"
, len);
return
len;
}
else
{
perror(
"select"
);
return
-1;
}
return
0;
}
int
main(
int
argc,
char
**argv)
{
init_serial();
char
buf[]=
"hello world"
;
char
buf1[10];
uart_send(serial_fd, buf, 10);
printf(
"\n"
);
uart_recv(serial_fd, buf1, 10);
printf(
"uart receive %s\n"
, buf1);
close(serial_fd);
return
0;
}
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/Monodyee/article/detail/225173
推荐阅读
article
Linux
安装
宝塔
_
linux
安装
保胎...
宝塔
:
宝塔
面板是一款服务器管理软件,支持windows和
linux
系统,可以通过Web端轻松管理服务器,提升运维效率。例...
赞
踩
article
【
linux
】
校招
中
的
“熟悉
linux
操作系统
”一般
是
指达到
什么
程度?_
校招
中
的
“熟悉
linux
操作...
我面试
的
时候如果面试官让我说几个常用命令,那我就简单深入
的
讲下这个方案基本
是
可以过
的
。现在我把之前用
的
方案贴出来(cen...
赞
踩
article
【
Linux
】查看
服务器
当前
SSH
连接
IP
地址_
ssh
查看本地端口、本地ip...
项目场景笔者的个人电脑放在宿舍,实验室也分配了一台电脑专用于办公。宿舍的电脑是动态
IP
,经常改变。由于整个校园都是局域...
赞
踩
article
【
Linux
】
ssh
远程
连接
到指定
ip
的指定
用户
上_
ssh
ip
...
通过
ssh
可以
远程
连接
到其他的机器上,但是如果只想
连接
到指定的
用户
的话需要这样做:-l 选项 (是L不是I,小写)
ssh
...
赞
踩
article
linux
ssh
ip
地址
命令,关于
Linux
:在
ssh
会话中查找客户机的
IP
地址
...
我有一个脚本,由使用
ssh
登录到服务器的人运行。有没有办法自动找出用户连接的
IP
地址
?当然,我可以问用户(这是一个程序员...
赞
踩
article
linux
ssh
ip
超时
,
ssh
内网
ip
和 外网
ip
的情况...
1、
ssh
命令说明:
ssh
命令用于远程登录上Linux主机。使用方式: 1、不指定用户:
ssh
192.168.0.1...
赞
踩
article
linux
快速
删除
大
文件夹
_
linux
删除
文件夹
快速...
比rm快很多,秒删具体操作方法# 先创建一个空目录# 注意:最好是用和被清空目录的所有者(用户)去创建这个空目录,使用的...
赞
踩
article
linux
上
虚拟机
vmware
-
workstation
使用教程_
vmware
workstation
...
本文介绍了在centos上安装
vmware
-
workstation
的使用教程。_
vmware
workstation
l...
赞
踩
article
VMware
虚拟机
中
安装
Linux
操作系统
_简述使用
vmware
虚拟机
软件
安装
linux
操作系统
...
一、下载并
安装
VMware
软件。二、打开
VMware
软件,选择创建新的
虚拟机
。三、点击选择自定义,点击下一步。四、选择...
赞
踩
article
VMware
虚拟机
中安装
Linux
操作系统
_安装linux
虚拟机
...
一、下载并安装
VMware
软件。二、打开
VMware
软件,选择创建新的
虚拟机
。三、点击选择自定义,点击下一步。四、选择...
赞
踩
article
VMware
使用及
linux
基础
_
vmess
linux
...
打开
VMware
,点击新建虚拟机,选择自定义安装直接点下一步即可,主义后续设置的内存等的容量大小不能超过此处的限制大小选...
赞
踩
article
Linux
--
使用
VM
创建
虚拟机
步骤及
常见问题
_
linux
怎么建立
虚拟机
...
Linux
--
使用
VM
创建
虚拟机
步骤及
常见问题
:创建新
虚拟机
,安装
Linux
步骤;运行
虚拟机
系统蓝屏可能原因:磁盘空间不...
赞
踩
article
vmware
打开
已经安装好的系统
linux
打开
虚拟机
...
vmware
打开
已经安装好的系统
linux
打开
虚拟机
_
vmware
打开
已经安装好的系统
vmware
打开
已经安装好的系...
赞
踩
article
Linux
VMWare
打开
已装好的
Linux
系统
...
安装
Linux
系统
是比较麻烦和繁琐的事情,因为需要配置和设置不少东西,当需要部署多个
Linux
系统
的时候,逐一安装未免费...
赞
踩
article
虚拟机
VMware 中安装Linux系统-
Ubuntu
_
vmware
workstation
16....
本文介绍如何使用
vmware
workstation
pro
软件在Windows系统中创建一个
虚拟机
,并在
虚拟机
中安装U...
赞
踩
article
【
Linux
】
安装
VMWare
虚拟机
(
安装
配置
)和
配置
Windows
Server
2012 R2(...
客户端操作系统是在台式计算机和其他便携式设备上运行的操作系统。相反,服务器操作系统是被开发用于在服务器上
安装
和使用的操作...
赞
踩
article
Linux
SPI
驱动实验编写和测试步骤-基于正点原子
IMX6ULL
开发板
_阿尔法
linux
开发板
增...
1 原理图分析I.MX6U-ALPHA
开发板
上有一个 ICM-20608 这个
SPI
接口的六轴传感器,连接在SOC...
赞
踩
article
【
安装
linux
ubuntu
系统初始化】_
chushihua
linux
ubuntu
...
1.从Microsoft store
安装
ubuntu
系统后,启动Ubuntu时需要输入新的Unix user,具体情况如...
赞
踩
article
Linux
:
Linux
初始化
配置指南...
在安装完
Linux
操作系统后,我们需要执行一些操作以确保系统正常运行并满足我们的需求。_linux
初始化
linux
初始化
...
赞
踩
article
Ubuntu
系统
初始化
:轻松配置你
的
Linux
环境...
通过正确
的
配置和安装必要
的
软件包,你可以创建一个适合你需求
的
个性化工作环境。本文将为你提供一些详细
的
步骤和源代码,以帮助...
赞
踩
相关标签
linux
运维
服务器
java
ssh
远程连接
远程登录
linux ssh ip地址命令
后端
Linux
网络
ubuntu