深圳公司网站建设网页建设软件
深圳公司网站建设,网页建设软件,茶山东莞网站建设,wordpress 高并发崩溃目录
1.开发逻辑图及模块
2.编程实现语音和开发板通信
3.手机接入Linux热拔插相关,打开手机开发者模式允许USB调试
4.用shell指令来操作手机屏幕#xff0c;模拟手动滑屏幕
5.最终主程序代码 1.开发逻辑图及模块
逻辑图#xff1a; 模块
#xff08;1#xff09;语音…目录
1.开发逻辑图及模块
2.编程实现语音和开发板通信
3.手机接入Linux热拔插相关,打开手机开发者模式允许USB调试
4.用shell指令来操作手机屏幕模拟手动滑屏幕
5.最终主程序代码 1.开发逻辑图及模块
逻辑图 模块
1语音模块 SU-03T
2开发板全志H616
3一部手机
接线语音模块TXB7接RXVCC接VCCGND接GND
配置好语音模块 2.编程实现语音和开发板通信 通配符编译 代码示例
vi uartTool.c
#include stdio.h
#include stdlib.h
#include stdint.h
#include stdarg.h
#include string.h
#include termios.h
#include unistd.h
#include fcntl.h
#include sys/ioctl.h
#include sys/types.h
#include sys/stat.h
#include wiringSerial.hchar myserialGetchar (const int fd)
{char x;if(read (fd,x,1) ! 1)return -1;return x;
}int myserialOpen (const char *device, const int baud)
{struct termios options ;speed_t myBaud ;int status, fd ;switch (baud){case 9600: myBaud B9600 ; break ;case 115200: myBaud B115200 ; break ;}if ((fd open (device, O_RDWR | O_NOCTTY | O_NDELAY | O_NONBLOCK)) -1)return -1 ;fcntl (fd, F_SETFL, O_RDWR) ;// Get and modify current options:tcgetattr (fd, options) ;cfmakeraw (options) ;cfsetispeed (options, myBaud) ;cfsetospeed (options, myBaud) ;options.c_cflag | (CLOCAL | CREAD) ;options.c_cflag ~PARENB ;options.c_cflag ~CSTOPB ;options.c_cflag ~CSIZE ;options.c_cflag | CS8 ;options.c_lflag ~(ICANON | ECHO | ECHOE | ISIG) ;options.c_oflag ~OPOST ;options.c_cc [VMIN] 0 ;options.c_cc [VTIME] 100 ; // Ten seconds (100 deciseconds)tcsetattr (fd, TCSANOW, options) ;ioctl (fd, TIOCMGET, status);status | TIOCM_DTR ;status | TIOCM_RTS ;ioctl (fd, TIOCMSET, status);usleep (10000) ; // 10mSreturn fd ;
}void serialSendstring (const int fd, const char *s)
{int ret;ret write (fd, s, strlen (s));if (ret 0)printf(Serial Puts Error\n);
}
int serialGetstring (const int fd, char *buffer)
{int n_read;n_read read(fd, buffer,32);return n_read;
}
vi uartTool.h
int myserialOpen (const char *device, const int baud);
void serialSendstring (const int fd, const char *s);
int serialGetstring (const int fd, char *buffer);
char myserialGetchar (const int fd);vi uartTest.c
#include stdio.h
#include stdlib.h
#include stdint.h
#include stdarg.h
#include string.h
#include termios.h
#include unistd.h
#include fcntl.h
#include sys/ioctl.h
#include sys/types.h
#include sys/stat.h
#include unistd.h
#include pthread.h
#include uartTool.hint fd;void* readSerial()
{char cmd;while(1){cmd myserialGetchar(fd);switch(cmd){case N:printf(next\n);break;case P:printf(pre\n);break;case Z:printf(zan\n);break;case Q:printf(qu\n);break;}}
}
int main(int argc, char **argv)
{char deviceName[32] {\0};pthread_t readt;if(argc 2){printf(uage:%s /dev/ttyS?\n,argv[0]);return -1;}strcpy(deviceName, argv[1]);if( (fd myserialOpen(deviceName, 115200)) -1){printf(open %s error\n,deviceName);return -1;}pthread_create(readt, NULL, readSerial,NULL);while(1){sleep(10);}
}3.手机接入Linux热拔插相关,打开手机开发者模式允许USB调试
a. 把手机接入开发板
b. 安装adb工具在终端输入adb安装指令 sudo apt-get install adb
c. 输入命令dmesg能查看到手机接入的信息但是输入adb devices会出现提醒 dinsufficient permissions for device: user in plugdev group; are your udev rules wrong?
d. 配置文件以支持USB设备的热拔插支持UDEV的机制 在/etc/udev/rules.d 文件夹下创建规则文件 cd /etc/udev/rules.d/ sudo vim 51-android.rules 在文件中添加内容 SUBSYSTEMusb, ENV{DEVTYPE}usb_device, MODE0666
e. 在手机开发者选项中打开USB调试重新拔插手机
f. 手机弹出调试提醒点确认手机调试模式 重新拔插一下输入命令 adb devices显示SerialNumber 4.用shell指令来操作手机屏幕模拟手动滑屏幕 adb shell input swipe 540 1300 540 500 100 向下滑动 540是水平的1300是竖直方向下是500
adb shell input swipe 540 500 540 1300 100 向上滑动
adb shell seq 3 | while read i;do input tap 350 1050 input tap 350 1050 sleep 0.05;done; 双击屏幕实现点赞功能
adb shell input keyevent 26 锁屏 5.最终主程序代码
vi uartTest.c
#include stdio.h
#include stdlib.h
#include stdint.h
#include stdarg.h
#include string.h
#include termios.h
#include unistd.h
#include fcntl.h
#include sys/ioctl.h
#include sys/types.h
#include sys/stat.h
#include unistd.h
#include pthread.h
#include uartTool.hint fd;void* readSerial()
{char cmd;while(1){cmd myserialGetchar(fd);switch(cmd){case N:printf(next\n);system(adb shell input swipe 540 1300 540 500 100);break;case P:printf(pre\n);system(adb shell input swipe 540 500 540 1300 100);break;case Z:printf(zan\n);system(adb shell \seq 3 | while read i;do input tap 350 1050 input tap 350 1050 sleep 0.05;done;\);break;case Q:printf(qu\n);system(adb shell input keyevent 26);break;}}
}
int main(int argc, char **argv)
{char deviceName[32] {\0};pthread_t readt;if(argc 2){printf(uage:%s /dev/ttyS?\n,argv[0]);return -1;}strcpy(deviceName, argv[1]);if( (fd myserialOpen(deviceName, 115200)) -1){printf(open %s error\n,deviceName);return -1;}pthread_create(readt, NULL, readSerial,NULL);while(1){sleep(10);}
}编译
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88131.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!