2016-12-03 8 views
0

У меня проблема с использованием nrjavaserial на CentOS/Red Hat 7.x на стандартной учетной записи пользователя. Открытие COMx-порта (/ dev/ttySx) создает блокировку в/var/lock, но/var/lock - это просто ссылка на/run/lock, которая (после каждой перезагрузки) имеет права владельца &.nrjavaserial и разрешение на/var/lock (ссылка на/run/lock)

Я нашел два решения:

  1. Modify C/C++/Java источники и изменить каталог блокировки по умолчанию (в/TMP/блокировки) разрешение группы
  2. Изменение/запуска/блокировки на каждой загрузке (в группа удаленного доступа с правом на чтение/запись)

Какой способ лучше и как это сделать правильно?

PS Стандартный пользователь в группе набора номера.

ответ

0

Как правило, из-за устаревших приложений приложения создают файл блокировки внутри каталога/var/lock. Два приложения не будут обращаться к последовательному порту в одно и то же время, только если обе используют схему блокировки. Вариант 1 может не работать, поскольку другое приложение будет искать блокировку в каталоге/var/lock. Вариант 2 также не является хорошей идеей, так как это будут другие проблемы. См. Этот файл в nrjavaserial исходном коде src/main/c/include/SerialImp.h

Каталог/var или/run являются частью стандартной корневой файловой системы, и каждый раз, когда вы перезагружаете скрипт init.rc, вы будете переопределять все, что вы делаете , Пожалуйста, опишите, почему эта проблема блокировки для вас.

+0

Проблема с nrjavaserial - она ​​не работает в Red Hat 7.0 из-за проблемы с блокировкой. Я должен сделать это, чтобы заставить его работать. Теперь я знаю только два варианта (и нет другого варианта): \t 1. Изменение блокировки реж в источниках C в/вар/блокировка/lockdev (новый, лучший путь для TTY * замки) \t \t или \t \t 2. Марка/запуска/блокировки подъезд, чтобы заблокировать группу (изменить файл /usr/lib/tmpfiles.d/legacy.conf) \t \t или \t? – jakson

+0

Правильный вариант: либо изменить nrjavaserial, чтобы удалить блокирующую часть, либо попробовать другую библиотеку, такую ​​как serialpundit и т. Д. –

+0

Я просмотрел nrjavaserial код, особенно часть C/C++ (источник библиотек * .dll i * .so). Windows и Linux C-код полон ошибок - он не должен работать под Windows x64! Я внес некоторые изменения в код C, и теперь библиотеки * .so & * .dll работают лучше, но полный код должен быть просмотрен. Я не рекомендую использовать nrjavaserial в Windows x64 или CentOS-подобном окружении. Есть ли альтернативы nrjavaserial, которые работают в x64 Windows и CentOS? Serialpundit слишком сложный и поддерживает «Windows 7 или новее». Зачем? - Программирование COM-портов в Windows XP или Windows 10 использует одни и те же функции API. – jakson