自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《机器人操作系统入门》课程代码示例安装出错解决方法

问题描述:学习《机器人操作系统入门》课程时,在Ubuntu 16.04 上安装了kinetic,安装ROS-Academy-for-Beginners时依赖总是报错,如下所示:rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y报错,如下图所示~/catkin_ws$ rosdep install --from-paths src --ignore-src --rosdistro=kinetic -yERROR:

2021-11-10 23:47:29 1741 4

原创 C语言二维数组作为形参传递问题

问题今天想用一个二维字符串数组保存字符串,在参数传递过程中发现返回的结果不对,上网一搜,发现二维数组作为形参传递不像一维数组那么简单,请看以下详细分析。异常代码:int StrCut(char* pinput, char **ppOut){ char *p = NULL; int count = 0; if (NULL == pinput) { return -1; } printf("input:%s\n", pinput); p = strtok(pinput, "/"

2021-03-15 15:33:34 908

原创 cJSON 更新键值及对象

使用cjson过程中,有的时候只需要更新整个json对象中的部分数据,cjson中提供了这样的接口,针对以下两个接口,给出使用示例。CJSON_PUBLIC(void) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem);CJSON_PUBLIC(void) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);一、更新键值

2021-03-05 13:06:50 6416 5

原创 MQTT(二) 开发板使用mqtt客户端

一、mqtt服务器使用mqtt客户端,必须填写服务器及端口号,如果是自己的服务器可以配置用户名和密码登录才可使用,测试服务器无需密码。这里选择的是mosquitto的官方测试服务器:地址:test.mosquitto.org端口:1883二、开源库准备在。。。文章中交叉编译好的库文件,openssl相关的库在openssl-1.1.1j/__install/lib下libssl.so.1.1 libcrypto.so.1.1mosquitto相关的库文件在mqtt_install/lib下

2021-03-04 14:56:02 1208 6

原创 MQTT(一) 移植mosquitto到开发板

一、安装opensslmosquitto的安装依赖openssl里的库libssl.so.1.1和libcrypto.so.1.1。1. 下载openssl官方下载网站:https://www.openssl.org/source/,目前官方测试版本已经到3.0,稳定版本是1.1,这里下载的是1.1版本。2. 解压解压下载的安装包,进入解压后的文件夹,创建安装目录__install:tar -zxvf openssl-1.1.1j.tar.gzcd openssl-1.1.1j/mkdir

2021-03-04 13:16:46 1872 3

原创 C语言按子串分割字符串

C语言按子串分割字符串一、按字符分割字符串C语言提供了一个按字符分割字符串的库函数char *strtok(char *str, const char *delim)分解字符串 str 为一组字符串,delim 为分隔符。参数str – 要被分解成多个小字符串的字符串。delim – 分隔符。返回值该函数返回被分解的第一个子字符串,如果没有可检索的字符串,则返回一个空指针。通过对改函数封装,获得按字符分割字符串的函数:/* 按字符分割 src 源字符串的首地址(buf的地址)

2021-02-25 09:53:21 3281

原创 C语言单向链表练习

C语言单向链表练习功能:实现链表数据的增删改查#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>/*在makefile中添加编译时间,可以在c代码中以宏的形式调用CT = $(shell date +"%Y-%m-%d %H:%M:%S")CTFLAG = -D _COMPILE_TIME="\"$(CT)"\"$(CC) $(CT

2021-02-04 19:17:30 206

原创 多网卡UDP广播

多网卡UDP广播一、UDP通信使用UDP协议进行信息的传输之前不需要建议连接。客户端向服务器发送信息,客户端只需要给出服务器的ip地址和端口号,然后将信息封装到一个待发送的报文中发送出去。至于服务器端是否存在,或者能否收到该报文,客户端根本不用管。UDP服务器与客户端的通信示例可参考:linux之UDP_server二、UDP广播   一般的UDP通信就是单播,网络上的广播可分为两种:  1)直接广播,可以理解为当前网段的子网广播,例如某台主机为192.168.1.1,子网掩码为255.255.

2021-02-01 14:18:13 4324

原创 cJson数组的生成与解析

cJson数组的生成与解析cJosn官方源码地址:https://sourceforge.net/projects/cjson/使用json偶尔会遇到数组,每次都要去查相关函数,去解析或者生成,在此做一次记录,方便以后使用。按照我自己的使用习惯,根据数组元素的不同,把数组分成了三种,一般数组,嵌套数组和元素为包含多条数据的json对象的数组。生成相关函数一般数组/* These utilities create an Array of count items. */CJSON_PUBLIC(

2021-01-05 15:27:28 19311 4

原创 C语言json格式校验

C语言json格式校验最近用到json格式数据传输信息,在C语言中使用cjson解析json字符串,若json格式不正确,会使整个进程直接挂掉。想到能否在解析前先进行格式校验,通过后再解析,查找资料,网上有现成源码,网址:http://www.json.org/JSON_checker/主要用到两个文件JSON_checker.c和JSON_checker.h,具体用法可以参考main.c。这里参考了博客:C语言如何检测json格式的数据合法性 中的用法,并加以改进。在官网中提供了json检查的测试文

2020-12-30 16:25:52 2167 2

原创 python练手习题

python练习近期通过廖雪峰Python教程了解了python,把练习过程记录下来。以下的题目除了《图书管理》,其他都是在网上搜的,参考链接。因为之前基本用C语言,对于python的命名规范,以及编程习惯还不是很熟,目前只是实现功能。1. 编写一个程序,以球体的半径(浮点数)作为输入,输出球体的直径、圆周长、表面积、体积。pi = 3.14class Cball: def __init__(self, r): self.r = r def diameter(s

2020-12-24 19:26:48 1387 1

原创 C语言大小端问题

C语言大小端问题int main(){ /* 我的第一个 C 程序 */ int a = 1; /* char *p = &a; int i = 0; for(i = 0; i < sizeof(a); i++) { printf("[%p][%d][%x]\n",p, i, *p++); } printf("%s \n", isBigEndian() ? "big" : "small"); */ int num = 202008210;

2020-12-16 20:52:19 566

原创 C语言处理不确定个数参数

C语言处理不确定个数参数C语言没有像C++中函数重载功能,对于不确定参数个数的函数,需要通过va_list实现参数的提取。一、概念va_list 是在C语言中解决变参问题的一组宏,所在头文件:#include <stdarg.h>1)va_list在头文件中的定义为:#ifdef _M_ALPHAtypedef struct { char *a0; /* pointer to first homed integer argument */

2020-12-15 19:32:12 2669

原创 C语言实现GB2312和UTF8之间的编码转换

C语言实现GB2312和UTF8之间的编码转换GB2312GB2312编码适用于汉字处理、汉字通信等系统之间的信息交换,基本集共收入汉字6763个和非汉字图形字符682个。GB2312中对所收汉字进行了“分区”处理,字符集分成94个区,每区含有94个汉字/符号,这种表示方式也称为区位码。01-09区为特殊符号。16-55区为一级汉字,按拼音排序。56-87区为二级汉字,按部首/笔画排序。10-15区及88-94区则未有编码。举例来说,“啊”字是GB2312之中的第一个汉字,它的区位码就是160

2020-11-17 20:05:10 7617 2

原创 使用openssl中的RSA加密解密

使用openssl中的RSA加密解密1. 概念理解RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。2. openssl中的RSA使用linux控制台下openssl工具的简单使用:1)安装opensslsudo apt-get install libssl-dev2)生成一个密钥:openssl genrsa -out test.key 1024这里-out指定生成文件的,即私钥,后面的1024是生成密钥的长度。3)op

2020-11-12 14:29:17 8102

原创 C语言获取linux shell命令返回值

C语言获取linux shell命令返回值C语言执行linux shell命令,对于没有返回结果的,可直接使用system()函数,对于有返回结果的,可以用popen命令,对其封装后,可以获取相应的返回信息,封装函数如下:int SystemRtn(const char* Cmd, char* pbyRtnStr){ FILE *fp; int rc = 0; char result_buf[256]; int nOnceLen = 0; int nTotalLen = 0; int i

2020-09-10 16:34:37 1849 2

原创 获取openwrt mac地址

获取openwrt mac地址在openwrt控制台输入 ifconfig,可以获取当前设备网络信息,mac地址也在其中,我们可以通过shell命令取出来。br-lan Link encap:Ethernet HWaddr 52:CE:C3:A0:88:D7 inet addr:192.168.250.10 Bcast:192.168.250.255 Mask:255.255.255.0 inet6 addr: fdc7:de6f:69f5::1/

2020-09-10 16:20:49 3872

原创 linux自定义log日志

linux自定义log日志近期调式项目需要,要在设备上加入log功能,网上有了解到Linux下自带syslog,没有具体研究,好像需要配置。然后想自己实现一个log功能,于是开始整理思路:代码中加入log点能够打印到文件;文件达到一定大小自动切换到另外一个文件,两个文件交替使用;保证实时性一开始查找到一些把程序运行的打印直接打印到文件方法,如下:1)假设我的程序是test,运行test$ test > result.txt这样printf的输出就存储在result.txt中了。

2020-09-03 13:54:44 1375 4

原创 linux系统下usleep()异常

linux系统下usleep()异常使用usleep时候有时候会出现失效的情况,查找资料发现有一个更好的延时函数可以解决这个问题,即select函数,usleep()是个短延迟,应该使用select,它可以达到一个时钟中断的周期精度。使用方法/*sleep in us*/void usSleep(unsigned int nusecs){ struct timeval tval; tval.tv_sec = nusecs / 1000000; tval.tv_us

2020-09-03 09:33:26 1947

原创 关于select函数超时时间问题

关于select函数超时时间问题select函数使用int select(int n,fd_set * readfds,fd_set * writefds,fd_set * exceptfds,struct timeval * timeout);具体参数说明:1、 int n是一个整数值,是指集合中所有文件描述符的范围,即所有文件描述符的最大值加1,不能错!在Windows中这个参数的值无所谓,可以设置不正确。2、fd_set *readfds是指向fd_set结构的指针,这个集合中应该包括文件

2020-08-24 19:10:23 12536 3

原创 Linux下串口接收到0x0D自动变为0x0A问题

Linux下串口接收到0x0D自动变为0x0A问题2020年8月7日用串口发送十六进制数据0x0D时,在嵌入式linux下打印出来发现变成了0x0A,查询资料发现,0x0D对应的ASCII码是CR (carriage return),即回车键,0x0A对应的ASCII码为LF (NL line feed, new line),即换行键。0x0DCR回车键0x0ALF换行键查资料发不止是0x0D,还有0x11, 0x13 都会出现错误。通过设置串口参数,可以解决以上问

2020-08-07 14:59:31 3018 1

原创 用c语言浮点输出时,如何让小数点后没用的0不显示

动态控制浮点数小数位数2020年7月29日存在问题C语言把浮点数直接通过sprintf函数保存在字符数组中,末尾的0显得很多余,想办法把末尾的0去掉。解决问题在打印时,通过格式控制输出,一般情况使用%f即可输出浮点数,我们通过 %.*f ,动态控制小数位,其中“ * ”控制小数位个数。下面直接上代码:int CutFloatEndZero(float fVal, char* poutval){ int i; int nCnt = 0; int nlen = 0; char abyVal

2020-07-29 14:36:00 15468

原创 C语言函数返回指针问题

C语言函数返回指针问题今天写代码时想用一个函数返回一个结构体指针,结果出错了,然后做一个总结。下面是出错的示例:int *fun( ){ int a ; return &a; // 返回局部变量的地直,返回后这个变量已不存在了}局部变量是保存在栈中的,随着函数的结束,局部变量也被释放,当函数执行完毕后,指针指向的地址是存在的,但它指向的数据已经不在了。总结子函数想要返回指针,指针必须指向一个确定的地址,一般有两种1)静态变量(全局静态或局部静态),这种变量不会随着子函数的结

2020-06-23 19:27:29 1033 1

原创 QT5发布程序自动拷贝依赖库

QT5发布程序自动拷贝依赖库2020年6月16日09点01分按照网上说的方法,尝试了都不太好用,这里直接给出可靠方法,只需5步。1.编译好release版的exe程序后,将其拷贝到指定目录中,如下:2.在电脑上找到如下图标:3.直接打开,就进入QT安装下的目录,如下:4.根据以上目录,输入:windeployqt.exe D:\tmp\aaa\pic_test.exe即通过windeployqt可执行程序,把D:\tmp\aaa\pic_test.exe可执行程序依赖的库拷贝到其目录中。

2020-06-16 09:04:20 971

原创 makefile编译时按颜色打印不同信息

Makefile按颜色打印警告/错误等信息1.在Linux上安装color_cpmpile,地址: git源码地址2.解压unzip color-compile-master.zip3.编译 (注意make前面有“\”)\make /*使用的是系统的 make 来编译,而非 alias 定义的别名*/4.安装 (install 的工作是 copy color_cpmpile 到 /usr/local/bin 中,并向 ~/.bashrc末尾添加配置)sudo \make instal

2020-06-11 19:27:39 1295

原创 关于获取时间戳函数gettimeofday的用法小结

Linux下gettimeofday函数2020年6月8日16点33分函数头文件及原型为:#include<sys/time.h>int gettimeofday(struct timeval*tv,struct timezone *tz )参数:struct timeval{ long tv_sec;/*秒*/ long tv_usec;/*微妙*/};struct timezone{ int tz_minuteswe

2020-06-08 16:40:05 1807 2

原创 获取openwrt wan口ip方法

2020年5月14日18点20分输入以下命令后,直接返回ip,在函数中使用时,可以封装popen函数来执行shell命令,获取返回结果。有线上网wan口ipubus call network.interface.wan status | grep \"address\" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'有线上网wan口dnsubus call network.interface.wan status | gr

2020-05-14 18:27:53 8347 2

原创 简单Makefile使用小结

欢迎使用Markdown编辑器你好! 这是我第一次使用Markdown编辑器。2020年5月6日14点28分 好头脑不如烂笔头,从今天开始记录一些工作中的知识点,以后回顾起来也比较方便。Makefile知识编写嵌套makfile,一种自上而下的简单思路: 1.在顶层目录写一个主makefile,用来控制进入每个子模块; 2.在顶层目录新建一个MakeCfg目录,在目录中新建...

2020-05-06 15:14:39 172

c语言json格式校验代码

使用http://www.json.org/JSON_checker/中的文件,支持中文。

2020-12-30

空空如也

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

TA关注的人

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