PI - чтение данных в Java из кода Python - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть простой код Python, который читает RFID-карту, которая работает как цикл, и всякий раз, когда я кладу карту - я вижу ее данные.Я хочу запустить код в цикле - и когда я получу новые данные (новую карту), я увижу их в своем Java-приложении.

примерно так:

12: 13: 10

12: 13: 20

12: 13: 30

12: 13: 40 - Карта найдена, данные - "Карта Дэвида"

12:13:50

12: 14: 00 - карта найдена, данные - "kate Card"

Может кто-нибудь помочь?или, может быть, начните показывать мне, как это сделать? Я новичок в java

файл python - Read.py, и он отсюда https://pimylifeup.com/raspberry-pi-rfid-rc522

Спасибо,

этокод Java для показа того времени печати каждые 10 секунд

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Show_Time
{
    private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss");

    public static void main(String[] args)
    {
        while (true)
        {
            try{
                Date date = new Date();
                System.out.println(new Timestamp(date.getTime()));
                Thread.sleep(10000);
            }
            catch(InterruptedException ex)
            {
                Thread.currentThread().interrupt();
            }
            finally {}
        }

    }
}

1 Ответ

0 голосов
/ 13 сентября 2018

Существует несколько способов связи между двумя программами.Например, вы можете создать архитектуру клиент-сервер.Но, поскольку вы новичок, я думаю, что самый быстрый и простой способ - поделиться общим файлом между двумя приложениями.

Python сторона:

with open('RFIDdata.txt', 'w') as the_file:
    the_file.write(rfid_data)

Java сторона:

public static void main(String[] args) {
    BufferedReader reader;
    try {
        reader = new BufferedReader(new FileReader(
                "RFIDdata.txt"));
        String line = reader.readLine();
        while (line != null) {

            Date date = new Date();
            System.out.println(new Timestamp(date.getTime())+" "+line);
            Thread.sleep(10000);
            // read next line
            line = reader.readLine();
        }
        reader.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Обратите внимание, что с этим решением вы должнывыполнить две программы вручную.Другим более чистым, но более продвинутым вариантом может быть использование ProcessBuilder :

Python сторона:

print(rfid_data)

Java сторона:

public static void main(String[] args) {
    BufferedReader reader;
    try {
         ProcessBuilder builder = new ProcessBuilder( "python" ,"/home/pi/MFRC522-python/Read.py"); 
         builder.redirectErrorStream(true); 
         Process p = builder.start(); 
         reader = new BufferedReader (new InputStreamReader(p.getInputStream()));

        String line = reader.readLine();
        while (line != null) {

            Date date = new Date();
            System.out.println(new Timestamp(date.getTime())+" "+line);
            Thread.sleep(10000);
            // read next line
            line = reader.readLine();
        }
        reader.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...