一级标题

二级标题

三级标题

四级标题

五级标题
六级标题

无序列表

  • 项目一
  • 项目二
  • 项目三
    • 子项目
    • 子项目

有序列表

  1. 项目一
  2. 项目二
  3. 项目三
    1. 二级项目
    2. 二级项目
      1. 三级项目
      2. 三级项目
  4. 项目四

一级引用

二级引用

三级引用


粗体:Markdown
斜体:Markdown
粗体+斜体:Markdown
删除线:MarkDown
网址:liuchang.men
使用脚注1


TODOLIST


关于 latex 公式

行内公式:\(E=mc^2\)

单行公式:

\(x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}\)


来张图片吧


这是表格

Tables(左对齐) Are(居中对齐) Cool(右对齐)
1 right-aligned $1600
2 centered $12
3 are neat $1

代码测试

行内代码 nano

代码块

1
2
import math
print("hello world!")
1
2
3
4
5
6
#include <stdio.h>

int main() {
printf("hello world!\n");
return 0;
}
1
2
3
4
5
6
7
#include <iostream>
using namespace std;

int main() {
cout << "hello world!" << endl;
return 0;
}

  1. Hi 这是一个注脚,会自动拉到最后排版↩︎

App Inventor开发

App Inventor 2

Android应用开发者(英语:App Inventor)是一款卡通图形界面的Android智能手机应用程序开发软件。它起先由Google提供的应用软件,现在由麻省理工学院维护及营运。

借助IA2 建立一个简易的游戏手柄。因为AI2 的蓝牙串口通讯协议是基于SPP(Serial Port Profile)串行端口配置。我们目的是并设定相对应代码,在手机发送,在树莓派解析,并对小车进行运动控制。

对应代码如下:

  • u –> 前进 gofront()

  • d –> 后退 goback()

  • l –> 左转 turnleft()

  • r –> 右转 turnright()

  • s –> 停止 istop()

每次代码运行周期为20ms

ai2截面图

树莓派蓝牙SPP设置

树莓派蓝牙配置

  1. 安装支持包

    1
    2
    sudo apt-get install pi-bluetooth
    sudo apt-get install bluetooth bluez blueman
  2. 添加pi用户到蓝牙组

    1
    2
    sudo usermod -G bluetooth -a pi
    service bluetooth status
  3. 启动/增加SPP

    1
    sudo nano /etc/systemd/system/dbus-org.bluez.service

    修改内容如下:

    1
    2
    ExecStart=/usr/lib/bluetooth/bluetoothd -C
    ExecStartPost=/usr/bin/sdptool add SP
  4. 重启,启动蓝牙串口

    1
    sudo rfcomm watch hci0

串口调试软件xgcom

1
2
3
4
5
6
7
sudo git clone https://github.com/helight/xgcom.git
sudo apt-get install make automake libglib2.0-dev libvte-dev libgtk2.0-dev
cd xgcom
sudo ./autogen.sh
sudo make
sudo make install
xgcom

展示与控制代码

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import serial
import time
from btbu_robot.motor import motor
bluetooth = serial.Serial("/dev/rfcomm0",9600,timeout=0.5)

#bluetooth.open()
left = motor(22, 27, 17)
right = motor(24, 23, 18)
def gofront():
left.run(70)
right.run(70)
# print("前进")

def goback():
left.run(-70)
right.run(-70)
#print("后退")

def turnleft():
left.run(-70)
right.run(70)
#print("左转")

def turnright():
#print("右转")
left.run(70)
right.run(-70)

def istop():
left.run(0)
right.run(0)
#print("停止")

status = '' # 记录当前状态
if __name__ == '__main__':
while True:
data = bluetooth.readline().decode('utf-8')
if status == 'u': # 前进
gofront()

elif status == 'd': # 后退
goback()

elif status == 'l': # 左转
turnleft()

elif status == 'r': # 右转
turnright()

elif status == 's': # 停止
istop()
while data != '':
status = data[0]
if status == 'u': # 前进
gofront()

elif status == 'd': # 后退
goback()

elif status == 'l': # 左转
turnleft()

elif status == 'r': # 右转
turnright()

elif status == 's': # 停止
istop()
data = data[1:]
time.sleep(0.02)
time.sleep(0.02)

一个多月前和小伙伴熬了3天完成了2017数学建模,最后结果暂时还没出,估计也不理想。

但是好不容易写完论文,感觉排版不好,于是借助国赛\(\LaTeX\)模板,对论文进行重新排版,并且进一步完善。

经过前前后后一个月的时间,倒是做完了。现在看来,结果怎样倒是没什么了,有了这一次\(\LaTeX​\)排版的经验,反而收获不少。

顺便附上排版环境与最终论文:

  • 系统:Ubuntu 17.10 amd64
  • tex发行版本:texlive-2017
  • LaTex编译器:xelatex
  • bibTex编译器:xelatex
  • 编辑器:atom(插件:atom-latex language-latex pdf-view simplified-chinese-menu)

latex模板地址

拍照赚钱”的任务定价与任务分配的分析与探讨.pdf

WAV作为音频文件,其格式规则由微软和IBM共同制定。常用作无压缩的文件格式。

作为音频文件,文件特征包括:声道数,量化位数\((8bit, 16bit, 24bit)\),取样频率\((16khz, 22khz……)\)

wav格式文件所占容量\((B) = (取样频率 * 量化位数 * 声道数) * 时间 / 8\),除以8 的原因是因为 1字节 = 8bit

为了方便查看具体的编码的细节,我们首先先介绍下Ubuntu下一款16进制的文本查看器hexdump,其相应参数说明如下:

  • hexdump -C <== 规范的十六进制和ASCII码显示(Canonical hex+ASCII display )
  • hexdump -b <== 单字节八进制显示(One-byte octal display)
  • hexdump -c <== 单字节字符显示(One-byte character display)
  • hexdump -d <== 双字节十进制显示(Two-byte decimal display)
  • hexdump -o <== 双字节八进制显示(Two-byte octal display)
  • hexdump -x <== 双字节十六进制显示(Two-byte hexadecimal display)

比较来比较去,还是hexdump -C的显示效果更好些。

具体的编码方式定义如下:

起始地址 大小(byte) 数据块类型 内容
00H 4 字符 资源交换文件标志(RIFF)
04H 4 长整数 从下个地址开始到文件尾的总字节数
08H 4 字符 WAV文件标志(WAVE)
0CH 4 字符 波形格式标志(fmt ),最后一位空格。
10H 4 整数 过滤字节(一般为00000010H),若为00000012H则说明数据头携带附加信息(见“附加信息”)。
14H 2 整数 为1时表示线性PCM编码,大于1时表示有压缩的编码。这里是0001H
16H 2 整数 通道数,1为单声道,2为双声道。这里是0001H。
18H 4 长整数 采样频率,这里00001f40H = 8000 Hz
1CH 4 长整数 byte率(每秒平均字节数) = 采样频率×通道数×位数/8 003e80H = 16000 = 8000116/8
20H 2 整数 DATA数据块长度(字节)
22H 2 整数 PCM 位宽,0010H即16,一个量化样本占2byte。
随后2字节 2 整数 附加信息(可选,由上方过滤字节确定)
随后4字节 4 字符 数据标示符(data)
随后4字节 4 长整数 DATA总数据长度字节
随后 DATA数据块 00a640H = 42560
0%