Asynctask UDP接收器未接收

时间:2019-05-14 16:13:28

标签: java android android-asynctask udp

原因:

我正在将目标位置发送到树莓派汽车。如果位置发送正确,则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;
        }
    }

感谢您的帮助!

0 个答案:

没有答案