搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
weixin_40725706
这个屌丝很懒,什么也没留下!
关注作者
热门标签
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
python,Pyqt5 实现FTP服务器与客户端文件上传,下载_pyqt5 ftp
2
保姆级指导给Python库创建桌面快捷方式【赶紧收藏】_python在桌面创建快捷方式
3
小程序添加悬浮在线客服源码
4
品一品Sam和Ilya上次同台的暗涌;Ilya最新播客值得看三遍;如何搞出不落俗套的AI产品;妙鸭负责人离职;GPTs VS Agent | ShowMeAI日报
5
如何内网连接Jupyter(使用服务器的Jupyter notebook)_jupyter内网访问
6
Android Studio 包名、文件名等修改错误(各种文件命名错误都来看一下)_android 包名格式不正确,请填写以下划线或字母开头,可包含数字、字母、下划线和点
7
HBuilderX安卓离线打包教程全一览——uni-app_huilder开发app,启动页只能是图标
8
python 打包 小文件_PyQt5小技巧整理1:Python项目轻打包成可执行文件
9
华为组网:核心交换机旁挂防火墙,基于ACL重定向配置实验_华为交换机旁挂
10
华为“新编程语言”开始试用报名,对IT行业意味着什么?_为什么华为用微软typescript
当前位置:
article
> 正文
linux c 串口编程_串口 select timeout tv_usec
作者:weixin_40725706 | 2024-03-12 18:05:04
赞
踩
串口 select timeout tv_usec
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;
}
以上内容转载自:http://blog.csdn.net/shui1025701856/article/details/7571686
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/weixin_40725706/article/detail/225175
推荐阅读
article
【JAVA】若依(
ruoyi
)框架配置多
数据源
后,报错
execu
t
e
error
.
SELECT
...
若依(
ruoyi
)框架配置多
数据源
后,报错
execu
t
e
error
.
SELECT
1
FROM
DUAL
,
DUAL
...
赞
踩
article
已解决
java
.
lang
.
IllegalArgumentException
异常的正确解决方法,亲测有...
java
.
lang
.
IllegalArgumentException
是Java中的一个异常,表示传递给方法的参数不合法。...
赞
踩
article
selec
t
t
.* ,
t
.
rowid
from
-对查询出来的
sql
语句进行编辑_
selec
t
...
很简单,
sql
语句后面加上for upda
t
e即可:_
selec
t
t
.*,
t
.
rowid
from
selec
t
t
.*...
赞
踩
article
pytorch
分布式训练报错
RuntimeError
:
Socket
Timeout
...
pytorch
分布式训练中出现socket timeout情况_runtimeerror: socket timeout...
赞
踩
article
Socket
基础之
超时
时间_
socket
.time
out
:
timed
out
...
平时经常会听到“连接
超时
”、“
Socket
超时
”,那么到底是什么
超时
呢。以我们目前内部使用的调度任务为例,有时候会收到...
赞
踩
article
python catch
socket
timeout
...
python catch
socket
timeout
import
socket
try: # do something...
赞
踩
article
多级
多卡
分布式
训练时,报错
RuntimeError
:
Socket
Timeout
...
Traceback (most recent call last)
:
File "distribute_prune_er...
赞
踩
article
pyt
or
ch
出现Runtimeerr
or
:
out
or
mem
or
y..._runtimeerro...
在使用SegNet网络训练Pascal VOC2012数据集时,出现超出内存的报错,原因超出显卡内存,需要进行相应的处理...
赞
踩
article
pip安装模块报错
socket
.
time
out
: The
read
operat
ion timed ...
原因:超时报错解决设定超时时间,并且使用清华源pip--default-
time
out
=100 install -i h...
赞
踩
article
DVWA之sql盲注学习_1’ and (
select
count
(
table
_
name
)
from
...
1、判断是否存在注入,注入是字符型还是数字型DVWA安全级别为“Low”(1)判断是否存在漏洞Id值输入为1,发现正常显...
赞
踩
article
kotlin
插件版本不一致导致
Please
Select
Android
SDK错误_
version
...
Please
Select
Android
SDK错误可能是由于多种原因导致的 , 这里只记录一下插件版本的原因, 需要...
赞
踩
article
element
下拉
数据
过多
,导致
列表
卡顿加载慢,使用
虚拟
列表
方式_
element
select
数...
element
下拉
数据
过多
,导致
列表
卡顿加载慢,使用
虚拟
列表
方式_
element
select
数据
过多
虚拟
渲染ele...
赞
踩
article
Python
框架 之
Django
ajax
局部
页面
刷新
的
简单
介绍,和
ajax
简单
登录案例上...
Python
框架 之
Django
ajax
局部
页面
刷新
的
简单
介绍,和
ajax
简单
登录案例上的使用一、
简单
介绍P...
赞
踩
article
如何使用
vue
的渲染
函数
API:
h
函数
创建
一个
el
-
s
el
ect
弹出框_
h
('
el
-
s
el
ect
...
如何使用
vue
的渲染
函数
API:
h
函数
创建
一个
el
-
s
el
ect
弹出框_
h
('
el
-
s
el
ect
h
('
el
-s
el
ec...
赞
踩
article
Linux
中延时/
暂停
函数(
sleep
/u
sleep
/nano
sleep
/
select
)的比较、底层...
Linux
中延时/
暂停
函数(
sleep
/u
sleep
/nano
sleep
/
select
)的比较、底层实现说明
_
lat
_
u...
赞
踩
article
linux
select
函数详解_
timeout
.
tv
_
sec
= 1;
timeout
.
tv
_us...
原文地址:http://blog.csdn.net/lingfengtengfei/article/details/12...
赞
踩
article
linux
用
select
替代
sleep
(微秒级)
_
select
来
模拟
sleep
...
#include
select.h>#include
#include
[详细]
-->
赞
踩
article
【
Linux
高级
I
/
O
(2)】如何使用
阻塞
I
/
O
与
非
阻塞
I
/
O
?——
select
()函数_s...
系统调用
select
()可用于执行
I
/
O
多路复用操作,调用
select
()会一直
阻塞
,直到某一个或多个文件描述符...
赞
踩
article
socket
connect超时设置
_
timeout
.
tv
_
sec
=
1;
timeout
.
tv
_
...
场景:客户端调用接口时,默认调用的超时时间会很长,可以通过设置发送的超时时间来控制。int create
_
server
_
...
赞
踩
article
Linux
C ——
sele
c
t
()
函数
使用
_
linux
c
sele
c
t
...
本文记录的是在
Linux
下
sele
c
t
函数
的使用。所需头文件: sys/time.h作用:
sele
c
t
函数
是用来监视一...
赞
踩
相关标签
java
开发语言
mysql
springboot
jvm
spring
zhoushu
pytorch
深度学习
人工智能
python
分布式
pip
sql
vue.js
javascript
前端
django
ajax
Linux
延时
暂停
sleep
Linux内核