自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux RV1126开发板 + AIR780E模块配置RNDIS网络

此时,使用lsusb命令可以看到 AIR780E在开发板上枚举出来的PID和VID1d91 和 0001 就是VID和PID。

2024-07-18 16:15:40 799

原创 ubuntu 编译交叉环境arm 版本的openssl库

我的交叉环境是RV1126开发板,/home/rpdzkj/development/cross-compile-tools/rv1126/ 对应的是我电脑里的RV1126开发板的交叉环境下的gc g++等路径存放。此时就会在源码目录声场libssl.so 和libcrypto.so文件。此时我们file命令看一下这两个库的属性,可以看到的确是arm平台的。所以我们需要修改生成的MakeFile文件将-m64去掉。将Makefile里这两个-m64删掉。

2024-06-24 15:08:13 395

原创 城市公共交通IC卡消费流程

指令:00A4 + 04 + 00 + AID长度 + AID具体可参照城市公共交通IC卡技术规范第二部分 应用指令 选择命令部分。

2024-05-31 17:52:49 813

原创 QT 编译Lua 动态库,使用Lua脚本混合编程

上面的代码调用luaL_requiref方法注册本地的C++方法,jts是我们自己定义的一个模块名,jtslist数组就是我们注册的c++方法,意思是,我们将这些c++方法注册到了模块jts里面,左边的一列是lua可以调用的方法名,右边的一列是本地C++方法的指针 ,例如上面的str2hex 是暴露给lua脚本的方法名 lua_str2hex是c++方法。scard_lua.lua就是我们要调用的lua脚本,这个脚本也可以调用c++的方法。那么Lua脚本如何调用到这个C++方法呢?

2024-05-31 15:00:59 899

原创 Qt 客户端程序Udp通信和广播

注意:这里第一个IP一定要填写本机的IP,由于电脑端可能会有多个iP的情况,例如虚拟IP 或者 WiFiIP之类的,对于某些IP,广播之后肯能不成功或者接收不到数据,所以可能需要用户在界面上选择本机IP并且进行多次尝试不同的本机IP进行广播。绑定端口需要传入参数,第一个参数是本机设备的IP地址,第二个参数是目标地址的端口。2,广播的时候发送给目标地址是固定的 ,一般是255.255.255.255。1,广播的时候建立连接的时候需要绑定本机的IP,正常通信不需要。下面是获取本机IP的方法。

2024-05-31 11:21:51 374

原创 Qt项目使用pato mqtt C

然后将头文件移植到我们的项目中,我将头文件放到了include目录下,所以才配置上面的include目录下,头文件可以从pato-mqtt3c的源代码copy出来,为了方便,我将源代码中所有的头文件都copy到了我的项目里了,我在include目录里创建了一个mqtt目录,用来放头文件。要发布消息的时候,我们只需要利用信号和槽机制,发送publis信号,就可以发布消息,具体我没有写,可以根据自己的业务需求,绑定。下面是我自己写的一个MQTT手法的一个工具类,我是用线程实现的。

2024-05-28 18:47:43 1095

原创 minicom 的使用

minicom是linux上常用的一个串口工具,这个工具可以将电脑端的文件发送到设备端或者将设备端的文件发送到电脑端。选择退出即可打开对应的串口,只需要设置一次,下次直接执行minicom指令就可以进入到串口,沿用之前的配置。进入minicom命令界面后 直接 使用 sz 设备文件路径 即可将设备上的文件传输到 电脑当前目录。使用 minicom -c on 这样进入minicom就会显示颜色。5,minicom 中文乱码,解决方案。4,链接到指定的串口并显示颜色。之后,就可以正确显示中文字符了。

2024-05-07 16:06:57 502

原创 ubuntu下qrencode arm 环境编译和使用

可以看到export CC export CXX AR LD 等这些环境变量都设置成了自己交叉编译环境的路径,可根据自己环境惊醒配置,这样就可以编译出适配自己开发板的.so文件。我有一个Linux 环境 V3S的qrm开发板,我需要在开发板上实现一个生成二维码的功能,于是想到了qrencode 这个库。传入要生成二维码的数据,和要生成文件的路径,就可以生成一个二维码到这个路径下面,路径是包含文件名的。在make 之前,我先执行这个脚本,就可以生成arm版本的.so文件。

2024-05-07 15:37:25 275 1

原创 c++ strtok 和 strsep 的区别

这个时候会打印出 4567后面两个逗号没有值的情况,对于某些业务需要按顺序赋值的情况就不会出错了,建议使用strsep。但是但是对于分隔符相连,但是中间没有数组的情况下,strttok会跳过strsep则不会。可以看出来完全忽略了 4567后面两个逗号之间没有数据的情况,直接跳过了。strtok和 strsep 都可以按指定字符截取字符串。

2024-04-29 10:51:08 144

原创 cmake工程,如何构建完工程后执行指定的脚本

这样,编译完我的so库文件后就会行我放在cmakeList.txt同级目录下的cp_so.sh脚本文件,至于脚本文件怎么写就看各自的需求啦。我有一个QT的camke工程,这个工程的主要目的是编译一个so文件,编译完成后会将这个so文件copy到另一个工程里使用。为了省去这个手动copy的动作,我需要在编译完成so库后就将so文件copy过去,如何操作呢?我要编译一个libscardlua.so的文件。

2024-03-15 17:40:36 290

原创 编译安卓版本的ssl.o

export ANDROID_NDK=ndk目录。在源码根目录下运行该脚本。1,电脑:ubutun。2,配置NDK环境变量。

2024-03-01 16:39:35 323

原创 c++ 使用libcurl进行http请求报错500

请求到后台后,直接报错500了该问体是因为,请求内容过长的时候如果后默认会有一个EXpect的头信息,需要后台进行响应,如果后台没有处理这个头信息则会报错500。当我使用libcurl请求后台,数据过长的时候,请求头部会有一个这样的信息。这个时候客户端请求的时候可以去掉这个头部信息就可以请求正常了。

2023-10-11 11:31:06 347

原创 C++ 如何使用curl 库 进行http请求,获取返回的头信息的时间,也就是获取后台服务的当前时间

【代码】C++ 如何使用curl 库 进行http请求,获取返回的头信息的时间,也就是获取后台服务的当前时间。

2023-06-30 16:00:35 1448 1

原创 QT pro文件末尾添加QMAKE_POST_LINK

QT编译

2023-02-09 16:34:21 560

原创 CURL框架进行http请求

curl库进行http post get 下载文件等方法

2023-02-09 15:21:59 263

原创 QThread的用法(单一线程一直执行单一任务)

QThread的特殊用法

2023-02-09 14:53:20 359 1

原创 QT使用 get请求

QNetworkAccessManager进行get请求

2023-02-08 19:07:02 1182

原创 使用adb shell 命令接收串口发送过来的16进制数据 或者 发送16进制数据

如果我们再android设备上调试串口的时候,有时我们需要使用adb shell命令,假设我们使用串口发送的数据是16进制,那么使用cat 这个设备节点,有可能显示的是乱码例如。此时我们就可以看到串口另一端发过来的16进制数据了。找到你要发送或者接收串口数据的设备。

2022-11-23 15:57:58 3295

原创 Android jni c++ 线程中调用java中的方法

Android C++调用java侧的方法

2022-06-21 18:28:51 1617

原创 Android系统源码下载

1,ubuntu电脑2,下载 repo 工具:mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo3,建立工作目录:mkdir WORKING_DIRECTORYcd WORKING_DIRECTORY4,初始化仓库:repo init -u https://mirro

2022-05-07 21:49:44 716

原创 如何操作/dev/graphics/fb0 并显示文字

最近,公司的有一个需求,在Android的设备上挂了一个SPI的小屏幕 ,设备节点为/dev/graphics/fb0 需要显示一张图片或者一些文字,于是网上搜索整理了一些思路:1,我的设备是spi的小屏,屏幕的尺寸为320*240,所以只能显示这么大的空间 2,要操作/dev/graphics/fb0 对于Android上层来讲,就像操作文件一样,因此要把这个设备节点当成文件一样进行流的读写操作 3,我这个屏只能显示rgb565 的像素格式,我是怎么知道的,网上有一篇博客讲的很详细,...

2022-02-22 12:14:31 3420 1

原创 Socket通讯中使用DataInputStream 接收数据不全的问题

当我们通过socket进行通讯的时候,接收数据,大家一贯的写法可能是下面这样的 //接收数据 byte[] b = new byte[len]; is = socket.getInputStream(); input = new DataInputStream(is); input.read(b);.

2021-05-10 12:28:56 1594 1

原创 如何去掉,要将音量调高到推荐水平以上的弹框

在开发pos设备的过程中,会发现这种问题,当用代码设置音量的时候回出现"要将音量调高到推荐水平以上"这种弹框,如果你不点击,弹框会自动消失,但是音量会还是推荐的默认音量如下:我开发的pos机是没有触屏事件的,而且我想每次开机后都想要设置成最大音量,如何解决?当我调用设置音量的方法 mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, //音量类型 volume,...

2021-03-05 10:21:20 1767 2

原创 synchronized 的简单理解使用

synchronized(this)//此处this指的是进入此代码块的线程对象(也就是那个对象调用了该方法,就表示当前锁是那个对象),如果t1进来了,那么锁住t1,若t1时间片结束了,t2走到此处也只能在上一句代码处等待t1获得了时间片后执行完synchronized锁住的所有代码,t2才能进去执行,若去掉synchronized(this),则t1和t2随时都可以进来执行此段代码中的任何一步,时间到了另一个接着进来执行synchronized 修饰方法用范围是整个方法,所以方法中所有的.

2020-12-04 16:31:29 1810 1

原创 Lancher3在androidStudio中运行 ,安卓8.1代码中的Lancher3代码

问题一:Lancher3是多渠道打包,所以找不到這个产品,直接注释掉:问题二:同上:直接注释掉问题三:解决方案:在defaultConfig中添加flavorDimensions属性配置成成默认或者根据自己需要:问题四:找不到依赖 直接将版本改成了26.0.0问题五:根据提示,意思是不能再AndroidManifest.xml中声明最小sdk的默认版本,所以我直接将该配置在AndroiudManife...

2020-10-13 14:40:42 311

原创 安卓静默安装或升级后,apk不自动解决方案,Android 8.1

由于做的产品是pos机,不是一个普通的app,所以需要使用静默升级的工能1,静默升级代码:publicstaticStringsilentInstallApkByReflect(StringapkPath,Contextcontext){Stringresult="";try{PackageManagerpackageManager=context.getPackageManager();...

2020-10-09 15:41:45 792 1

原创 Android Toast 防止重复弹出

如果有这样一个场景,用户不停的狂点某一个按钮,而这时这个按钮刚好就会触发一个Toast弹框,是不是就会出现,Toast不消失的现象。如果这个时候你是这样的现象,那么你的Toast一定是这样写的Toast.makeText(CrashApplication.getApplication(),text,duration).show();这样写就会造成Toast重复弹框的问题。现在有这样一个工具类,可以防止Toast重复弹框,直接上代码importandroid.os.Handler;...

2020-10-09 15:35:14 1105

原创 安卓Log4a框架的使用

1.下载log4a的源码,编译运行 项目地址https://github.com/pqpo/Log4a2,将librarylog4a模块下的项目java代码copy到自己的项目中3,将jniLibs目录下面按的so文件copy到自己的项目中,copy自己需要的armera平台4,将loginit这个java文件copy到自己的项目中5,修改 代码里的缓存log路径和Log文件路径,修改成自己想要放在你自己项目的位置6,修改缓存文件的缓存buffer,改成自己想要的大小,该值...

2020-08-21 16:52:43 1179 1

原创 安卓MQTT协议的的使用,并使用protobuf协议传输数据

1,导入2个jar包2,在AndroidManifest中添加Service<service android:name="org.eclipse.paho.android.service.MqttService" />然后在代码中定义自己的Servce.例如我的叫:MQTTService3,在我们服务启动的时候调用init方法进行初始化MQTT测操作 private void init() { String uri = host;

2020-08-19 16:38:29 3285 2

原创 mmkv框架移植

最近不想用Android原生的SharedPreferences存储方式了,中所周知,SharedPreferences会存在卡顿的现象。也许有人想改用apply()的提交方式,但这样会存在数据丢失的现象。于是想使用腾讯的MMKV框架存储兼职对。问题来了,当我使如下方式引入框架的时候,编译后直接提示编译失败,提示我的项目里的so文件都找不到了。implementation 'com.tencent:mmkv:1.0.22'分析了一下,可能与我项目中使用so库的方式有关,因为我项目中是将s.

2020-08-18 17:07:00 1086

原创 安卓 ScrollView 显示绿边

今天碰到一个问题,发现我的ScrollView 总会有一个绿色的边,不管我如何设置Scrollview的样式,总是存在这条绿色的边框如下:设置scrollview的背景,设置父布局的背景,设置scrollview里面的背景都不起作用,包括在设置scrollbar也不起作用。一直郁闷的,不知道什么原因,开始一直以为是scrollview控件的问题,我用的系统是安卓8.1,看了源码,也没发现什么猫腻。最后终于发现原来是焦点问题,scrllview的边框不是本身的颜色,是因为它获取了焦点才会有

2020-08-07 17:21:29 471 1

原创 原生RadioButton 修改颜色或者样式

1,如果只是修改颜色的话我们只需要在xml文件的RadioButton 中添加一个属性android:buttonTint="@color/color_main"指定你想要的颜色就可以了2,如果要修改radioButton的原始样式,则需要自定义一个selector 例如:radio_group_selector.xml<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://sc...

2020-07-29 17:27:33 1853

原创 webViwe 报错 For security reasons, WebView is not allowed in privileged processes

问题起源:当我们申请我们的app为系统应用,也就是当我们在AndroidManifest文件中添加android:sharedUserId="android.uid.system"这一行的时候,如果我们使用webView就会报错:For security reasons, WebView is not allowed in privileged processes。这个是8.0代码中的一种安全机制。网上查找资料,解决方案都是通过Hook技术根本思想是在异常发生前就给sProvider.

2020-06-03 13:49:16 7363 2

原创 读书笔记 《深入理解安卓内核设计思想》获取ServiceManager服务 二

上一把我们分析了如下函数​static jobject android_os_BinderInternal_getContextObject(JNIEnv* env, jobject clazz){ sp<IBinder> b = ProcessState::self()->getContextObject(NULL); return javaObjectForIBinder(env, b);}​通过该函数我们会拿到一个ServiceManger对应的服

2020-05-29 09:28:22 299

原创 读书笔记 《深入理解安卓内核设计思想》获取ServiceManager服务 一

1,应用程序只需要调用ServiceManager.getService(name)就可以获取到获取到相应的服务 /** * Returns a reference to a service with the given name. * * @param name the name of the service to get * @return a reference to the service, or <code>null</cod

2020-05-20 16:30:06 1101

原创 读书笔记 《深入理解安卓内核设计思想》 ServiceManagager的启动构建

1,启动方式:通过解析init.rc文件启动ServiceManager2,调用/frameworks/native/cmds/servicemanager/Service_manager.c 的main方法3,main方法所做的工作

2020-05-20 12:10:14 189

原创 JNI调用总结

一,CMakeLists 英文文档:https://cmake.org/documentation/中文文档:https://www.zybuluo.com/khan-lau/note/2547241,路径配置,在buildGradle的android层目中进行配置例如:externalNativeBuild {cmake {path "src/main/cpp/CMakeLists.txt"version "3.10.2"}}pat...

2020-05-14 09:27:48 631

原创 读书笔记 深入理解安卓内核设计思想 ---Android启动过程

一,安卓设备启动三阶段 Bootloader LinuxKernel 和Android系统服务·二,第一个系统进程init PID是0三,陆续启动其他关键性的服务进程 ServieManager Zygote SystemServer四,ServiceManager的启动crical选项说明是系统关键进程,该进程四分钟内异常退出,则设备重启进入还原模式,Z...

2020-05-06 18:48:10 415 1

原创 读书笔记 《Android源码设计模式解析与实战》--- 单例模式

1,恶汉单例public class Singleton { private final static Singleton INSTANCE = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return INSTANCE;...

2020-05-06 16:27:10 139

原创 buildGradle中配置属性

有时候为了方便,我们需要将某一些属性配置在buildGradle中,例如,想让一个app项目适配两种不同的系统或者机型,代码编译或者打包的时候可能需要引用不同的配置就需要在buileGradle中进行不同的配置。如果想定义一个boolean类型的属性,我们可以下在android的 defaultConfig结点中写buildConfigField "boolean", "isPx30",...

2020-03-19 10:00:03 703

Android java和C互相调用.docx

cmkadelist基础,java调用C的各种方法,C调用Java的方法,C获取java成员变量的值

2020-05-13

空空如也

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

TA关注的人

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