c 串口读写数据实例解析
一 前记
程序员就是不断地砌砖头,然后用砖头,把砖头模块化,用的时候直接调用,能够节省很多精力。
二 实例:
1 #include <stdio.h>
2 #include <unistd.h> //Used for UART
3 #include <fcntl.h> //Used for UART
4 #include <termios.h> //Used for UART
5
6 typedef unsigned char uint8;
7
8 void dump8(uint8 *buf, int len)
9 {
10 for(int icnt = 0; icnt < len; icnt++)
11 {
12 printf("0x%x,",buf[icnt]);
13 }
14
15 printf("\n\t");
16 }
17
18
19 int main(void)
20 {
21 int data_num = 0;
22
23 printf("\nUART test\n\n");
24
25 int uart0_filestream = -1;
26
27 uart0_filestream = open("/dev/ttyUSB3", O_RDONLY | O_NOCTTY | O_NDELAY); //Open in non blocking read/write mode
28 if (uart0_filestream == -1)
29 {
30 printf("Error - Unable to open UART. Ensure it is not in use by another application\n");
31 return -1;
32 }
33
34
35 struct termios options;
36 tcgetattr(uart0_filestream, &options);
37 options.c_cflag = B921600 | CS8 | CLOCAL | CREAD; //<Set baud rate
38 options.c_iflag = IGNPAR;
39 options.c_oflag = 0;
40 options.c_lflag = 0;
41 tcflush(uart0_filestream, TCIFLUSH);
42 tcsetattr(uart0_filestream, TCSANOW, &options);
43
44 printf("init complete, listening...\n\n");
45
46
47 while(1)
48 {
49
50 if (uart0_filestream != -1)
51 {
52 unsigned char buf1[2];
53 int n = read(uart0_filestream, buf1, 2);
54 if ((n > 0) && (buf1[0] == 0xff) &&(buf1[1] == 0xff))
55 {
56 unsigned char buf2[2];
57 dump8(buf1,2);
58 n = read(uart0_filestream, buf2, 2);
59 dump8(buf2,2);
60 if (n > 0 && (buf2[0] == 0x40) &&(buf2[1] == 0x01))
61 {
62
63 unsigned char buf3[640];
64
65 data_num = read(uart0_filestream, buf3, 640);
66
67 if(data_num > 0)
68 {
69
70 dump8(buf3,data_num);
71 }
72
73 }
74 }
75
76 }
77
78 }
三 总结:
运行一下,就知道结果了。
c 串口读写数据实例解析的更多相关文章
- 如何用Java语言向串口读写数据
原作者:赛迪网作者 shihuchen ,我在他的基础上进行了部分修改 [赛迪网讯]串口, RS-232-C(又称EIA RS-232-C,以下简称RS232)是在1970年由美国电子工业协会(EIA ...
- Datatables插件1.10.15版本服务器处理模式ajax获取分页数据实例解析
一.问题描述 前端需要使用表格来展示数据,找了一些插件,最后确定使用dataTables组件来做. 后端的分页接口已经写好了,不能修改.接口需要传入页码(pageNumber)和页面显示数据条数(pa ...
- 在Linux中如何使用命令进行RS-232串口通信和数据包解析
文章首发于浩瀚先森博客 1. 获取串口号 在Linux系统中一切皆为文件,所以串口端口号也不例外,都是以设备文件的形式出现.也就是说我们可以用访问文本文件的命令来访问它们. a. 一般串口都是以/de ...
- 实例解析Docker数据卷+数据卷容器+flocker数据共享+DockerHub操作
Docker内部数据管理和Docker之间的数据共享为数据卷和数据卷容器,实例解析1.将本地的文件作为容器的数据卷,2.数据卷flocker插件实现容器集群(或者Docker Swarm)的数据共享3 ...
- Java实现RS485串口通信,发送和接收数据进行解析
最近项目有一个空气检测仪,需要得到空气检测仪的实时数据,保存到数据库当中.根据了解得到,硬件是通过rs485进行串口通讯的,需要发送16进制命令给仪器,然后通过轮询来得到数据. 需要先要下载RXTX的 ...
- json-lib-2.4-jdk15.jar所需全部JAR包.rar java jsoup解析开彩网api接口json数据实例
json-lib-2.4-jdk15.jar所需全部JAR包.rar java jsoup解析开彩网api接口json数据实例 json-lib-2.4-jdk15.jar所需全部JAR包.rar ...
- 第十六章 IIC协议详解+UART串口读写EEPROM
十六.IIC协议详解+Uart串口读写EEPROM 本文由杭电网友曾凯峰根据小梅哥FPGA IIC协议基本概念公开课内容整理并最终编写Verilog代码实现使用串口读写EEPROM的功能. 以下为原文 ...
- android基础---->JSON数据的解析
上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...
- [Reprint]C++普通函数指针与成员函数指针实例解析
这篇文章主要介绍了C++普通函数指针与成员函数指针,很重要的知识点,需要的朋友可以参考下 C++的函数指针(function pointer)是通过指向函数的指针间接调用函数.相信很多人对指向一般 ...
- JavaWeb实现文件上传下载功能实例解析
转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...
随机推荐
- Mysql数据库迁移|如何把一台服务器的mysql数据库迁移到另一台服务器上的myql中
前言 那么这里博主先安利一下一些干货满满的专栏啦! Linux专栏https://blog.csdn.net/yu_cblog/category_11786077.html?spm=1001.2014 ...
- ABC306 A - F
ABC306 A - F 代码不提供 A 题意:吧字符串的每个字符连续输出两遍,记得不要快读,不要忘记输入 $ n $ 纪念 Qinzh A 题 WA 掉 B 题意:给定长度为 $ 64 $ 的数组 ...
- delphi IDE 代码 恢复
- TPopupMenu 替换 自身自动的 热键
有时候自动生成的热键 并不是 很理想 这个时候 需要 用自己认为好的 方法如下图,加个(&热键)
- MySQL8.0-CTE递归查询(避免死循环)
TSQL脚本能实现递归查询,用户使用共用表表达式 CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询. 本文详细介绍CTE递归调用的特性和使用示例,递归查 ...
- useMemo与useCallback
useMemo与useCallback useMemo和useCallback都可缓存函数的引用或值,从更细的角度来说useMemo则返回一个缓存的值,useCallback是返回一个缓存函数的引用. ...
- ftp 出现Passive mode refused 解决办法
在shell中调用FTP出现下面错误时, Permission denied. Passive mode refused. Permission denied. Passive mode refuse ...
- SpringCloud SpringBoot 组件使用:SpringBoot Actuator
基础篇 一.什么是Spring Actuator? spring-boot-starter-actuator模块是一个spring提供的监控模块.我们在开运行发过程中,需要实时和定时监控服务的各项状态 ...
- Spring Boot+Thymeleaf+MyBatis--推荐一个后端练手极佳的商城项目
项目整体架构 newbee-mall ├── src/main/java └── ltd.newbee.mall ├── common // 存放相关的常量配置及枚举类 ├── config // 存 ...
- PlatformIO+esp32+添加自己的库(.c.h文件)
什么都放main.c的话,很有可能堆积成屎山,所以我想给分开写,每个功能有自己的.c..h文件. 在lib下新建文件夹,例如led,再在里面分别建led.c.led.h; 写好内容后再main ...