Raspberry: Как проверить оставшиеся байты в буфере записи последовательного портаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Raspberry: Как проверить оставшиеся байты в буфере записи последовательного порта

Сообщение Anonymous »

Что я делаю:
Реализация протокола RS-485, я должен:

[*] Установить PIN-код write на высокий и перейти к режиме записи .
[*] write my data (of-eme-iliet wyile). /> Установите мой PIN -код на низкий снова и перейдите в режим чтения .
[*] подождите до появления 16 байтов.
Конец передачи. Изменить. < /p>
Текущее решение: < /h3>

Код: Выделить всё

// .....

private final Serial serial;
private final GpioPinDigitalOutput pin;
private final long DELAY_M = 2;
private final int DELAY_N = 0

// .....

public boolean send(final byte[] packet) {

result = false;

try {
this.pin.high();
this.serial.write(packet);
Thread.sleep(DELAY_M, DELAY_S); // -> THE TROUBLE MAKER
this.pin.low();
result = true;
}

// ... Now in read mode, recv 16 bytes in a pre-defined time window

return result;
проблема
перед тем, как перейти в режим чтения (настройка PIN на низкий ) Я должен подождать, пока не будут переданы все данные в последовательном буфере. Я использую библиотеку PI4J, и у нее нет объекта для проверки оставшихся байтов в буфере. Грязное решение состоит в том, чтобы подождать постоянного задержки, а Milliseconds, но это постоянное время изменяется в разных средах, в разных оборудовании и ... < /p>
Просматривает код PI4J, в нативных реализациях (JNI) это вызывает API WyringPi. WilingPi, в свою очередь, рассматривает последовательный порт как обычный файл Linux и записывает в файл. Опять же, WhiringPi не предоставляет метода проверки оставшихся байтов в буфере. Тогда это должно быть линейная-хард-и-точная вещь и не обязательно ответственность PI4J. Итак: как вы проверяете оставшиеся данные в буфере серийного порта Raspberry? который является /dev /ttyama0 < /code> < /p>
p.S: серийный интерфейс в pi4j имеет метод flush () с этой документацией: < /p>

заставляет передачу любых оставшихся данных в серийном порте -буфере. /> < /blockquote>
Обновление: < /h3>
Что касается того, что @sawdust указало в комментариях, я нашел этот урок. Это позволяет так называемым RTS и CTS (больше об этих флагах здесь и здесь), но это еще не работает. Мой осциллограф не показывает сигнал на выводах CTS и RTS. Нужны странные сценарии, не доступные нигде. Но посмотрите в списке пакетов APT-GET с помощью поиска APT-Cache GPIO , и вы найдете необходимые инструменты.

Подробнее здесь: https://stackoverflow.com/questions/358 ... ite-buffer
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка последовательного порта в одноплатном компьютере Arm64 Raspberry Pi5
    Anonymous » » в форуме Linux
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • @Transactional сохранил оставшиеся оставшиеся сохранение, даже любой из них не спас
    Гость » » в форуме JAVA
    0 Ответы
    30 Просмотры
    Последнее сообщение Гость
  • @Transactional сохранил оставшиеся оставшиеся сохранение, даже любой из них не спас
    Гость » » в форуме MySql
    0 Ответы
    43 Просмотры
    Последнее сообщение Гость
  • @Transactional сохранил оставшиеся оставшиеся сохранение, даже любой из них не спас
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как прочитать оставшиеся байты из SequenceReader?
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»