学习日志(十五)
基于Linux串口的语音控制刷抖音(略版)
接线
语音模块配置
指令:
烧录固件即可。
Orangepi配置
ADB工具作用:
ADB(android debug brige)
安卓 调试 桥
用一句话形容就是:ADB是我们用来操作(调试)android设备(比如android手机)的一套指令集。
我们要通过Shell来操作android操作系统,而在android和IDE(开发环境)之间需要靠ADB来桥接。
ADB的安装以及支持USB热插拔支持Udev机制
先安装ADB(安卓调试桥)用于连接和通过shell指令控制安卓手机。
安装命令:
sudo apt-get install adb
输入adb指令查看与adb连接的设备
指令:
adb devices
发现(设备没有操作权限,说白了没有对应的文件柄):
所以需要:配置文件,以支持USB设备的热插拔,支持UDEV的机制
在/etc/udev/rules.d 文件夹下创建规则文件51-android.rules
并且输入内容:
SUBSYSTEM==“usb”, ENV{DEVTYPE}==“usb_device”, MODE=“0666”
输入命令:
sudo vim /etc/udev/rules.d/51-android.rules
写入:
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"
重新热插拔手机再次用adb devices查看连接的设备时,还有一个坑:需要手动在手机上确认同意USB调试
所用到的Shell指令
向下滑动540是水平的,1300是竖直方向,下是500
adb shell input swipe 540 1300 540 500 100
向上滑动
adb shell input swipe 540 500 540 1300 100
点赞
adb shell "seq 4 | while read i;do input tap 350 1050 & input tap 350 1050 &sleep 0.01;done;"
锁屏
adb shell input keyevent 26
主体代码
1 #include "uartTool.h"
2 #include "pthread.h"
3 #include "string.h"
4 #include "unistd.h"
5 #include "stdlib.h"
6 #include "stdio.h"
7
8 int fd;
9
10 void* readSerial()
11 {
12 char cmd;
13 while(1){
14 cmd = myserialGetchar(fd);
15 switch(cmd){
16 case 'N':
17 system("adb shell input swipe 540 1300 540 500 100");
18 printf("next\n");
19 break;
20 case 'P':
21 system("adb shell input swipe 540 500 540 1300 100");
22 printf("preview\n");
23 break;
24 case 'Z':
25 system("adb shell \"seq 4 | while read i;do input tap 350 1050 & input tap 350 1050 & sleep 0.01;done;\"");
26 printf("dian zan\n");
27 break;
28 case 'Q':
29 system("adb shell input keyevent 26");
30 printf("quit\n");
31 break;
32 }
33 }
34 }
35 int main(int argc,char **argv)
36 {
37 char deviceName[32];
38 pthread_t readt;
39
40 if(argc<2){
41 printf("uage:%s /dev/ttyS?\n",argv[0]);
42 return -1;
43 }
44
45 strcpy(deviceName,argv[1]);
46 if((fd = serialOpen(deviceName,115200)) == -1){
47 printf("open %s error \n",deviceName);
48 return -1;
49 }
50
51 pthread_create(&readt,NULL,readSerial,NULL);
52 while(1){sleep(10);}
53
54 return 0;
55 }
测试现象略。。。