我想在我的Android手机和连接到使用以太网屏蔽的wifi路由器的arduino板之间建立TCP / IP连接。该项目的目标是通过带有四个按钮的应用程序驾驶小型遥控车;我已经编写了下面显示的代码 ,但问题是arduino(充当服务器)和&之间没有数据通信。 Android手机。在arduino方面的代码很好,因为我尝试使用LabView通过我的PC发送数据。 注意蓝牙不是一个选项。在Labview& amp;中使用了相同的地址。它工作正常,所以地址或端口可能不是问题
那么任何人都可以指导我的代码有什么问题,虽然它构建良好吗?我正在使用Android Studion 1.1.0
import android.app.AlertDialog;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.support.v4.app.DialogFragment;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.Socket;
public class MainActivity extends ActionBarActivity {
String ip_add="192.168.1.104";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@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);
}
public void move_forward(View view){
try{
InetAddress serverAddr=InetAddress.getByName(ip_add);
Socket s=new Socket(serverAddr,80);
BufferedWriter out=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
char c='b';
out.write(c);
out.flush();
//out.close();
s.close();
}catch (Exception ex){}
}
public void move_left(View view){
try{
Socket s=new Socket(ip_add,80);
BufferedWriter out=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
char c='c';
out.write(c);
out.flush();
// out.close();
s.close();
}catch (Exception ex){}
}
public void move_right(View view){
try{
Socket s=new Socket(ip_add,80);
BufferedWriter out=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
char c='d';
out.write(c);
out.flush();
//out.close();
s.close();
}catch (Exception ex){
}
}
public void move_back(View view){
try{
Socket s=new Socket(ip_add,80);
BufferedWriter out=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
char c='e';
out.write(c);
out.flush();
//out.close();
s.close();
}catch (Exception ex){}
}
} `
答案 0 :(得分:-1)
根据您的评论,接收数据的服务器是HTTP服务器,但您正在发送原始TCP数据。像您一样只向HTTP服务器发送一个字符不会触发任何内容。
您可以这样做,但是如果您这样做,则必须发送完整的HTTP请求,而不仅仅是一个字符。可以按如下方式发送简单的HTTP响应:
out.write("GET /index.htm HTTP/1.0\r\n\r\n");