自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 资源 (1)
  • 收藏
  • 关注

原创 (九)Linux搭载4G模块——短信猫最终代码整合实现中英文短信收发、删除

在前面的八篇中,我们完成了所有的功能模块设计,主要的就是串口编程、AT指令集封装以及短信包的转码和解码,而这些准备,最终的目的就是完成Linux环境中4G模块中英文短信的收发、删除。我们可以把前面所有的模块进行调用和封装,封装成一个可运行的软件。...

2022-07-29 00:49:47 1089 2

原创 (八)Linux搭载4G模块——PDU短信格式的获取与解码

前面我们知道了怎么用AT指令取获取存储器中的短信包,而且短信包的格式分为两种,分别是Text格式和PDU格式。PDU格式可以解码出中英文,所以后面获取短信我们都用PDU格式。

2022-07-28 03:04:30 1635 1

原创 (七)Linux搭载4G模块——AT指令实现短信包的获取和删除

在前面,我们对串口编程已经实现了AT指令和中英文短信的发送。现在再来了解一下最后的两个功能短信的获取和删除。在使用代码实现之前,先了解使用到的AT指令。

2022-07-28 01:50:32 1670

原创 (六)Linux 4G模块Text格式和PDU格式实现中英文短信发送

前面封装了发送指令的send_at_cmd()函数,以及检测串口和SIM卡是否就绪的Check系列函数。现在我们可以发送短信了,不过需要知道的是,Text格式的编码只能发送英文,而PDU格式的编码即可以发送英文也可以发送中文,不过PDU实现起来相对麻烦,所以还是用Text格式来实现英文的发送。在第四篇,我们就已经实现了PDU包的封装了,现在要做的就是怎么把它们发送出去了。(四)Linux4G模块实现短信PDU格式编码。...

2022-07-27 23:12:29 928

原创 (五)Linux 4G模块封装发送指令函数以及检测串口和SIM卡是否就绪

前面实现了一条短信的PDU格式编码,这样在后面我们就可以发送中英文短信了。但是把短信打包成PDU包后,我们怎么发送出去呢?思路也不难,就是调用前面写的tty_send()函数实现数据发送,再调用tty_recv()去接收串口返回的数据,通过返回的数据就可以判断我们是否发送成功了。这样我们就可以写一个send_at_cmd()函数,来实现数据发送、接收以及判断的功能了。...

2022-07-27 18:26:25 1563

原创 (四)Linux 4G模块实现短信PDU格式编码

Linux4G模块实现短信发送的两种格式(Text和PDU),了解了4G模块发送短信的两种格式,Text和PDU,Text简单但是不饿能发送中文,所以引进了PDU格式,但是PDU的转换格式挺麻烦的,特别是UTF8转Unicode编码。不过下面都会一一讲解。.........

2022-07-26 03:49:01 1233

原创 (三)Linux 4G模块实现短信发送的两种格式(Text和PDU)

前面已经实现了串口通信编程,可发AT指令集,例如查SIM卡信号等指令,但是还是存在一个问题就是不能发送短信,这是因为涉及到编码的问题了,因为SIM卡发送短信,并不是简单的发送字符串,而是发送一个完整的Text格式或者PDU编码(包括已处理的中心号码、本SIM卡号码、数据Unicode码、号码长度、数据长度等信息)。现在我们需要了解Text格式和PDU格式的组成结构和用到的AT指令,以及后面如何用代码实现封装它。......

2022-07-26 01:41:20 3091

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

在开始本阶段之前,我们需要了解串口通信的知识,常见的几要素起始位、数据位、校验、停止位以及波特率。串口通信。在前面我们实现了串口驱动,在/dev/目录下可以查看ttyUSB等多个设备文件,使用ifconfig命令之后也可以看到usb0网卡,也可以使用Linux下的软件busyboxmicrocom实现AT指令的发送和接收。但是我们怎么接收来自EC200U模块的信息呢?难道要写个程序启动busyboxmicrocom软件再读取运行AT指令返回的信息?.........

2022-07-25 21:40:36 2828 1

原创 树莓派搭载EC200U 4G模块(USB网卡上网和PPP拨号上网)

EC200U是移远推出的4G模块

2022-07-14 00:06:50 11052 5

原创 细聊init进程和Linux系统启动流程

那做嵌入式开发的时候,系统的启动流程又是怎么样的呢?关于U-boot

2022-08-08 03:16:51 1002 1

原创 (二)、单链表

单链表。

2022-08-03 22:05:28 351

原创 (一)、线性表的顺序存储结构链式存储结构

本书结合程杰的《大话数据结构》一书进行学习。之前学的数据结构知识很多都忘了,最近重新复习一下。不会涉及很的理论知识,主要是代码实现为主。

2022-08-03 01:36:46 446

原创 使用mosquitto过程中的问题解决

主要记录使用mosquitto过程中的问题解决

2022-07-31 22:54:55 899

原创 IIC通信协议

I2C由时钟线(SCL)和数据线(SDA)两根线构成通信线路,总线空闲时通过上拉电阻拉高电平。I2C是一种主从结构(Master/Slave)总线,总线上每个设备都可以作为主机或从机,主设备通常是CPU,用来产生传输的时钟信号,并初始化总线的数据传输,而从设备只能被动响应主机请求。因为一个I2C总线可以接多个从设备,这就需要主机通过地址来确定与哪个从机进行通信。I2C总线上的每个从设备都有一个唯一的7bit物理识别地址。因为I2C地址全0表示广播地址,所以一个I2C总线理论最多能挂载2^7 - 1=127个

2022-07-09 04:43:09 4337

原创 串口通信协议

常用于这些模块:GPRS、3G、4G、5G、NB-IoT、GPS、WiFi、蓝牙、Zigbee、LoRa等通信。串口早期有个标准:DB9(9个引脚),其中(RX、TX、GND)这3根线用得比较多,其他6根用来做流控,不过用得比较少,如下图:只用一根数据线都话可以实现单工通信(例如GPS模块),两根线可以实现全双工。一个通信周期叫做一个通信单元:起始位+数据位+奇偶校验位+停止位串口通信是异步通信,没有时钟线,收发双方没有同步时钟信号来规定一个bit得数据发送电平要维持多长的时间,这样只能靠双方的规定速率

2022-07-09 01:32:37 2285

原创 硬件及接口学习总结

同步:有时钟线,通信速度相同,所以不再需要配置相同速度。如下图,除了有交换信息的数据线,还有SCL时钟线。I2C总线是一种主从结构总线,I2C总线上的每一个设备都可以作为主设备或从设备,其中主设备用来产生允许传输的时钟信号,并初始化总线的数传输,所以主设备通常是CPU。因为一个I2C总线上可以有多个从设备,这样主设备需要通过地址来确定与内阁器件进行通信。I2C总线桑每个从设备都有一个唯一的7b......

2022-07-04 20:14:42 377

原创 通信协议——分类及其特征介绍

波特率、异步、同步、串行并行、差分信号、电平信号、全双工、半双工、单工

2022-07-01 02:41:57 1494

原创 STM32——一线协议之DS18B20温度采样

每个DS18B20出厂的时候都烧录了一个唯一的64为产品序列号在ROM中。ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个传感器。所有的单总线器件都要求用严格的信号时序,以保证数据的完整性。DS18B20共有6种信号类型:复位脉冲、应答脉冲、写0/1、读0/1。所有的这些信号除了应答信号。都由主机发出同步信号,并且所有发送的命令和数据都是字节的低位在前(LSB)。单总线上的所有通信都是以初始化序列开始。主机输出低电平,保持低电平时间至少480us,以产生复位脉冲。......

2022-06-30 21:10:54 2501 1

原创 linux基础以及APUE学习总结

此笔记为本人学习linux基础总结笔记

2022-06-30 17:45:25 856

原创 C++自学总结

此笔记为本人学习笔记

2022-06-30 16:35:44 492

原创 计算机网络学习总结

此笔记为本人学习计算机网络的总结笔记

2022-06-27 21:33:57 894

原创 C语言学习总结

本文主要总结了在学习C和使用C中容易踩坑的知识点

2022-06-20 21:32:14 852

原创 《STM32》——一线协议之DHT11温湿度采样

编写了DHT11的驱动程序,使用STM32L433CBTxLQFP48芯片与温湿度传感器DHT11进程温湿度采样

2022-06-20 01:53:22 6595

原创 Linux自定义日志文件设置回滚(避免信息溢出)

文章目录一、概述二、代码实现三、所用函数说明(1)C库函数ftell()(2)C库函数fseek()(3)C库函数rewind()(4)Linux系统函数truncate()一、概述我们在Linux下面进行项目开发的时候,一般都将打印的信息输出到特定的日志文件中,可以是系统自带的syslog日志系统文件,也可以是我们自己写的日志系统文件,如果是我们自己写的日志系统,我们就不得不考虑内存空间有限,而不能无限地存储程序所打印的信息了,那我们怎么避免这种情况,使得日志文件数据达到一定值的时候自动清空呢?就是说

2022-05-12 22:27:24 1166

原创 cJSON学习

最近在做数据上三大云平台的项目,用的是MQTT协议,阿里云、腾讯云、华为云那边解析数据用的是json格式,下发的也是json格式,所以特地学一下json的封装和解析过程,以及其API的使用,作了以下笔记。文章目录一、概述二、下载安装二、基本语法(1)JSON表示方法(2)JSON的三种语法(3)JSON的值(4)JSON两种结构三、cJSON数据结构四、cJSON封装过程(1)创建头指针:(2)创建头节点,并将头指针指向头节点:(3)向链表添加节点:(4)输出cJSON数据(5)使用实例五、cJSON数据

2022-05-04 17:34:22 1681

原创 C语言配置文件解析库——iniparser

最近用MQTT的mosquitto库连接多个云平台(阿里云、华为云、腾讯云),但是它们三个平台的连接配置信息都不一样,所以使用起来很不便。最后了解到有iniparser这个库,最后用一个ini文件就可以配置不同云平台的信息了,而且如果要某云平台的配置信息,我也不用改源码,直接改ini配置文件即可。文章目录一、概述二、语法三、APIiniparser.h的APIdictionary.h的API实例一、概述iniparser是针对ini文件的解析器,可对init文件进行解析、设置、删除等操作。ini文件则

2022-05-03 22:31:25 2139

原创 MQTT--mosquitto库常用结构体

在用mosquitto的时候,发现使用到该库已定义的结构体,为了更好地了解mosquitto的使用,参考别人的博客,作了下面笔记,如侵,则删。另外,所列举的结构体成员为常用的成员,尚未列举完,请注意!文章目录一、mosquitto二、mosquitto_message一、mosquittomosquitto时客户端的连接句柄(句柄简而言之:指向结构体的指针),包含着客户端相关信息。创建一个指向struct mosquitto类型的结构体指针(句柄),后面就可以指向mosquitto_new()函数

2022-05-03 19:14:08 1547

原创 C项目开发常见问题集合

C项目开发常见的问题和技巧使用

2022-05-03 15:46:59 573

原创 树莓派获取本地时间

文章目录树莓派获取本地时间:方法1:使用C标准函数(1)了解time_t(2)time函数(3)tm结构体(4)gmtime()函数(5)localtime()函数实例:方法2:Linux系统库函数(1)timeval结构体(2)gettimeofday实例:树莓派获取本地时间:方法1:使用C标准函数(1)了解time_ttime_t 是一个长整型的别名,一般用来存储一个时间点(一般是1970年1月1日0时0分0秒)到现在的秒数。包含文件:<time.h>#ifndef __TIME

2022-05-03 11:21:42 2013

原创 MQTT--mosquitto库常见函数的使用

文章目录(1)mosquitto_lib_init(2)mosquitto_lib_cleanup(3)mosquitto_new(4)mosquitto_destroy(5)mosquitto_username_pw_set(6)mosquitto_connect(7)mosquitto_reconnect(8)mosquitto_disconnect(9)mosquitto_publish(10)mosquitto_subscribe(11)mosquitto_unsubscribe四、网络循环(由 l

2022-04-29 09:29:44 8940 1

原创 (read/write、select、getsockopt、signal)实时判断socket连接状态/是否断开

为什么socket服务器断开之后客户端还能发送一次数据呢?文章目录为什么socket服务器断开之后客户端还能发送一次数据呢?一、了解背后的原因1、客户端是如何将数据发送给服务器端的?(服务器端发客户端同理)二、解决办法最近遇到一个大坑:发现服务器端断开连接时,客户端还能write成功一次,不过服务器端是没有收到的,而且我的服务器数据库里面也没有保存。最后一次能write成功估计是将数据写入到缓冲区里面了,但是客户端还没确定服务器是否已经断开了连接,所以能write成功。因为项目对数据比较敏感,没有成功发

2022-04-19 10:47:50 6288

原创 SQLite3入门学习

本文主要讲解本人在项目中主要用到的一些语句和函数,如需详细了解课前往:SQLite菜鸟教程使用环境:C和Linux文章目录一、Linux下安装sqlite3二、常用sqlite函数sqlite3_opensqlite3_execsqlite3_exec回调函数sqlite3_close函数返回值三、常用sqlite语句四、常见简单实例1、连接或创建数据库2、创建表一、Linux下安装sqlite3shell脚本安装sqlite3

2022-04-16 22:32:30 1114

原创 树莓派连接温度传感器实时监控,并上报服务器

介绍该项目由客户端和服务器两端程序组成,以树莓派为客户端,远程服务器为服务器端,利用socket通信,将树莓派上采集的ds18b20的温度传感数据发送到服务器端。如果断开连接,客户端将采集的数据存于sqlite3数据库中,同样服务器端也会把每次接收到的数据存于sqlite3数据库中。软件架构客户端1.树莓派上运行socket客户端程序, 每隔30秒以字符串“设备号/日期时间/温度”形式上报采样温度,设备号便于服务器端区分是哪个树莓派客户端,如“RPI200/2022.4.4-12:01/28.00”

2022-04-04 14:34:00 4965 2

原创 《APUE》——Make工程管理器

一、了解Make一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。实际上,make工程管理器就是个自动编译管理器,能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作。

2022-03-24 10:41:43 2347

原创 《APUE》——C程序编译过程及常见选项

C程序编译过程及常见选项一、编译过程1.预处理2.编译3.汇编4.链接(1)静态链接(1)动态链接二、ELF可执行文件格式三、静态库和动态库四、GCC常见编译选项了解gcc的编译流程,我们可以根据自己的需要让gcc在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息。或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为今后的调试做好准备。一、编译过程//filename:hello.c#include <stdio.h>#define NUM 10

2022-03-23 14:09:14 1653

原创 GDB调试产生printf.c: No such file or directory.的问题

刚开始学GDB的使用,设置断点s(单句执行)执行的过程中,抛出错误,直接提示printf.c: No such file or directory.很头疼不知道啥问题。百度找到了解决办法,并记录在此。我的源码如下:#include <stdio.h>int main(){ int a=100, b=200; int * p1=&a; int * p2=&b; void swap(int *p1,int

2022-01-15 14:21:17 2997

原创 虚拟机Ubuntu下/etc/sudoers损坏的解决方案:从别的系统拷贝新的sudoers文件

昨天一基友说他sudoers文件坏了,叫我拷贝给ta一份,由于自己操作不当,所以把自己的/etc/sudosers也给搞崩了。今天才恢复好,记录一下。sudoers文件错误,运行sudo提示如下:zcxaubuntu:~$ sudo >> /etc/sudoers: syntax error near line 1 <<< sudo:k parse error in letc sudoers near line1 sudo: no valid sudoers sour

2022-01-08 14:35:40 2157 1

原创 杭电科大ACM:Rightmost Digit

Rightmost DigitProblem DescriptionGiven a positive integer N, you should output the most right digit of N^N.给定一个正整数 N,你应该输出 N^N 中最右边的数字。InputThe input contains several test cases. The first line of the input is a single integer T which is the number o

2021-09-22 19:09:13 342

原创 杭电科大ACM:An Easy Task

An Easy TaskProblem DescriptionIgnatius was born in a leap year, so he want to know when he could hold his birthday party. Can you tell him?Given a positive integers Y which indicate the start year, and a positive integer N, your task is to tell the Nth

2021-09-06 18:16:28 224

原创 杭电科大ACM:Climbing Worm

Problem DescriptionAn inch worm is at the bottom of a well n inches deep. It has enough energy to climb u inches every minute, but then has to rest a minute before climbing again. During the rest, it slips down d inches. The process of climbing and restin

2021-09-05 13:04:37 263 1

树莓派魔镜制作(超级详细)

里面是关于树莓派魔镜制作的详细内容,树莓派小白也可以看着教程学会,本人亲测有效,有什么不懂的可以问我

2020-10-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除