Android软件无法使用arduino

时间:2015-09-10 21:08:09

标签: arduino

这是我的arduino代码:

在这里,我尝试使用以太网屏蔽通过wifi将数据从Android软件发送到Arduino。此代码将引脚号设置为8,以使灯亮。所以我们从android发送了一个数据包,这样Arduino可以决定他得到了哪个字符以及要打开哪个引脚以及关闭哪个引脚。

#include <Wire.h>
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // ARDUINO MAC address
byte ip[] = {192, 168,0, 88};                    // ARDUINO IP address
unsigned int localPort = 8888;                        //ARDUINO Port Address

char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
EthernetUDP Udp;

void setup()
{      
    Ethernet.begin(mac,ip);
    Udp.begin(localPort);
    pinMode(8, OUTPUT);
    pinMode(12, OUTPUT);   
    Serial.begin(9600);
}

void loop()
{
      int packetSize =  Udp.parsePacket();
      if(packetSize>0)
      {
        Serial.println("recieved\n");
        Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
        if(packetBuffer[0]=='L')
        {
          Serial.println(packetBuffer);
          digitalWrite(8, HIGH);
        }
        else if(packetBuffer[0]=='F')
        {
          Serial.println(packetBuffer);
          digitalWrite(12, HIGH);
        }
        else if(packetBuffer[0]=='O')
        {
          Serial.println(packetBuffer);
          digitalWrite(8, LOW);
        }
        else if(packetBuffer[0]=='S')
        {
          Serial.println(packetBuffer);
          digitalWrite(12, LOW);
        }
      }
      delay(5);
}

这是我的Android代码:

此方法适用于java,而不适用于android。

package com.example.sakib.autohomeapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class MainActivity extends AppCompatActivity {

Button fanon,fanoff,lighton,lightoff;
EditText ip,test;
public static DatagramSocket datagramSocket = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    fanon=(Button)findViewById(R.id.fanOn);
    fanoff=(Button)findViewById(R.id.fanOff);
    lighton=(Button)findViewById(R.id.lightOn);
    lightoff=(Button)findViewById(R.id.lightOff);
    ip=(EditText)findViewById(R.id.field);
    test=(EditText)findViewById(R.id.test);

    fanon.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                String RoverIp = "192.168.0.101";
                int RoverPort = 8888;

                String sendingData = "F";
                byte[] buffer = sendingData.getBytes();
                InetAddress DesAddress = InetAddress.getByName(RoverIp);
                test.setText("Fan On");
                DatagramPacket packet = new DatagramPacket(buffer, buffer.length, DesAddress, RoverPort);
                datagramSocket = new DatagramSocket();
                datagramSocket.send(packet);
                datagramSocket.setSoTimeout(3000);
                //myLog.append("Light on!!!\n");
            }
            catch(IOException ex)
            {
                //myLog.append("Sending Failed!!!- Light on\n");
            }
        }
    });

    fanoff.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                //String RoverIp = ip.getText().toString();
                String RoverIp = "192.168.0.101";
                int RoverPort = 8888;

                String sendingData = "S";
                byte[] buffer = sendingData.getBytes();
                InetAddress DesAddress = InetAddress.getByName(RoverIp);
                test.setText("Fan Off");
                DatagramPacket packet = new DatagramPacket(buffer, buffer.length, DesAddress, RoverPort);
                datagramSocket = new DatagramSocket();
                datagramSocket.send(packet);
                datagramSocket.setSoTimeout(3000);
                //myLog.append("Light on!!!\n");
            }
            catch(IOException ex)
            {
                //myLog.append("Sending Failed!!!- Light on\n");
            }
        }
    });

    lighton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                //String RoverIp = ip.getText().toString();
                String RoverIp = "192.168.0.101";
                int RoverPort = 8888;

                String sendingData = "L";
                byte[] buffer = sendingData.getBytes();
                InetAddress DesAddress = InetAddress.getByName(RoverIp);
                test.setText("Light On");
                DatagramPacket packet = new DatagramPacket(buffer, buffer.length, DesAddress, RoverPort);
                datagramSocket = new DatagramSocket();
                datagramSocket.send(packet);
                datagramSocket.setSoTimeout(3000);
                //myLog.append("Light on!!!\n");
            }
            catch(IOException ex)
            {
                //myLog.append("Sending Failed!!!- Light on\n");
            }
        }
    });

    lightoff.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                //String RoverIp = ip.getText().toString();
                String RoverIp = "192.168.0.101";
                int RoverPort = 8888;

                String sendingData = "O";
                byte[] buffer = sendingData.getBytes();
                InetAddress DesAddress = InetAddress.getByName(RoverIp);

                DatagramPacket packet = new DatagramPacket(buffer, buffer.length, DesAddress, RoverPort);
                datagramSocket = new DatagramSocket();
                datagramSocket.send(packet);
                datagramSocket.setSoTimeout(3000);
                //myLog.append("Light on!!!\n");
            }
            catch(IOException ex)
            {
                //myLog.append("Sending Failed!!!- Light on\n");
            }
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}

0 个答案:

没有答案