原因:
我正在将目标位置发送到树莓派汽车。如果位置发送正确,则pi会发送okey响应。
问题:
应用程序无法收到正常响应。我已经测试过了,可以通过树莓派发送和接收数据包。
问题步骤:
1)按下一个按钮,以从手机向树莓派发送一些数据。
2)按下该按钮将启动2个异步任务,第一个是UDP接收器,超时为10秒。第二个是向树莓派发送数据。第二个正在按预期工作。
这是按钮侦听器。
btn_showCoordinates.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
GeoPoint markerPoint = new GeoPoint(Double.parseDouble(mapLat.getText().toString()), Double.parseDouble(mapLon.getText().toString()));
startMarker.setPosition(markerPoint);
startMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
startMarker.setTitle("Target location");
map.getOverlays().add(startMarker);
map.invalidate();
getIPandPort();
tv_info.setText("Sending Target Coordinates...");
new ReceiveCommand().execute();
new SendTargetAsyncTask().execute();
} catch (Exception e) {
e.printStackTrace();
}
}
});
这是不起作用的异步任务。
public class ReceiveCommand extends AsyncTask<Void, Void, Boolean> {
@Override
protected Boolean doInBackground(Void... voids) {
byte[] lMsg = new byte[64];
DatagramPacket dp = new DatagramPacket(lMsg, lMsg.length);
try {
receivingSocket = new DatagramSocket(15000);
receivingSocket.setSoTimeout(10000);
receivingSocket.setReuseAddress(true);
receivingSocket.receive(dp);
StateResponse = new String(dp.getData());
if(!StateResponse.isEmpty())
{
tv_info.setText("Sending Target Coordinates...OK");
Log.e("UDP", "doInBackground: Yazi_degismeli");
}
Log.e("UDP", "run: paket alındı!" + StateResponse);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
}
感谢您的帮助!