(十五)基于Linux串口的语音控制刷抖音(略版)

学习日志(十五)

基于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 }

测试现象略。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小爪.exe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值