我想在我的android手机和使用以太网屏蔽连接到wifi路由器的arduino板之间建立TCP/IP连接。该项目的目的是通过一个带有四个按钮的应用程序来驱动一辆小型远程汽车:向前、向后、向左、右。我编写了下面所示的代码,但问题是arduino(充当服务器)之间没有数据通信& arduino端的android phone.The代码很好,因为我使用LabView通过我的PC发送数据。注意:蓝牙不是Labview中使用的option.same地址&它工作得很好,所以地址或端口可能不是问题。
所以,请任何人指导我的代码到底出了什么问题,尽管它构建得很好?我正在使用AndroidStudion1.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){}
}}`
发布于 2015-06-12 07:59:11
根据您的注释,接收数据的服务器是HTTP服务器,但您正在发送原始TCP数据。像这样只向HTTP服务器发送一个字符不会触发任何操作。
但是,如果这样做,您可以发送一个完整的HTTP请求,而不仅仅是一个字符。可以按以下方式发送简单的HTTP响应:
out.write("GET /index.htm HTTP/1.0\r\n\r\n");
https://stackoverflow.com/questions/30753754
复制相似问题