这是我的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);
}
}