|
一、硬件配置参考:http://bbs.yoxios.com/forum.php? ... &extra=page%3D1

ESP8266引脚和接线(官方论坛提供的接口)
X3开发板 | ESP8266模块 | VCC3.3 | VCC | GND | GND | U2TX | RX | U2RX | TX | 普通IO / 悬空 | RST | SPICS | CH_PD/EN |
这里我做的唯一和论坛的区别是在硬件上将WIFI使能管脚(CH_PD/EN)直接接到3.3V,这样软件上不需要使能该管脚,上电即使能。 二、 UI布局
三、代码逻辑这个项目的核心代码主要是在jni/logic/mainlogic.cc这个文件下编写,参考官网及论坛demo后修改程序如下: mainLogic.cc #include <stdlib.h>
#include <iostream>
#include "string"
#include "uart/ProtocolSender.h"
#include "uart/UartContext.h"
string sendMsg, showMsg;
bool WifiConnet = false;
struct {
string name;
string password;
string IP;
string port;
} WifiConFig;
/**
* 串口数据回调接口
*/
static void onProtocolDataUpdate(BYTE *key, int readNum) {
// 串口数据回调接口
char* p = new char[readNum];
memcpy(p, key, readNum);
p[readNum] = 0;
if (strstr(p, "ready") != NULL) {
showMsg = "";
mTextView3Ptr->setText(showMsg);
return;
}
showMsg += p;
mTextView3Ptr->setText(showMsg);
}
static void WifiReset() {
string s = "AT+CWMODE=1\r\n";
UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
s = "AT+RST\r\n";
UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
mTextView3Ptr->setText("wifi 初始化");
}
static void WifiConnect() {
WifiConFig.name = "Smart_Car";
WifiConFig.password = "12345678";
string s = "AT+CWJAP=\"" + WifiConFig.name + "\",\"" + WifiConFig.password
+ "\"\r\n";
UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
mTextView3Ptr->setText("wifi 连接");
}
static void WifiTCPConnect() {
string s = "AT+CIPMUX=0\r\n";
UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
usleep(500000);
s = "AT+CIPMODE=1\r\n";
UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
usleep(500000);
//连接服务器
WifiConFig.IP = "192.168.4.1";
WifiConFig.port = "8080";
s = "AT+CIPSTART=\"TCP\",\"" + WifiConFig.IP + "\"," + WifiConFig.port
+ "\r\n";
UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
usleep(100000);
//进入透传模式
s = "AT+CIPMODE=1\r\n";
UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
usleep(100000);
//开始透传数据
s = "AT+CIPSEND\r\n";
UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
usleep(100000);
mTextView3Ptr->setText("TCP 连接");
mTextView5Ptr->setText("Smart_Car 192.168.4.1 8080");
}
/**
* 定时器触发函数
* 不建议在此函数中写耗时操作,否则将影响UI刷新
* 参数:id
* 当前所触发定时器的id,与注册时的id相同
* 返回值: true
* 继续运行当前定时器
* false
* 停止运行当前定时器
*/
static bool onUI_Timer(int id) {
//Tips:添加定时器响应的代码到这里,但是需要在本文件的 REGISTER_ACTIVITY_TIMER_TAB 数组中 注册
//id 是定时器设置时候的标签,这里不要写耗时的操作,否则影响UI刷新,ruturn:[true] 继续运行定时器;[false] 停止运行当前定时器
switch (id) {
case 0:
WifiConnect();
return false;
break;
case 1:
WifiTCPConnect();
return false;
break;
default:
break;
}
return true;
}
/**
* 有新的触摸事件时触发
* 参数:ev
* 新的触摸事件
* 返回值:true
* 表示该触摸事件在此被拦截,系统不再将此触摸事件传递到控件上
* false
* 触摸事件将继续传递到控件上
*/
static bool onmainActivityTouchEvent(const MotionEvent &ev) {
switch (ev.mActionStatus) {
case MotionEvent::E_ACTION_DOWN: //触摸按下
LOGD("时刻 = %ld 坐标 x = %d, y = %d", ev.mEventTime, ev.mX, ev.mY);
//前进
if (ev.mX > 180 && ev.mX < 290 && ev.mY > 70 && ev.mY < 106) {
string s = "GO\r\n";
UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
}
//后退
if(ev.mX > 180 && ev.mX < 290 && ev.mY > 180 && ev.mY < 208)
{
string s = "BACK\r\n";
UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
}
//左
if(ev.mX > 65 && ev.mX < 131 && ev.mY > 128 && ev.mY < 165)
{
string s = "LEFT\r\n";
UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
}
//右
if(ev.mX > 298 && ev.mX < 400 && ev.mY > 131 && ev.mY < 166)
{
string s = "RIGHT\r\n";
UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
}
break;
case MotionEvent::E_ACTION_MOVE: //触摸滑动
break;
case MotionEvent::E_ACTION_UP://触摸抬起
LOGD("按键抬起");
string s = "STOP\r\n";
UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
break;
default:
break;
}
return false;
}
//连接小车
static bool onButtonClick_Button5(ZKButton *pButton) {
LOGD(" ButtonClick Button5 !!!\n");
WifiReset();
mActivityPtr->registerUserTimer(0, 3000);
mActivityPtr->registerUserTimer(1, 8000);
return false;
}
其中小车部分控制逻辑参考: [color=var(--weui-LINK)]圆曾经的小车梦,造一台智能小车(四)之QT上位机控制小车
https://mp.weixin.qq.com/s?__biz=MzA3MjMzNTc4NA==&mid=2649000197&idx=2&sn=e99bdcb8397b438843b1c5c87a95fdfa&chksm=870fc1c2b07848d4db16bd5bd7c0a65efe2da6c6acac7116f8c5e68cb9fa6e549879c0dc0d0a&scene=21#wechat_redirect [color=var(--weui-LINK)]圆曾经的小车梦,造一台智能小车(三)之小车前进后退左右转基本框架 https://mp.weixin.qq.com/s?__biz=MzA3MjMzNTc4NA==&mid=2649000128&idx=1&sn=d986eba52a862604846b3e52c96b7d5d&chksm=870fc007b0784911b766cf64f391147490889b7bdccdf3cd2a6887d6f2c00e0a478194a9fd04&scene=21#wechat_redirect 四、运行结果 参考: https://mp.weixin.qq.com/s?__biz=MzA3MjMzNTc4NA==&mid=2649000366&idx=1&sn=4d5417dc80b5b012b055c48d4b6e2851&chksm=870fc169b078487f7851e09fed6efd94a9698f9dfbffd7428e4414d97342624ba9f0b5d55595&token=1286262349&lang=zh_CN#rd
|
|