
C语言
fuluoce
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ESP32 LVGL Gui-Guider的移植
按照上面的文章,使用Gui-Guider软件生成C代码之后,custom和generated是我们要使用到的文件, 其中custom是用来存放gui工程中我们自定义的一些代码,实际上如果没有自定义代码的话也可以不用,generated则是Gui-Guider工程生成的C代码,我们主要将这部分导入到我们的esp32s3工程中。到esp32的工程main目录下(已经移植好LVGL的工程),创建一个ui文件夹,将custom和generated放入此文件夹内。这块很主要,设置正确才能编译通过。原创 2023-12-04 09:47:44 · 2314 阅读 · 0 评论 -
STM32+ESP-07S+MQTT服务器实现数据上传和接收
STM32+ESP-07S+MQTT服务器实现数据上传和接收。GPIO0 接GND,点击开始,然后给模块上电,等待完成。工具最下面有进度条。esp32下载工具和mqtt固件包。完成之后,模块重新上电进行测试。选择文件,按照下图进行勾选。解压下载工具,打开工具。原创 2023-02-02 23:20:33 · 1287 阅读 · 0 评论 -
stm32 lwip mqtt 修改发送接收长度和内存优化
stm32 lwip mqtt 修改发送接收长度和内存优化,不单独开辟数组内存,直接通过frertos的内存申请释放,统一管理内存。基于freertos优化lwip的pools。mqtt_opt.h(配置文件)原创 2023-01-06 11:25:46 · 1481 阅读 · 0 评论 -
Ubuntu18.04安装不同版本的GCC
安装你需要的版本如下:sudo apt-get install gcc-8sudo apt-get install g++-8添加软链接sudo rm /usr/bin/cpp /usr/bin/gcc /usr/bin/g++sudo ln -s /usr/bin/cpp-8 /usr/bin/cppsudo ln -s /usr/bin/gcc-8 /usr/bin/gccsudo ln -s /usr/bin/g++-8 /usr/bin/g++查看版本gcc -v原创 2022-05-07 14:12:36 · 2222 阅读 · 0 评论 -
在imx6ull上,移远EC20模块的GPS信息获取和解析
1、接上模块通过USB连接,需要插上SIM卡,查看设备如下root@ATK-IMX6U:~# ls /dev/ttyUSB*/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB32、使能GPS信息输出echo -e "AT+QGPS=1\n\r" > /dev/ttyUSB2通过命令查看信息root@ATK-IMX6U:~# cat /dev/ttyUSB1没定位到的情况$GPVTG,,T,,M,,N,,..原创 2021-09-23 17:12:23 · 2851 阅读 · 0 评论 -
ANS.1笔记:语法规则与类型概述
一、简介 ASN.1(Abstract Syntax Notation dotone),抽象语法标记1。是定义抽象数据类型形式的标准,是用于描述数据表示、表示、传输、编码的记法。ASN.1只包含信息结构,不处理具体业务数据,它不是一个编程语言。ASN.1没有限定编码方法,各种ASN.1编码规则提供了由ASN.1描述其抽象句法的数据的值的传送语法(具体表达),常见的编码规则有: 1、基本编码规则(BER),规范编码规则(CER,Cano...原创 2021-09-14 17:45:21 · 1214 阅读 · 0 评论 -
ubuntu18.04 交叉编译curl-7.65.3
下载源文件:curl downloads解压sudo tar -xvzf ocurl-7.65.3.tar.gz配置环境变量env LDFLAGS=-R/home/book/work/tool/openssl/build_openssl/lib ./configure --prefix=/home/book/work/tool/curl/build_curl CC=arm-linux-gcc --host=arm-linux --with-ssl=/home/book/work原创 2021-07-19 17:31:01 · 436 阅读 · 1 评论 -
ESP32-WROVER-E蓝牙学习笔记(2)BLE 的server client att
1、客户端 Client请求数据服务客户端可以主动搜索并连接附近的服务端客户端类似蹭网的2、服务端Server提供数据服务服务端不需要进行主动设置,只要开启广播就可以让附近的客户端搜索到,并提供连接服务端类似被蹭网的wifi如果想要让ESP处于别人随时可以搜索连接的情况要配置为服务端;如果想让ESP通过扫描连接周围可连接的蓝牙设备,需要把它设置成客户端,正好和WiFi模式的设定相反Server通过characteristic对数据进行封装,多个characteristic原创 2021-04-12 15:25:44 · 1558 阅读 · 0 评论 -
ESP32-WROVER-E蓝牙学习笔记(1)
1、概述1.1蓝牙结构 蓝⽛牙是⼀一种短距通信系统,其关键特性包括鲁棒性、低功耗、低成本等。蓝⽛牙系统分为两种不不同的技术:经典蓝⽛牙 (Classic Bluetooth) 和蓝⽛牙低功耗 (Bluetooth Low Energy)。 整体结构上,蓝⽛牙可分为控制器器 (Controller) 和主机 (Host) 两⼤大部分:控制器器包括了了PHY、 Baseband、 Link Controller、 Link Manager、 Device Manager、 HCI ...原创 2021-04-01 17:49:21 · 2718 阅读 · 0 评论 -
ubuntu 18.04 系统 ip地址设置
1、ubuntu 18.04 系统修改为静态ip地址vi /etc/network/interfaces改并为如下内容,保存并退出,执行/etc/init.d/S40network restart 重启网络服务auto loiface lo inet loopbackauto eth0iface eth0 inet static address 192.168.5.11 netmask 255.255.255.0 gateway 192.168.5.1...原创 2021-03-16 23:21:01 · 1185 阅读 · 0 评论 -
linux下查找文件夹下匹配的内容grep指令
问题现象:遍历当前目录下的所有文件,查找文本所在的文件问题解决:grep指令问题实现:grep -r "xxx" ./问题扩展:其他grep参数,参考grep --help其他用法:1.从文件内容查找匹配指定字符串的行:$ grep "被查找的字符串" 文件名例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件grep "thermcontact" */*.in2.从文件内容查找与正则表达式匹配的行:$ grep –e “正则表达式” 文件名3.查找时不区分大原创 2021-03-08 11:55:10 · 3262 阅读 · 0 评论 -
Linux zlog日志打印
1、zlog使用手册http://hardysimpson.github.io/zlog/UsersGuide-CN.html参考文章https://blog.csdn.net/fangye945a/article/details/859559062、zlog配置文件 大部分的zlog的行为都取决于配置文件,比如把日志打到哪里去,用什么格式,怎么转档,都由配置文件来决定。# comments[global]strict init = truebuffer min ...原创 2021-01-25 16:28:18 · 988 阅读 · 0 评论 -
linux进程间的通信(C): 消息队列
一、消息队列(message queue)消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度。二、函数定义#include <sys/msg.h>int msgctl(int ms...原创 2020-12-23 17:23:13 · 488 阅读 · 0 评论 -
Linux 基于openssl库的paho.mqtt.c交叉编译出libpaho-mqtt3as.so
下载文件:git clone https://github.com/eclipse/paho.mqtt.c.git普通ubuntu编译cd paho.mqtt.cmakesudo make installmake出错安装opensslsudo apt-get install opensslsudo apt-get install libssl-dev交叉编译修改文件CMakeLists.txt,添加如下set(CMAKE_SYSTEM_NAME Linux)se原创 2020-12-10 19:07:49 · 2230 阅读 · 4 评论 -
ubuntu16.04 交叉编译openssl-1.1.1i
去官网下载安装包:https://www.openssl.org/source/解压sudo tar xvzf openssl-1.1.1.tar.gz配置文件如下:sudo ./config no-async no-asm no-sse2 no-ssl3 no-zlib no-bf no-camellia no-cast no-cms no-comp no-dso no-idea no-md2 no-mdc2 no-rc2 no-rc5 no-ripemd no-seed --p原创 2020-12-10 13:50:19 · 945 阅读 · 0 评论 -
Linux环境下执行脚本时报错:/bin/bash^M: 坏的解释器: 没有那个文件或目录
1、现象我在Windows 10 系统下编辑了一个发送消息到企业微信的shell脚本文件,然后copy到了远程的Linux服务器,当运行的时候报错了2、原因这个文件在Windows 下编辑过,在Windows下每一行结尾是\n\r,而Linux下则是\n,所以才会有 多出来的\r。3、解决方法使用指令sed -i 's/\r$//' xxxxxxx.sh,上面的指令会把xxxxxxx.sh中的\r 替换成空白!参考:https://blog.csdn.net/ou...原创 2020-12-08 13:55:15 · 188 阅读 · 0 评论 -
ubuntu 16.04 安装的一些命令记录
获取 root 权限#sudo passwd root更新源#sudo apt-get update安装 32 位兼容包#sduo apt-get install lib32stdc++6 libc6:i386安装 g++#apt-get install g++ 安装 libncurses5-dev 支持包#apt-get install libncurses5-dev安装sshsudo apt-get install openssh-server原创 2020-12-05 14:24:16 · 146 阅读 · 0 评论 -
Linux 获取阿里云的微消息队列mqtt
下载代码 wget clone https://github.com/eclipse/paho.mqtt.c.git或者git clone https://github.com/eclipse/paho.mqtt.c.git进入cd paho.mqtt.c编译make如果提示出错,安装opensshsudo apt-get install opensslsudo apt-get install libssl-dev安装库sudo make ins原创 2020-12-05 14:09:25 · 241 阅读 · 0 评论 -
Linux Ubuntu 16.04 安装ssh
刚安装好的ubuntu16.04是没有ssh服务的,我们需要自己安装安装openssh-server,也就是ssh服务#sudo apt-get install openssh-server测试是否安装成功#sudo ps -e |grep ssh开启ssh服务#sudo service ssh start原创 2020-12-05 09:29:23 · 442 阅读 · 0 评论 -
Linux C函数获取MAC地址
#include <sys/socket.h>#include <sys/ioctl.h>#include <netinet/if_ether.h>#include <net/if.h>#include <linux/sockios.h>void getmac(){ #define MAXINTERFACES 16 int fd, interface; struct ifreq buf[MAXINTERFA.原创 2020-12-04 10:28:06 · 730 阅读 · 0 评论 -
Linux printf 宏 调试技巧
1.前言printf调试是嵌入式调试的基本手段,而且是非常重要的手段,我认为相比单步调试更加有用有效,特别是单片机之后跑系统,单步调试效率更加低下了,我们在工作遇到bug的时候,我们第一时间就想知道那些该死的日志有没有保存下来,这样好让我们程序员装逼一波把问题解决。printf宏定义调试非常重要,有些日志在开发的时候才需要打开,发布的时候需要关闭,但是在代码上又需要保留下次调试,所以我们在调试的时候才打开调试宏定义,而且printf会占用空间,很多芯片的空间非常有限,更应该关闭调试宏。下面就直接原创 2020-11-26 10:01:27 · 513 阅读 · 0 评论 -
Linux 下sha1加密
#include <openssl/aes.h>#include <openssl/md5.h>#include <openssl/sha.h>/*功能:进行sha1加密,返回hex转成的字符串输入参数:str:字符指针 len:字符长度 out_data:加密之后的字符指针,长度必须是SHA_DIGEST_LENGTH =40*/int SHA1_encrypt( unsigned char *str,int l.原创 2020-11-19 17:23:37 · 1186 阅读 · 0 评论 -
linux 下MD5加密
一.安装OpenSSL库把下面的东西一股脑儿的装上,以免编译时出现链接错误apt-get install openssl libssl-dev libssl-doc libcurl4-openssl-dev二.实现MD5加密函数接受一个字符串,加密成常规32位小写MD5值/*功能:进行MD5加密,返回hex转成的字符串输入参数:str:字符指针 len:字符长度 out_data:加密之后的字符指针,长度必须是32.*/int md5原创 2020-11-19 17:20:47 · 910 阅读 · 0 评论 -
Linux 下查找进程,并结束进程
1、查看进程ps -ef | grep mq查看 *mq*名字的进程,结果如下book 5155 2573 0 15:10 pts/0 00:00:00 ./mqtt_p2pbook 6417 6320 0 15:22 pts/2 00:00:00 grep --color=auto mq2、结束进程killall -9 mqtt_p2p或者kill -9 5155结果book 6449 632原创 2020-11-19 15:29:57 · 796 阅读 · 0 评论 -
Linux AES加密
一、AES ECB 256 加密函数/*功能:进行AES加密,返回hex转成的字符串输入参数:Plaintext:明文 长度是16的倍数 Ciphertext:密文 长度是明文长度的两倍 key:密钥.*/int AES256_encrypt( unsigned char *Plaintext,unsigned char *Ciphertext,signed char *userkey){ //unsigned char md[16]; char原创 2020-11-19 11:28:43 · 2675 阅读 · 2 评论 -
Linux 获取UUID
一、UUID 生成(源代码编译)根据定义,UUID(Universally Unique IDentifier,也称GUID)在时间和空间都是唯一的。为保证空间的唯一性,每个UUID使用了一个48位的值来记录,一般是计算机的网卡地址。为保证时间上的唯一性,每个UUID具有一个60位的时间戳(timestamp)。这个时间戳表示自公元1582年(绝对不是1852,这是《COM技术内幕》,1999年3月第1版第89页中的一个错误)10月15号00:00:00:00以来的时间,是以100纳秒为单位的时间间隔原创 2020-11-17 11:36:40 · 1151 阅读 · 0 评论 -
Linux的信号量sem
线程同步的方式和机制临界区、互斥量、事件、信号量四种方式临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。2、互斥量:采用互斥对象机制。原创 2020-11-17 11:37:42 · 410 阅读 · 0 评论 -
Ubuntu 安装 NFS 服务
1、安装 NFS 服务:sudo apt-get install nfs-kernel-server2、修改 NFS 配置文件sudo vi /etc/exports添加/home/book/fu/linux_nuc980/nfs *(rw,sync,no_root_squash,no_subtree_check)注解:/home/book/fu/linux_nuc980/nfs :nfs服务器共享的目录,需要在Ubuntu系统中新建这个目录。* :代表允许所有...原创 2020-11-03 16:21:39 · 456 阅读 · 0 评论 -
Authentication failure解决办法
我是在切换root账户时遇到的这个问题我输入密码时,输入的当前账户的密码而不是root账户的密码。我之前从来没有登陆过root账户,不知道密码。因此解决办法如下:输入命令行1.sudo passwd root2.输入当前账户密码3.输root账户密码4.重复输入root账户密码参考文献:https://blog.csdn.net/qq_40511918/article/details/83650536...转载 2020-11-03 11:46:06 · 6675 阅读 · 0 评论 -
linux下的vi vim编辑器常用指令
参考文献:https://www.runoob.com/linux/linux-vim.html常用指令:原创 2020-11-02 14:19:45 · 103 阅读 · 0 评论 -
ubuntu18.04 安装ftp 实现window 10 与Ubuntu之间的通信
1 、开启 Ubuntu 下的 FTP ubuntu18.04 安装ftp 实现window 10 与Ubuntu之间的通信安装ftp:打开 Ubuntu 的终端窗口,然后执行如下命令来安装 FTP 服务:sudo apt-get install vsftpd等待软件自动安装,安装完成以后使用如下 VI 命令打开/etc/vsftpd.conf,命令如下:sudo vi /etc/vsftpd.conf打开以后 vsftpd.conf 文件以后找到如下两行:local_e..原创 2020-10-26 16:45:34 · 309 阅读 · 0 评论 -
结合print讲解va_start和va_end使用
1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表void foo(...);void foo(parm_list,...);这种方式和我们以前认识的不大一样,但我们要记住这是C中一种传参的形式,在后面我们就会用到它。2.函数参数的传递原理 函数参数是以数据结构:栈的形式存取,从右至左入栈。 首先是原创 2016-11-25 15:16:37 · 603 阅读 · 0 评论 -
TCP序号和TCP滑动窗口
参考:http://www.cnblogs.com/QingFlye/p/4442529.htmlhttp://www.cnblogs.com/woaiyy/p/3554182.htmlTCP三次握手TCP标志位TCP在其协议头中使用大量的标志位或者说1位(bit)布尔域来控制连接状态,一个包中有可以设置多个标志位。TCP是主机对主机层的原创 2016-12-13 18:32:17 · 2903 阅读 · 1 评论 -
TCP序号和滑动窗口
参考:http://www.cnblogs.com/QingFlye/p/4442529.htmlhttp://www.cnblogs.com/woaiyy/p/3554182.htmlTCP三次握手TCP标志位TCP在其协议头中使用大量的标志位或者说1位(bit)布尔域来控制连接状态,一个包中有可以设置多个标志位。TCP是主机对主机原创 2020-11-03 14:57:54 · 619 阅读 · 0 评论