Обмен данными в режиме реального времени между RaspberryPi 3 и устройством Android

#android #wifi #raspberry-pi3

#Android #Wi-Fi #raspberry-pi3

Вопрос:

Я хочу отправлять данные между RaspberryPi 3 и приложением для Android, предпочтительно через Wi-Fi.

Я уже отправлял данные между RPi 1 model B и Android раньше, но через USB-модем. Теперь используется RPI 3 model B, поэтому я подумал об отправке через Wi-Fi.

Кто-нибудь может подсказать мне, как это сделать? Любая небольшая помощь приветствуется.

Комментарии:

1. Как вы отправляли данные через usb-модем? И как вы подключили устройства?

2. Обмен данными между двумя приложениями на двух устройствах, подключенных по Wi-Fi, осуществляется серверным приложением и клиентским приложением.

3. То, что вам нужно сделать, зависит от типа данных, которые вы хотите передать. Вы должны предоставить более подробную информацию.

4. @greenapps: Я использовал связь через сокет. Модель клиент-сервер

5. Я просто хочу отправить целое число в RPi. Это просто управляющие сигналы

Ответ №1:

Поскольку вы уже программируете на Java для клиента Android, одним из способов продвижения вперед может быть установка Java на Pi, а затем использование чего-то столь же простого, как базовые сокеты. Однако это зависит от вашего варианта использования.

Возьмите все о сокетах Oracle в качестве примера, напишите программу на стороне сервера для запуска на Pi с ServerSocket:

     try (
            ServerSocket serverSocket = new ServerSocket(portNumber);
            Socket clientSocket = serverSocket.accept();
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
    ) {
        while (dataProvider.isDataAvailable()) {
            out.println(dataProvider.getData());
        }
    } catch (IOException e) {
        // TODO
    }
  

Затем подключитесь к серверу из приложения для Android:

     try (
            Socket socket = new Socket(hostName, portNumber);
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    ) {
        while (true) {
            parseData(in.readLine());
        }
    }
  

Комментарии:

1. Спасибо. Я программировал на базовых HTML и JS и использовал Cordova TCP Socket API.

2. Это работает с подключением USB. Но когда я попытался подключить RPi и приложение, код не сработал.

3. Извините, но с «код не сработал» никто не сможет или не захочет вам помочь. Вы даже «приняли» ответ, хотя он работает, и вы, очевидно, столкнулись с другой проблемой.

4. Привет, ребята, проблема была в статическом IP, который я установил.

5. @Micheal Kanis — Извините, я не имел в виду, что ваш код не работает. Код, который я уже использовал, не работал (потому что статический IP был неправильным).