В дополнение к @assylias
answer вы также можете использовать новый поток api, если вы используете Java 8:
List l = Arrays.asList(4, 5, 6);
static boolean condition(Integer i) {
return i == 5;
}
static Predicate predicate = YourClassName::condition;
l.stream()
.filter(predicate.negate())
.forEach(System.out::println);
Если вы инвертируете условие, решение становится еще более кратким, поскольку вам не нужно negate()
предикат, что позволяет использовать только ссылку на метод:
List l = Arrays.asList(4, 5, 6);
static boolean condition(Integer i) {
return i != 5; // <-- condition has been negated
}
l.stream()
.filter(YourClassName::condition)
.forEach(System.out::println);
Один из красотой этого является то, что поток лениво оценивается, т. е. операция filter()
фактически не оценивается до тех пор, пока она не будет использована терминальной операцией, такой как forEach()
. Подробнее об этом можно найти в учебнике для Oracle .
Можно использовать имущество ("псевдотелетайп", где последовательный порт является "реальным телетайпом") для этого. От одного конца откройте /dev/ptyp5
, и затем присоедините свою программу к /dev/ttyp5
; ttyp5
будет действовать точно так же, как последовательный порт, но отправит/получит все, что он делает через/dev/ptyp5.
при реальной необходимости в нем, чтобы говорить с файлом, названным /dev/ttys2
, тогда просто переместите старое /dev/ttys2
из пути и сделайте символьную ссылку от ptyp5
до ttys2
.
, Конечно, можно использовать некоторое число кроме ptyp5
. Возможно, выберите один с высоким количеством для предотвращения дубликатов, так как все терминалы входа в систему будут также использовать имущества.
Википедия имеет больше об имуществах: http://en.wikipedia.org/wiki/Pseudo_terminal
Можно хотеть посмотреть Tibbo VSPDL для создания виртуального последовательного порта Linux с помощью Драйвера ядра - это кажется довольно новым, и доступно для скачивания прямо сейчас (бета-версия). Не уверенный в лицензии в этой точке, или хотят ли они сделать его доступным коммерчески только в будущем.
существуют другие коммерческие альтернативы, такой как http://www.ttyredirector.com/ .
В Открытом исходном коде, Remserial (GPL) может также сделать то, что Вы хотите, с помощью ИМУЩЕСТВА Unix. Это передает последовательные данные в "необработанной форме" к сетевому сокету; подобная STTY установка терминальных параметров должна быть сделана, когда созданию порта, изменению их позже нравится описанный в RFC 2217, кажется, не поддерживается. Необходимо быть в состоянии выполнить два remserial экземпляра для создания виртуального нуль-модема как com0com, за исключением того, что необходимо будет настроить скорость порта и т.д. заранее.
Socat (также GPL) похож на расширенный вариант Remserial еще с многими опциями, включая метод "ИМУЩЕСТВА" для перенаправления ИМУЩЕСТВА к чему-то еще, которое может быть другим экземпляром Socat. Для Единицы tets, socat, вероятно, более хорош, чем remserial, потому что Вы можете непосредственно файлы кошки в ИМУЩЕСТВО. Посмотрите пример ИМУЩЕСТВА на странице справочника. патч существует под "contrib" для оказания поддержки RFC2217 для согласования настроек последовательной линии.
Вы были бы в состоянии использовать USB-> адаптер RS232? У меня есть некоторые, и они просто используют драйвер FTDI. Затем необходимо быть в состоянии переименовать/dev/ttyUSB0 (или независимо от того, что создается) как/dev/ttyS2.
Я могу думать о трех опциях:
RFC 2217 покрывает COM-порт к стандарту TCP/IP, который позволяет клиенту в одной системе эмулировать последовательный порт к локальным программам при прозрачной отправке и получении сигналов данных и сигналов управления к серверу в другой системе, которая на самом деле имеет последовательный порт. Вот общий обзор .
то, Что Вы сделали бы, является находкой, или реализуйте клиентский драйвер COM-порта, который реализовал бы сторону клиента системы на Вашем ПК - кажущийся быть реальным последовательным портом, но в действительности доставляющий все в челноке к серверу. Вы могли бы быть в состоянии получить этот драйвер бесплатно от Digi, Lantronix, и т.д. в поддержку их реальных автономных серверов последовательного порта.
Вы тогда реализовали бы сторону сервера соединения локально в другой программе - разрешение клиенту соединиться и издание данных и команд управления по мере необходимости.
Это, вероятно, не тривиально, но RFC там, и Вы могли бы быть в состоянии найти проект с открытым исходным кодом, который реализует одну или обе стороны соединения.
последовательного порта Linux, источник драйвера последовательного порта для Linux легко доступен. Возьмите это, разрушьте аппаратные части управления и имейте тот один драйвер, выполненный два/dev/ttySx порта как простая обратная петля. Тогда подключите свою реальную программу к ttyS2 и свое средство моделирования к другому ttySx.
, Но самая легкая вещь сделать прямо сейчас? Потратьте 40$ на два USB-устройства последовательного порта, соедините их проводом вместе (нуль-модем) и на самом деле имейте два реальных последовательных порта - один для программы, которую Вы тестируете, один для Вашего средства моделирования.
-Adam