Поток чтения Java на SerialPort из Arduino Nano в Linux - PullRequest
3 голосов
/ 12 марта 2019

Arduino nano настроен на отправку мне «теста» на последовательный порт со скоростью передачи 9600 бод. Используя библиотеку fazecast jSerialComm, я написал тестовое приложение для отображения отправленных данных на моем компьютере.Я хочу написать в Arduino и читать Arduino в какой-то момент.Я довольно новичок в этой последовательной связи.Это мой код Java:

public class main {

    private static int baudRate = 9600;
    private static int dataBits = 8;
    private static int stopBits = 1;
    private static int parity = 0;
    private static int readTimeout = 0;
    private static int writeTimeout = 0;

    public static void main(String[] args) throws IOException, InterruptedException {
        SerialPort sp = SerialPort.getCommPort("/dev/ttyUSB0"); 
        sp.setComPortParameters(baudRate, dataBits, stopBits, parity);
        sp.setComPortTimeouts(SerialPort.TIMEOUT_WRITE_BLOCKING, readTimeout, writeTimeout); 

        if (sp.openPort()) {
            System.out.println("Port is open");
        } else {
            System.out.println("Failed to open port");
            return;
        }

        for (Integer i = 0; i < 5; ++i) {
            sp.getOutputStream().write(i.byteValue());
            sp.getOutputStream().flush();
            System.out.println("Sent number: " + i);
            Thread.sleep(1000);
        }
        if(sp.getInputStream() != null){
            System.out.print(sp.getInputStream().read());
        }

        if (sp.closePort()) {
            System.out.println("Port is closed :)");
        } else {
            System.out.println("Failed to close port :(");
            return;
        }

    }

}

Я почему-то не могу открыть порт.Он всегда говорит «Не удалось открыть порт».Я сделал ls /dev/tty* в терминале, а затем отключил Arduino nano, и единственное /dev/ttyUSB0 удаляется.Когда я снова подключаю его и запускаю команду, снова появляется та же самая.Я думал, что, возможно, в этом проблема, но, вероятно, нет.Что я делаю неправильно?Я думаю, что недавно прочитал что-то о том, что это проблема Linux, но я не могу найти это;Может ли это быть проблема, связанная с Linux?

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Это действительно была проблема с Linux. Это как-то связано с разрешениями на порты. Я должен был сделать sudo chmod 666 /dev/ttyUSB0, чтобы это исправить. Но мне нужно делать это при каждой загрузке, так что я все еще ищу долгосрочное решение.

0 голосов
/ 12 марта 2019

Я решил эту проблему, создав этот файл: /etc/udev/rules.d/99-arduino_ch340.rules

И его содержание:

#Arduino CH340 IDs

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="1a86", ATTR{idProduct}=="7523", GROUP="users", MODE="0777"

Я использую клон с чипом CH340G. Вам может понадобиться изменить идентификаторы (просто используйте lsusb для получения идентификаторов).

Добавление вашего пользователя в группу дозвона также может быть полезным. (Я не могу проверить это прямо сейчас)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...