树莓派gpio编程(二)声控器输入

 分类:C++, Others, Others 阅读 (45)  树莓派gpio编程(二)声控器输入已关闭评论
8月 222019
 
一、编程语言

使用c语言和wiringPi库

具体见树莓派gpio编程(一)控制Led灯

二、硬件连接

对于这种开关量的传感器,一般有三个针脚VCC、GND、OUT,通常情况下连接方式如下:

vcc接树莓派引脚的3.3v

gnd接树莓派的gnd

out接树莓派gpio0

三、软件编写

新建inputtest.c,并输入以下内容

四、软件编译

使用下面的命令编译程序

五、运行程序

在控制台中输入以下命令运行程序

./inputtest

六、运行结果

当发出声音,声控器被触发的时候会输出input is 1

否则输出input is 0

七、其他说明
  1. 对于避障器、测速器等开关量的传感器都可以使用此程序读取输入
 Posted by on 2019-08-22

软件开发中用到的几种图

 分类:Others, Others 阅读 (33)  软件开发中用到的几种图已关闭评论
8月 152019
 

一、思维导图

二、流程图

三、DFD数据流图

四、时序图

五、UML类图

 Posted by on 2019-08-15

Linux下使用dd制作树莓派系统盘

 分类:Linux, Operating System, Others, Others 阅读 (294)  Linux下使用dd制作树莓派系统盘已关闭评论
7月 052019
 
一、文章背景

  本文基于Ubuntu16,pi zero WH,树莓派镜像版本2019-06-20_raspbian_full

  树梅派官方推荐使用Etcher制作镜像,但是下载速度实在是太慢了,使用dd也可以搞定。

二、下载镜像

  官网镜像下载地址:https://www.raspberrypi.org/downloads/raspbian/

  首先下载树梅派系统镜像包,是一个zip文件,如:2019-06-20_raspbian_full_latest.zip

  解决zip包后得到img镜像文件,如:2019-06-20-raspbian-buster-full.img

三、准备sd卡

  将sd卡连接电脑,然后执行df -h

  拔掉sd卡后再执行一次df -h

  有变化的那一项即是sd卡的设备名称,如:/dev/sdc1

  /dev/sdc即是sd卡的主设备名,先执行下面命令卸载它的子分区

  假如还有sdc2、sdc3统统卸载掉

四、烧录系统

  执行下面的命令烧录系统

  if=后面是镜像所在的路径

  of=后面是sd卡设备名称

 Posted by on 2019-07-05

树莓派无键盘情况下配置无线网络

 分类:Others, Others 阅读 (202)  树莓派无键盘情况下配置无线网络已关闭评论
7月 032019
 

转载自:http://shumeipai.nxez.com/2017/09/13/raspberry-pi-network-configuration-before-boot.html

 

不算是什么新功能了,在树莓派3B发布后不久,树莓派官方 Raspbian 系统久加入了允许在开机前对 WiFi 网络进行配置的机制。

注意,这个方法仅适用于全新安装树莓派系统到 SD 卡之后没有做过任何 Wi-Fi 配置的情况下有效。如果你之前配置过 Wi-Fi,再用本方法系统会默认使用已有的配置而忽略这里的配置。因此建议使用前重新安装系统。

一、WiFi 网络配置

用户可以在未启动树莓派的状态下单独修改 /boot/wpa_supplicant.conf 文件配置 WiFi 的 SSID 和密码,这样树莓派启动后会自行读取 wpa_supplicant.conf 配置文件连接 WiFi 设备。

操作方法简单:将刷好 Raspbian 系统的 SD 卡用电脑读取。在 boot 分区,也就是树莓派的 /boot 目录下新建 wpa_supplicant.conf 文件,按照下面的参考格式填入内容并保存 wpa_supplicant.conf 文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
 
network={
ssid="WiFi-A"
psk="12345678"
key_mgmt=WPA-PSK
priority=1
}
 
network={
ssid="WiFi-B"
psk="12345678"
key_mgmt=WPA-PSK
priority=2
scan_ssid=1
}

说明以及不同安全性的 WiFi 配置示例:
#ssid:网络的ssid
#psk:密码
#priority:连接优先级,数字越大优先级越高(不可以是负数)
#scan_ssid:连接隐藏WiFi时需要指定该值为1

如果你的 WiFi 没有密码

1
2
3
4
network={
ssid="你的无线网络名称(ssid)"
key_mgmt=NONE
}

如果你的 WiFi 使用WEP加密

1
2
3
4
5
network={
ssid="你的无线网络名称(ssid)"
key_mgmt=NONE
wep_key0="你的wifi密码"
}

如果你的 WiFi 使用WPA/WPA2加密

1
2
3
4
5
network={
ssid="你的无线网络名称(ssid)"
key_mgmt=WPA-PSK
psk="你的wifi密码"
}

如果你不清楚 WiFi 的加密模式,可以在安卓手机上用 root explorer 打开 /data/misc/wifi/wpa/wpa_supplicant.conf,查看 WiFi 的信息。

二、开启 SSH 服务

如果通过 ssh 连接树莓派出现 Access denied 这个提示则说明 ssh 服务没有开启。要手动开启的话,和 WiFi 配置相似,同样在 boot 分区新建一个文件,空白的即可,文件命名为 ssh。注意要小写且不要有任何扩展名。
树莓派在启动之后会在检测到这个文件之后自动启用 ssh 服务。随后即可通过登录路由器找到树莓派的 IP 地址,通过 ssh 连接到树莓派了。(有关开启 SSH 服务的详细方法

如果需要远程桌面方式操作树莓派,可以通过 ssh 安装 xrdp,再用 Windows 的远程桌面客户端连接到树莓派

这个小技巧对于没有有线网卡、没有标准 USB 接口来直连键鼠,但集成了 WiFi 的树莓派 Zero W 尤其实用。

 Posted by on 2019-07-03
6月 282018
 
1.简单介绍

Android.mk是Android源码编译系统的Makefile,用于编译系统中的C++和Java的动态库\静态库\可执行文件和apk等.
其大概格式如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_STATIC_JAVA_LIBRARIES := libarity android-support-v4 guava
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_SDK_VERSION := current
LOCAL_PACKAGE_NAME := Calculator
include $(BUILD_PACKAGE)

##################################################
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libarity:arity-2.1.2.jar
include $(BUILD_MULTI_PREBUILT)

# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))

2.常用语法格式介绍

上面的示例中共涉及到三类语法
1)变量的定义,比如其中的LOCAL_PATH为定义的变量,可以在其他地方被调用
变量不是必须全部大写或者必须以LOCAL_开头,可以是其他形式的,因为安卓的编译系统会加载所有的mk文件到一个环境里面,所以定义变量应该加上一个特殊的前缀,防止覆盖一些全局的变量.
2)my-dir为mk系统中预定义的宏,通过$(call my-dir)来调用
mk系统中还定义了很多其他的宏,这些定义均在build/core/definitions.mk中,有兴趣的可以浏览一下这个文件
3)include语法包含其他的mk文件
我们可以看到示例中有一个include $(BUILD_PACKAGE),其实BUILD_PACKAGE是在buile/core/config.mk中定义一个变量,如下:
BUILD_PACKAGE:= $(BUILD_SYSTEM)/package.mk
这一行代码其实是把package.mk包含到了编译步骤中,用于编译Calculator这个apk
4)shell命令

3.mk文件结构介绍

1)通常都以LOCAL_PATH开始,指定当前工程的路径,一般也是使用my-dir宏指定,如下:
LOCAL_PATH := $(call my-dir)

2)编写具体模块编译脚本
首先确定编译模块的类型,是静态c++库\动态C++库还是可执行程序,或者jar包或者apk,参见"模块编译类型定义"部分.
a. 一个mk文件中可以编译多种类型的模块,每个模块一般都是以include $(CLEAR_VARS)开始
CLEAR_VARS实际上是引用的build/core/clear_vars.mk文件,用于清除部分以LOCAL_开始的变量(不会清除LOCAL_PATH),具体可以浏览clear_vars.mk

b. 然后定义编译这个模块所需要用到的一些LOCAL_变量,比如如下:
LOCAL_STATIC_JAVA_LIBRARIES := libarity android-support-v4 guava  #编译apk用到的静态库
LOCAL_SRC_FILES := $(call all-java-files-under, src) # 要编译的源码
LOCAL_PACKAGE_NAME := Calculator #包名

c. include + 编译类型 结尾,如:
include $(BUILD_PACKAGE)

4.模块编译类型定义

mk系统支持多种类型的编译,这些类型都在build/core/config.mk中定义,每种编译类型由一个特定的mk文件去处理,如下是在Android4.4系统中抓取的编译类型定义.
BUILD_HOST_STATIC_LIBRARY:= $(BUILD_SYSTEM)/host_static_library.mk
BUILD_HOST_SHARED_LIBRARY:= $(BUILD_SYSTEM)/host_shared_library.mk
BUILD_STATIC_LIBRARY:= $(BUILD_SYSTEM)/static_library.mk
BUILD_RAW_STATIC_LIBRARY := $(BUILD_SYSTEM)/raw_static_library.mk
BUILD_SHARED_LIBRARY:= $(BUILD_SYSTEM)/shared_library.mk
BUILD_EXECUTABLE:= $(BUILD_SYSTEM)/executable.mk
BUILD_RAW_EXECUTABLE:= $(BUILD_SYSTEM)/raw_executable.mk
BUILD_HOST_EXECUTABLE:= $(BUILD_SYSTEM)/host_executable.mk
BUILD_PACKAGE – 构建一个Android apk
BUILD_PHONY_PACKAGE:= $(BUILD_SYSTEM)/phony_package.mk
BUILD_HOST_PREBUILT:= $(BUILD_SYSTEM)/host_prebuilt.mk
BUILD_PREBUILT:= $(BUILD_SYSTEM)/prebuilt.mk
BUILD_MULTI_PREBUILT:= $(BUILD_SYSTEM)/multi_prebuilt.mk
BUILD_JAVA_LIBRARY:= $(BUILD_SYSTEM)/java_library.mk
BUILD_STATIC_JAVA_LIBRARY:= $(BUILD_SYSTEM)/static_java_library.mk
BUILD_HOST_JAVA_LIBRARY:= $(BUILD_SYSTEM)/host_java_library.mk
BUILD_DROIDDOC:= $(BUILD_SYSTEM)/droiddoc.mk
BUILD_COPY_HEADERS := $(BUILD_SYSTEM)/copy_headers.mk
BUILD_NATIVE_TEST := $(BUILD_SYSTEM)/native_test.mk
BUILD_HOST_NATIVE_TEST := $(BUILD_SYSTEM)/host_native_test.mk
BUILD_NOTICE_FILE := $(BUILD_SYSTEM)/notice_files.mk

 Posted by on 2018-06-28
6月 182018
 

一、任务相关基本命令

  1. 查看所有任务

  2. 如果你的项目有多个模块,只想查看某个模块,使用如下命令(app为模块的名称):

  3. 显示任务的详细信息

  4. 执行一个任务

二、一些可能用到的辅助任务命令,这些任务名称会显示在./gradlew tasks的执行结果中

  1. 显示项目的Android依赖树

  2. 显示项目的源码定义

  3. 显示项目的签名信息

  4. 打印子模块列表

  5. 打印项目中用到的所有依赖树

三、其他命令

  1. 查看gradle版本和构建环境信息

 

 

 

 Posted by on 2018-06-18

vlc可用模块列表

 分类:Others, Others 阅读 (1,303)  No Responses »
5月 242018
 

使用如下命令可以获取一份vlc模块列表

下面是我本地生成的:

 

 Posted by on 2018-05-24
5月 242018
 

使用protocol buffers提供的工具protoc进行编译,将proto文件生成相关的java和c++文件,命令行大致如下:

~/下载/protoc-3.2.0-linux-x86_64/bin/protoc –plugin=protoc-gen-grpc-java=/media/win150g/document/grpc/grpc-java/compiler/build/exe/java_plugin/protoc-gen-grpc-java –grpc-java_out=lite:/media/win150g/document/grpc/GrpcTestApp/app/src/main/java –plugin=protoc-gen-grpc-cpp=/media/win150g/document/grpc/grpc-cpp/grpc/bins/opt/grpc_cpp_plugin –grpc-cpp_out=./ –cpp_out=./  –java_out=/media/win150g/document/grpc/GrpcTestApp/app/src/main/java test.proto

各参数说明:

相关链接:

各种开发工具的plugin附件

grpc_ruby_plugin grpc_python_plugin grpc_php_plugin grpc_objective_c_plugin grpc_csharp_plugin  protoc-gen-grpc-java grpc_cpp_plugin

 Posted by on 2018-05-24
11月 172017
 

  每次下载安卓源码都要花1天的多的时间,而且在公司下载几十个G也占用别的人网速,所以对于只关注部分代码的人,可以只同步某些项目,这样节省时间和带宽。
本文所说内容是以你repo init成功为基础的。
  首先打开源码目录下的.repo目录,打开manifest.xml,里面是一个子项目列表,其中xml节点中的name属性为我们需要用的
比如下载platform/packages/apps/Bluetooth的命令如下:

  有的时候这个manifest.xml并没有你想要的那个项目,你可以根据安卓官方的源码结构添加进去,比如下面几个就是我手动添加的:

  另外如果你想同时下载多个项目也是支持的,在不同的项目后面加上空格分隔即可,如下:

 链接:

  1. 安卓官方源码库:https://android.googlesource.com/
  2. 清华镜像下载:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

 

 Posted by on 2017-11-17

vlc命令大全

 分类:Others, Others 阅读 (1,459)  No Responses »
5月 082017
 

使用如下命令即可获得此帮助信息

本博文是基于VLC media player 2.2.2的

如果需要查看最新的,请使用上面所说的命令重新获取