0%

关于字节理解

字节(Byte):计算机信息技术用于计量存储容量的一种计量单位,作为一个单位来处理的一个二进制数字串。

其中下发指令或处理数据时都可以应用到

  • 1B(byte,字节)= 8 bit(比特), 相当于一个字符
  • 一个字节能表示的最大的整数就是255
  • 例如: 数据为5d000001be5d理解为6个字节(6B)

ARRAYBUFFER转16进度字符串

1
2
3
4
5
6
7
8
9
10
// ArrayBuffer转16进度字符串示例
function ab2hex(buffer) {
var hexArr = Array.prototype.map.call(
new Uint8Array(buffer),
function(bit) {
return ('00' + bit.toString(16)).slice(-2)
}
)
return hexArr.join('');
}
阅读全文 »

Android开发 动态申请存储权限、短信权限等的方式
软件首次安装在有新版本时,下载新版本出错,查看错误后发现是读写存储权限未授予,到设置中手动给权限后下载就会正常,解决方法就是动态申请存储权限,如下:

阅读全文 »

简介

NTP是从时间协议(Time Protocol)和ICMP时间戳报文(ICMP TimeStamp Message)演变而来,在准确性和健壮性方面进行了特殊的设计,理论上精度可达十亿分之一秒。
NTP协议应用于分布式时间服务器和客户端之间,实现客户端和服务器的时间同步,从而使网络内所有设备的时钟基本保持一致。
NTP协议是基于UDP进行传输的,使用端口号为123。

阅读全文 »

最近在做广告发布终端,基于安卓开发的app,但是在系统或者其他原因会导致异常错误弹窗提示,所以本文旨在去掉这些异常弹窗,增加使用体验

Android7.1屏蔽掉弹出无响应对话框和已停止对话框
代码路径:
/frameworks/base/services/core/java/com/android/server/am/AppErrors.java

handleShowAppErrorUi()handleShowAnrUi() dialog.show()之前 添加包名的判断、过滤或者屏蔽掉弹窗显示即可
以下是实际修改的内容

阅读全文 »

很多初学者听到线程会觉得晦涩难懂,很多资料一堆专有名词也是让人心烦意乱,本着学习加分享的态度,这里做一个简单的实例分享帮助初学者们初识多线程。
首先大概讲述一下多线程和多进程的区别,任务管理器里各种不同的进程就是多进程,或者是你同时运行多个”.exe’程序就可以理解为多进程,多进程是要更多消耗CPU资源的。
多线程是相对于进程里更小的单位,比如3个线程在1个进程里进行不同的操作,他们所拥有的资源就是那个进程里的资源,不会占用更多资源,只是通过线程更合理的分配资源。
好,大概区分清楚两者后我们进入线程模式!

阅读全文 »

一、PWM信号简介

  • PWM:脉冲宽度调制,简称脉宽调制
  • 频率(f):一秒钟PWM有多少个周期(单位Hz)
  • 周期(T):一个周期的时间
  • 占空比(duty):在一个脉冲周期内,高电平的时间与整个周期时间的比例
  • 脉宽时间:一个周期内高电平时间
  • 占空比越大,输出的有效电压越高。

    二、ESP32中的LEDC(PWM控制器)

  • LEDC:指LED PWM控制器,即PWM信号产生器。
  • LED_PWM有16路通道(0~15)
  • 8路高速通道(0~7),由80MHz时钟驱动
  • 8路低速通道(8~15),由8MHz时钟驱动

    三、产生PWM信号的流程

    使用Arduino 通过PWM调光LED必须遵循的步骤:
  1. 首先,选择一个PWM通道,从0到15共有16个通道。

  2. 然后,设置PWM信号频率。对于LED来说,使用5000 Hz的频率是合适的。

  3. 设置信号的占空比分辨率,分辨率从1到16位。此处将使用8位分辨率,可以使用0到255的值来控制LED亮度(2的8次方)。

    1
    ledcSetup(0, 30000, 8); // pwm通道, 频率, 精度
  4. 指定信号将出现在哪个或哪些GPIO上。为此,将使用以下函数:

    1
    ledcAttachPin(GPIO, channel)       //输出信号的GPIO,产生信号的通道。
  5. 使用PWM控制LED亮度,可以使用以下函数:
    1
    ledcWrite(channel, dutycycle);       // PWM信号的通道和占空比

3.1 LEDC频率与分辨率的关系

7c78c8eb42d29ae93a68e224c7485da1.jpeg

4aac65a593fa35e71173d9b1387a519e.jpeg

3.2 LEDC频率与最大分辨率表

1dc9b31603e691d22537e849a1cd084b.jpeg

3.3 使用LEDC输出PWM的示例程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <Arduino.h>

int pwmA = 12;
int pwmB = 13;
int pwmC = 14;

void setup()
{
// 建立LEDC通道
ledcSetup(0, 30000, 8); // pwm频道, 频率, 精度
ledcSetup(1, 30000, 8); // pwm频道, 频率, 精度
ledcSetup(2, 30000, 8); // pwm频道, 频率, 精度

// 将GPIO与LEDC通道绑定
ledcAttachPin(pwmA, 0);
ledcAttachPin(pwmB, 1);
ledcAttachPin(pwmC, 2);

// 输出PWM
ledcWrite(0, 255);
ledcWrite(1, 255);
ledcWrite(2, 255);
}

void loop()
{
}

虽然之前在STM32的博文里面的其中一篇讲PWM的博文已经讲过了,但在这里再讲一遍,我们手里的舵机模块基本都是靠时基脉冲中的占空比调节来控制的,那再具体再说的通俗一点呢?就是比如我的时基为20ms , 要求舵机转到0度的所要求的的占空比为0.5ms,那么我们就需要以20ms为一个周期,每个周期内的高电平时间为0.5ms(这就是占空比),然后其余时间为低电平即可,而具体到我手上的这个360度舵机呢,说实话不建议大家使用360度舵机,因为360度舵机失去了舵机最大的优势就是角度调节,我可以控制比如180度的舵机能够精确转动到哪一个位置,但是360度舵机不行,我们只能控制他正反转以及正反转速度,但是控制方法是一模一样的,下边是示例代码

阅读全文 »

修改logo图片可参考手册,动画可以提供一个参考,不同的地方自行修改

root@08df03d23758:~/workspace/allwinner/android/device/softwinner/a40-p1/media#

将动画放入:device/vendor-name/device-name/media/bootanimation.zip

阅读全文 »