package com.example.car.car;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.logging.SocketHandler;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.logging.SocketHandler;
public class MainActivity extends AppCompatActivity {
Button btnUP,btnCenter,btnDown,btnLeft,btnRight,btnPutdown,btnRiseup,btnHold,btnRelease,btnConn;
EditText etIP;
Toast tst;
ButtonListener b = new ButtonListener();
char buffer[] = new char[5];
private static StringBuffer mConsoleStr = new StringBuffer();
private Socket mSocket;
private boolean isStartRecieveMsg;
private static StringBuffer mConsoleStr = new StringBuffer();
private Socket mSocket;
private boolean isStartRecieveMsg;
private SocketHandler mHandler;
protected BufferedReader mReader;//BufferedWriter 用于推送消息
protected BufferedWriter mWriter;//BufferedReader 用于接收消息
protected BufferedReader mReader;//BufferedWriter 用于推送消息
protected BufferedWriter mWriter;//BufferedReader 用于接收消息
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.land_main);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.land_main);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
btnUP=(Button)findViewById(R.id.btnUP);
btnDown=(Button)findViewById(R.id.btnDown);
btnLeft=(Button)findViewById(R.id.btnLeft);
btnCenter=(Button)findViewById(R.id.btnCenter);
btnRight=(Button)findViewById(R.id.btnRight);
btnHold=(Button)findViewById(R.id.btnHold);
btnRelease=(Button)findViewById(R.id.btnRelease);
btnPutdown=(Button)findViewById(R.id.btnPutDown);
btnRiseup=(Button)findViewById(R.id.btnRiseUp);
btnConn=(Button)findViewById(R.id.btnConnect);
etIP=(EditText)findViewById(R.id.etIP);
btnDown=(Button)findViewById(R.id.btnDown);
btnLeft=(Button)findViewById(R.id.btnLeft);
btnCenter=(Button)findViewById(R.id.btnCenter);
btnRight=(Button)findViewById(R.id.btnRight);
btnHold=(Button)findViewById(R.id.btnHold);
btnRelease=(Button)findViewById(R.id.btnRelease);
btnPutdown=(Button)findViewById(R.id.btnPutDown);
btnRiseup=(Button)findViewById(R.id.btnRiseUp);
btnConn=(Button)findViewById(R.id.btnConnect);
etIP=(EditText)findViewById(R.id.etIP);
btnUP.setOnClickListener(b);
btnUP.setOnTouchListener(b);
btnDown.setOnClickListener(b);
btnDown.setOnTouchListener(b);
btnLeft.setOnClickListener(b);
btnLeft.setOnTouchListener(b);
btnRight.setOnClickListener(b);
btnRight.setOnTouchListener(b);
btnCenter.setOnClickListener(b);
btnPutdown.setOnClickListener(b);
btnHold.setOnClickListener(b);
btnRelease.setOnClickListener(b);
btnRiseup.setOnClickListener(b);
btnConn.setOnClickListener(b);
btnUP.setOnTouchListener(b);
btnDown.setOnClickListener(b);
btnDown.setOnTouchListener(b);
btnLeft.setOnClickListener(b);
btnLeft.setOnTouchListener(b);
btnRight.setOnClickListener(b);
btnRight.setOnTouchListener(b);
btnCenter.setOnClickListener(b);
btnPutdown.setOnClickListener(b);
btnHold.setOnClickListener(b);
btnRelease.setOnClickListener(b);
btnRiseup.setOnClickListener(b);
btnConn.setOnClickListener(b);
}
private void initSocket() {
//新建一个线程,用于初始化socket和检测是否有接收到新的消息
Thread thread = new Thread(new Runnable() {
private void initSocket() {
//新建一个线程,用于初始化socket和检测是否有接收到新的消息
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
String ip = etIP.getText().toString();//IP
int port = 9001;//Socket
public void run() {
String ip = etIP.getText().toString();//IP
int port = 9001;//Socket
try {
isStartRecieveMsg = true;
mSocket = new Socket(ip, port);
mReader = new BufferedReader(new InputStreamReader(mSocket.getInputStream(),"UTF-8"));
mWriter = new BufferedWriter(new OutputStreamWriter(mSocket.getOutputStream(),"UTF-8"));
while(isStartRecieveMsg) {
if(mReader.ready()) {
/*读取一行字符串,读取的内容来自于客户机
reader.readLine()方法是一个阻塞方法,
从调用这个方法开始,该线程会一直处于阻塞状态,
直到接收到新的消息,代码才会往下走*/
String data = mReader.readLine();
//handler发送消息,在handleMessage()方法中接收
//mHandler.obtainMessage(0, data).sendToTarget();
}
Thread.sleep(200);
}
mWriter.close();
mReader.close();
mSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
}
isStartRecieveMsg = true;
mSocket = new Socket(ip, port);
mReader = new BufferedReader(new InputStreamReader(mSocket.getInputStream(),"UTF-8"));
mWriter = new BufferedWriter(new OutputStreamWriter(mSocket.getOutputStream(),"UTF-8"));
while(isStartRecieveMsg) {
if(mReader.ready()) {
/*读取一行字符串,读取的内容来自于客户机
reader.readLine()方法是一个阻塞方法,
从调用这个方法开始,该线程会一直处于阻塞状态,
直到接收到新的消息,代码才会往下走*/
String data = mReader.readLine();
//handler发送消息,在handleMessage()方法中接收
//mHandler.obtainMessage(0, data).sendToTarget();
}
Thread.sleep(200);
}
mWriter.close();
mReader.close();
mSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
}
/**
* 发送
*/
private void send() {
new AsyncTask<String, Integer, String>() {
* 发送
*/
private void send() {
new AsyncTask<String, Integer, String>() {
@Override
protected String doInBackground(String... params) {
sendMsg();
return null;
}
}.execute();
}
protected String doInBackground(String... params) {
sendMsg();
return null;
}
}.execute();
}
/**
* 发送消息
*/
protected void sendMsg() {
OutputStream output =null;
try {
* 发送消息
*/
protected void sendMsg() {
OutputStream output =null;
try {
mWriter.write(buffer);
mWriter.flush();
//output=mSocket.getOutputStream();
//output.write(buff);
//output.write(buff);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
isStartRecieveMsg = false;
}
public void onBackPressed() {
super.onBackPressed();
isStartRecieveMsg = false;
}
class ButtonListener implements View.OnClickListener, View.OnTouchListener {
Toast ttt;
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnCenter:
buffer[2]=0x00;
send();
break;
Toast ttt;
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnCenter:
buffer[2]=0x00;
send();
break;
case R.id.btnPutDown:
buffer[2]=0x11;
send();
break;
case R.id.btnRiseUp:
buffer[2]=0x12;
send();
break;
case R.id.btnHold:
buffer[2]=0x13;
send();
break;
case R.id.btnRelease:
buffer[2]=0x14;
send();
break;
case R.id.btnConnect:
buffer[2]=0x11;
send();
break;
case R.id.btnRiseUp:
buffer[2]=0x12;
send();
break;
case R.id.btnHold:
buffer[2]=0x13;
send();
break;
case R.id.btnRelease:
buffer[2]=0x14;
send();
break;
case R.id.btnConnect:
if(!isStartRecieveMsg) {
initSocket();
initSocket();
buffer[0]=0x33;
buffer[1]=0x00;
buffer[2]=0x00;
buffer[3]=0x00;
buffer[4]=0x33;
buffer[1]=0x00;
buffer[2]=0x00;
buffer[3]=0x00;
buffer[4]=0x33;
}
break;
default:
break;
}
break;
}
}
public boolean onTouch(View v, MotionEvent event) {
switch (v.getId()) {
case R.id.btnUP:
if(event.getAction()==MotionEvent.ACTION_UP) {
//tst = Toast.makeText(MainActivity.this, "up", Toast.LENGTH_SHORT);
//tst.show();
buffer[2]=0x00;
send();
}
if(event.getAction()==MotionEvent.ACTION_DOWN) {
//tst = Toast.makeText(MainActivity.this, "down", Toast.LENGTH_SHORT);
//tst.show();
buffer[2]=0x01;
send();
}
switch (v.getId()) {
case R.id.btnUP:
if(event.getAction()==MotionEvent.ACTION_UP) {
//tst = Toast.makeText(MainActivity.this, "up", Toast.LENGTH_SHORT);
//tst.show();
buffer[2]=0x00;
send();
}
if(event.getAction()==MotionEvent.ACTION_DOWN) {
//tst = Toast.makeText(MainActivity.this, "down", Toast.LENGTH_SHORT);
//tst.show();
buffer[2]=0x01;
send();
}
break;
case R.id.btnDown:
case R.id.btnDown:
if(event.getAction()==MotionEvent.ACTION_UP) {
//tst = Toast.makeText(MainActivity.this, "up", Toast.LENGTH_SHORT);
//tst.show();
buffer[2]=0x00;
send();
}
if(event.getAction()==MotionEvent.ACTION_DOWN) {
//tst = Toast.makeText(MainActivity.this, "down", Toast.LENGTH_SHORT);
//st.show();
buffer[2]=0x02;
send();
}
//tst = Toast.makeText(MainActivity.this, "up", Toast.LENGTH_SHORT);
//tst.show();
buffer[2]=0x00;
send();
}
if(event.getAction()==MotionEvent.ACTION_DOWN) {
//tst = Toast.makeText(MainActivity.this, "down", Toast.LENGTH_SHORT);
//st.show();
buffer[2]=0x02;
send();
}
break;
case R.id.btnLeft:
if(event.getAction()==MotionEvent.ACTION_UP) {
//tst = Toast.makeText(MainActivity.this, "up", Toast.LENGTH_SHORT);
//tst.show();
buffer[2]=0x00;
send();
}
if(event.getAction()==MotionEvent.ACTION_DOWN) {
//st = Toast.makeText(MainActivity.this, "down", Toast.LENGTH_SHORT);
//tst.show();
buffer[2]=0x03;
send();
}
case R.id.btnLeft:
if(event.getAction()==MotionEvent.ACTION_UP) {
//tst = Toast.makeText(MainActivity.this, "up", Toast.LENGTH_SHORT);
//tst.show();
buffer[2]=0x00;
send();
}
if(event.getAction()==MotionEvent.ACTION_DOWN) {
//st = Toast.makeText(MainActivity.this, "down", Toast.LENGTH_SHORT);
//tst.show();
buffer[2]=0x03;
send();
}
break;
case R.id.btnRight:
if(event.getAction()==MotionEvent.ACTION_UP) {
//tst = Toast.makeText(MainActivity.this, "up", Toast.LENGTH_SHORT);
//tst.show();
buffer[2]=0x00;
send();
}
if(event.getAction()==MotionEvent.ACTION_DOWN) {
//tst = Toast.makeText(MainActivity.this, "down", Toast.LENGTH_SHORT);
//.show();
buffer[2]=0x04;
send();
}
case R.id.btnRight:
if(event.getAction()==MotionEvent.ACTION_UP) {
//tst = Toast.makeText(MainActivity.this, "up", Toast.LENGTH_SHORT);
//tst.show();
buffer[2]=0x00;
send();
}
if(event.getAction()==MotionEvent.ACTION_DOWN) {
//tst = Toast.makeText(MainActivity.this, "down", Toast.LENGTH_SHORT);
//.show();
buffer[2]=0x04;
send();
}
break;
default:
break;
}
return false;
}
}
}
}
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <time.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <time.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <wiringPi.h>
#define BUFSIZE 512
#define MOTOR_GO_FORWARD digitalWrite(1,HIGH);digitalWrite(4,LOW); digitalWrite(5,HIGH);digitalWrite(6,LOW)
#define MOTOR_GO_BACK digitalWrite(1,LOW); digitalWrite(4,HIGH);digitalWrite(5,LOW); digitalWrite(6,HIGH)
#define MOTOR_GO_RIGHT digitalWrite(1,HIGH);digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW)
#define MOTOR_GO_LEFT digitalWrite(1,LOW); digitalWrite(4,LOW); digitalWrite(5,HIGH);digitalWrite(6,LOW)
#define MOTOR_GO_STOP digitalWrite(1, LOW);digitalWrite(4,LOW); digitalWrite(5, LOW);digitalWrite(6,LOW)
#define MOTOR_GO_BACK digitalWrite(1,LOW); digitalWrite(4,HIGH);digitalWrite(5,LOW); digitalWrite(6,HIGH)
#define MOTOR_GO_RIGHT digitalWrite(1,HIGH);digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW)
#define MOTOR_GO_LEFT digitalWrite(1,LOW); digitalWrite(4,LOW); digitalWrite(5,HIGH);digitalWrite(6,LOW)
#define MOTOR_GO_STOP digitalWrite(1, LOW);digitalWrite(4,LOW); digitalWrite(5, LOW);digitalWrite(6,LOW)
pthread_t ppid,ppid1,ppid2,ppid3;
int range,range1,range2,range3;
typedef struct CLIENT {
int fd;
struct sockaddr_in addr;
}CLIENT;
int fd;
struct sockaddr_in addr;
}CLIENT;
void microseconds_sleep(unsigned long uSec){
struct timeval tv;
int err;
tv.tv_sec = uSec / 1000000;
tv.tv_usec = uSec % 1000000;
do{
err = select(0,NULL ,NULL , NULL , &tv);
}while((err<0) && (errno == EINTR));
}
//putup
void Duoji_CTL(void) //rang:0-100 map to PWM high puls with 1-2ms PWM_H=range+100
{
int i,j;
int PWM_H=0; //define pwm high time;
range += 10;
if(range > 60)
range = 0;
while(1)
{
PWM_H=(int)((2*range+43)*10);
digitalWrite(10, HIGH);
microseconds_sleep(PWM_H);
digitalWrite(10, LOW);
//putup
void Duoji_CTL(void) //rang:0-100 map to PWM high puls with 1-2ms PWM_H=range+100
{
int i,j;
int PWM_H=0; //define pwm high time;
range += 10;
if(range > 60)
range = 0;
while(1)
{
PWM_H=(int)((2*range+43)*10);
digitalWrite(10, HIGH);
microseconds_sleep(PWM_H);
digitalWrite(10, LOW);
microseconds_sleep(19800-PWM_H);
}
}
}
}
//putdown
void Duoji_CTR(void) //rang:0-100 map to PWM high puls with 1-2ms PWM_H=range+100
{
int i,j;
int PWM_H=0; //define pwm high time;
range1 += 10;
printf("%d\n",range1);
if(range1 > 90)
range1 = 0;
while(1)
{
PWM_H=(int)((2*range1+43)*10);
digitalWrite(11, HIGH);
microseconds_sleep(PWM_H);
digitalWrite(11, LOW);
microseconds_sleep(19800-PWM_H);
}
}
void Duoji_CTR(void) //rang:0-100 map to PWM high puls with 1-2ms PWM_H=range+100
{
int i,j;
int PWM_H=0; //define pwm high time;
range1 += 10;
printf("%d\n",range1);
if(range1 > 90)
range1 = 0;
while(1)
{
PWM_H=(int)((2*range1+43)*10);
digitalWrite(11, HIGH);
microseconds_sleep(PWM_H);
digitalWrite(11, LOW);
microseconds_sleep(19800-PWM_H);
}
}
//hold
void Duoji_CTHOLD(void) //rang:0-100 map to PWM high puls with 1-2ms PWM_H=range+100
{
int i,j;
int PWM_H=0; //define pwm high time;
range2 += 10;
printf("%d\n",range2);
if(range2 > 90)
range2 = 0;
while(1)
{
PWM_H=(int)((2*range2+43)*10);
digitalWrite(26, HIGH);
microseconds_sleep(PWM_H);
digitalWrite(26, LOW);
microseconds_sleep(19800-PWM_H);
}
}
void Duoji_CTHOLD(void) //rang:0-100 map to PWM high puls with 1-2ms PWM_H=range+100
{
int i,j;
int PWM_H=0; //define pwm high time;
range2 += 10;
printf("%d\n",range2);
if(range2 > 90)
range2 = 0;
while(1)
{
PWM_H=(int)((2*range2+43)*10);
digitalWrite(26, HIGH);
microseconds_sleep(PWM_H);
digitalWrite(26, LOW);
microseconds_sleep(19800-PWM_H);
}
}
//realse
void Duoji_CTREALSE(void) //rang:0-100 map to PWM high puls with 1-2ms PWM_H=range+100
{
int i,j;
int PWM_H=0; //define pwm high time;
range2 -= 10;
if(range2 < 0)
range2 = 90;
while(1)
{
PWM_H=(int)((2*range2+43)*10);
digitalWrite(26, HIGH);
microseconds_sleep(PWM_H);
digitalWrite(26, LOW);
microseconds_sleep(19800-PWM_H);
}
}
int main(int argc, char *argv[])
{
int sockfd;
int listenfd;
int connectfd;
int ret;
int maxfd=-1;
struct timeval tv;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
struct sockaddr_in client_addr;
socklen_t len;
int portnumber;
int portnumber;
char buf[BUFSIZE]={0xff,0x00,0x00,0x00,0xff};
int z,i,maxi = -1;
int k;
fd_set rset,allset;
CLIENT client[FD_SETSIZE];
range=0;
range1=0;
range2=0;
range3=0;
/*RPI*/
wiringPiSetup();
/*WiringPi GPIO*/
pinMode (1, OUTPUT); //IN1
pinMode (4, OUTPUT); //IN2
pinMode (5, OUTPUT); //IN3
pinMode (6, OUTPUT); //IN4
int k;
fd_set rset,allset;
CLIENT client[FD_SETSIZE];
range=0;
range1=0;
range2=0;
range3=0;
/*RPI*/
wiringPiSetup();
/*WiringPi GPIO*/
pinMode (1, OUTPUT); //IN1
pinMode (4, OUTPUT); //IN2
pinMode (5, OUTPUT); //IN3
pinMode (6, OUTPUT); //IN4
pinMode (3, OUTPUT); //beed
pinMode (10, OUTPUT); //beed
pinMode (11, OUTPUT); //beed
pinMode (26, OUTPUT); //beed
/*Init output*/
digitalWrite(1,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(1,HIGH);
pinMode (10, OUTPUT); //beed
pinMode (11, OUTPUT); //beed
pinMode (26, OUTPUT); //beed
/*Init output*/
digitalWrite(1,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(1,HIGH);
if(argc != 2)
{
printf("Please add portnumber!");
exit(1);
}
{
printf("Please add portnumber!");
exit(1);
}
if((portnumber = atoi(argv[1]))<0)
{
printf("Enter Error!");
exit(1);
}
{
printf("Enter Error!");
exit(1);
}
if((listenfd = socket(PF_INET, SOCK_STREAM, 0)) == -1)
{
printf("Socket Error!");
exit(1);
}
memset(&server_addr, 0, sizeof server_addr);
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
server_addr.sin_port = htons(portnumber);
if((bind(listenfd, (struct sockaddr *)(&server_addr), sizeof server_addr)) == -1)
{
printf("Bind Error!");
exit(1);
}
if(listen(listenfd, 128) == -1)
{
printf("Listen Error!");
exit(1);
}
{
printf("Listen Error!");
exit(1);
}
for(i=0;i<FD_SETSIZE;i++)
{
client[i].fd = -1;
}
{
client[i].fd = -1;
}
FD_ZERO(&allset);
FD_SET(listenfd, &allset);
FD_SET(listenfd, &allset);
maxfd = listenfd;
printf("waiting for the client's request...\n");
while (1)
{
rset = allset;
{
rset = allset;
tv.tv_sec = 0; //wait 1u second
tv.tv_usec = 1;
ret = select(maxfd + 1, &rset, NULL, NULL, &tv);
if(ret == 0)
continue;
else if(ret < 0)
{
printf("select failed!");
break;
}
else
{
if(FD_ISSET(listenfd,&rset)) // new connection
{
len = sizeof (struct sockaddr_in);
if((connectfd = accept(listenfd,(struct sockaddr*)(&client_addr),&len)) == -1)
{
printf("accept() error");
continue;
}
tv.tv_usec = 1;
ret = select(maxfd + 1, &rset, NULL, NULL, &tv);
if(ret == 0)
continue;
else if(ret < 0)
{
printf("select failed!");
break;
}
else
{
if(FD_ISSET(listenfd,&rset)) // new connection
{
len = sizeof (struct sockaddr_in);
if((connectfd = accept(listenfd,(struct sockaddr*)(&client_addr),&len)) == -1)
{
printf("accept() error");
continue;
}
for(i=0;i<FD_SETSIZE;i++)
{
if(client[i].fd < 0)
{
client[i].fd = connectfd;
client[i].addr = client_addr;
printf("Yout got a connection from %s\n",inet_ntoa(client[i].addr.sin_addr));
break;
}
}
{
if(client[i].fd < 0)
{
client[i].fd = connectfd;
client[i].addr = client_addr;
printf("Yout got a connection from %s\n",inet_ntoa(client[i].addr.sin_addr));
break;
}
}
if(i == FD_SETSIZE)
printf("Overfly connections");
printf("Overfly connections");
FD_SET(connectfd,&allset);
if(connectfd > maxfd)
maxfd = connectfd;
maxfd = connectfd;
if(i > maxi)
maxi = i;
}
else
{
for(i=0;i<=maxi;i++)
{
if((sockfd = client[i].fd)<0)
continue;
maxi = i;
}
else
{
for(i=0;i<=maxi;i++)
{
if((sockfd = client[i].fd)<0)
continue;
if(FD_ISSET(sockfd,&rset))
{
bzero(buf,BUFSIZE + 1);
if((z = read(sockfd,buf,sizeof buf)) >0)
{
buf[z] = '\0';
//printf("num = %d received data:%s\n",z,buf);
/*
for(k=0;k<z;k++)
printf("buf[%d]=%x\n",k,buf[k]);
*/
if(z == 5)
{
if(buf[1] == 0x00)
{
switch(buf[2])
{
case 0x01:MOTOR_GO_FORWARD; printf("forward\n");break;
{
bzero(buf,BUFSIZE + 1);
if((z = read(sockfd,buf,sizeof buf)) >0)
{
buf[z] = '\0';
//printf("num = %d received data:%s\n",z,buf);
/*
for(k=0;k<z;k++)
printf("buf[%d]=%x\n",k,buf[k]);
*/
if(z == 5)
{
if(buf[1] == 0x00)
{
switch(buf[2])
{
case 0x01:MOTOR_GO_FORWARD; printf("forward\n");break;
case 0x11:pthread_create(&ppid , NULL , (void *)(& Duoji_CTR) ,NULL); printf("downup\n");break;
case 0x12:pthread_create(&ppid1 , NULL , (void *)(& Duoji_CTL) ,NULL); printf("putup\n");break;
case 0x13:pthread_create(&ppid2 , NULL , (void *)(& Duoji_CTHOLD) ,NULL); printf("hold\n");break;
case 0x14:pthread_create(&ppid3 , NULL , (void *)(& Duoji_CTREALSE) ,NULL); printf("realse\n");break;
case 0x02:MOTOR_GO_BACK; printf("back\n");break;
case 0x03:MOTOR_GO_LEFT; printf("left\n");break;
case 0x04:MOTOR_GO_RIGHT; printf("right\n");break;
case 0x00:MOTOR_GO_STOP; printf("stop\n");break;
default: break;
}
digitalWrite(3, HIGH);
}
else
{
digitalWrite(3, LOW);
MOTOR_GO_STOP;
}
}
else if(z == 6)
{
if(buf[2] == 0x00)
{
switch(buf[3])
{
case 0x01:MOTOR_GO_FORWARD; printf("forward\n");break;
case 0x02:MOTOR_GO_BACK; printf("back\n");break;
case 0x03:MOTOR_GO_LEFT; printf("left\n");break;
case 0x04:MOTOR_GO_RIGHT; printf("right\n");break;
case 0x00:MOTOR_GO_STOP; printf("stop\n");break;
default: break;
}
digitalWrite(3, HIGH);
}
else
{
digitalWrite(3, LOW);
MOTOR_GO_STOP;
}
}
else
{
digitalWrite(3, LOW);
MOTOR_GO_STOP;
}
}
else
{
printf("disconnected by client!");
close(sockfd);
FD_CLR(sockfd,&allset);
client[i].fd = -1;
}
}
}
}
}
}
close(listenfd);
return 0;
}
case 0x12:pthread_create(&ppid1 , NULL , (void *)(& Duoji_CTL) ,NULL); printf("putup\n");break;
case 0x13:pthread_create(&ppid2 , NULL , (void *)(& Duoji_CTHOLD) ,NULL); printf("hold\n");break;
case 0x14:pthread_create(&ppid3 , NULL , (void *)(& Duoji_CTREALSE) ,NULL); printf("realse\n");break;
case 0x02:MOTOR_GO_BACK; printf("back\n");break;
case 0x03:MOTOR_GO_LEFT; printf("left\n");break;
case 0x04:MOTOR_GO_RIGHT; printf("right\n");break;
case 0x00:MOTOR_GO_STOP; printf("stop\n");break;
default: break;
}
digitalWrite(3, HIGH);
}
else
{
digitalWrite(3, LOW);
MOTOR_GO_STOP;
}
}
else if(z == 6)
{
if(buf[2] == 0x00)
{
switch(buf[3])
{
case 0x01:MOTOR_GO_FORWARD; printf("forward\n");break;
case 0x02:MOTOR_GO_BACK; printf("back\n");break;
case 0x03:MOTOR_GO_LEFT; printf("left\n");break;
case 0x04:MOTOR_GO_RIGHT; printf("right\n");break;
case 0x00:MOTOR_GO_STOP; printf("stop\n");break;
default: break;
}
digitalWrite(3, HIGH);
}
else
{
digitalWrite(3, LOW);
MOTOR_GO_STOP;
}
}
else
{
digitalWrite(3, LOW);
MOTOR_GO_STOP;
}
}
else
{
printf("disconnected by client!");
close(sockfd);
FD_CLR(sockfd,&allset);
client[i].fd = -1;
}
}
}
}
}
}
close(listenfd);
return 0;
}