1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zhoyq-spring-boot-starter-jt808

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Анализ протокола 808: пакет вторичной разработки

Введение

Этот пакет вторичной разработки основан на исходном коде проекта, который был переработан автором. В то время проект не соответствовал стандартам и только анализировал данные о местоположении транспортных средств, но не реализовывал все функции. Теперь у автора наконец-то появилось время для пересмотра исходного кода проекта.

Характеристики версий

20210409 v1.3.2 v1.3.2-jdk1.8

  • :hammer: Каждому соединению назначен номер потока сообщений.
  • :bug: Исправлена проблема с утечкой памяти во встроенном кэше.
  • :bug: Исправлено сообщение о проблеме с разделением пакетов.
  • :bug: Поддержка протокола 2019 в сообщениях, отправленных ResHelper.
  • :construction: Упрощён некоторый повторяющийся код.

20201004 v1.3.1 v1.3.1-jdk1.8

  • :arrow_up: Версия JDK обновлена до 15.
  • :arrow_up: Версия SpringBoot обновлена до 2.3.4.RELEASE.
  • :construction: Добавлена связь между мультимедийными данными, данными о местоположении и сущностями (несовместимое обновление) для 0x0801.

20200704 v1.2.5 v1.2.5-jdk1.8

  • :bug: Исправлен алгоритм чтения сообщений (обратная связь от пользователя Bilibili «Груша Ликорис»).

20200701 v1.2.4 v1.2.4-jdk1.8

  • :sparkles: Добавлены параметры auth и authMsgId для управления разрешениями.
  • :art: Код был скорректирован, зависимости обновлены, а JDK обновлен до версии 14.

20200629 v1.2.3-jdk1.8

  • :sparkles: Обеспечена поддержка JDK 1.8.

20200512 v1.2.2

  • :sparkles: Поддерживаются версии протокола 808 2011, 2013 и 2019.
  • :sparkles: Основан на серии фреймворков Spring, что позволяет в полной мере использовать преимущества Spring и упрощает расширение (пользовательский обработчик сообщений).
  • :bug: Исправлены проблемы с аварийными сигналами и анализом состояния.

20200503 v1.0.1

  • :sparkles: Решена проблема с объединением и разделением пакетов.
  • :sparkles: Поддерживает версии протокола 808 2011 и 2013.
  • :sparkles: Обрабатывает длинные команды, разделённые на пакеты (обычно более 1K).
  • :sparkles: Обработка пакетов (объединение и анализ данных из пакетов).

Обновление версии

Обновление с версии 1.2.x до версии 1.3.2

В интерфейсе DataService произошли изменения, необходимо реализовать два новых метода: terminalLocation и mediaPackage.

Добавлен параметр mediaId в интерфейс для обработки мультимедийных данных при отправке 0x0801, чтобы связать сообщения о местоположении, мультимедийные данные и данные сущностей.

Как разработать

  • Полное видео процесса разработки доступно по ссылке Переработка экрана.
  • Для разработки на основе пакета вторичной разработки перейдите по ссылке Экран прямой трансляции.
  • Подробные инструкции доступны в моём блоге.
  • Минимальное стартовое приложение уже открыто для сообщества, добро пожаловать.
  • Автор использует openJDK версии 15, также предоставляется версия компиляции openJDK 1.8, другие версии JDK не тестировались.

Ниже приведены краткие шаги по использованию Maven для разработки, подробные инструкции см. в экране прямой трансляции:

  1. Создайте новый файл pom для проекта spring boot и добавьте следующие зависимости:
<dependency>
    <groupId>com.zhoyq</groupId>
    <artifactId>spring-boot-starter-jt808</artifactId>
    <version>1.3.2</version>
</dependency>
  1. Создайте класс запуска и настройте его для использования без веб-контейнера (можно использовать веб-контейнер). Добавьте аннотацию @EnableJt808Server.
@SpringBootApplication
@EnableJt808Server
public class Application {
    public static void main (String[] args) {
        var app = new SpringApplication(Application.class);
        // Не использовать веб-контейнер, запускать только jt808 сервис
        app.setWebApplicationType(WebApplicationType.NONE);
        app.run(args);
    }
}
  1. Реализуйте интерфейс персистентности, в проекте уже есть основанный на HashMap интерфейс слоя сеанса, но пользователь должен предоставить компонент персистентности.
import com.zhoyq.server.jt808.starter.service.DataService;

@Component
public class SimpleDataService implements DataService{}
  1. Также добавьте конфигурацию в application.yml:
jt808:
  enabled: true
  use: mina
  protocol: tcp
  port: 10001
  processCount: 2
  corePoolSize: 1
  maximumPoolSize: 10
  # Единица измерения — миллисекунды
  keepAliveTime: 1000
  # Единица измерения — секунды
  idleTime: 10
  idleCount: 6
  readBufferSize: 2048
  packageLength: 1024
  threadCorePoolSize: 1
  threadMaximumPoolSize: 10
  # Единица измерения — миллисекунды
  threadKeepAliveTime: 1000
  masterSize: 1
  slaveSize: 10
  tcpNoDelay: true
  keepAlive: true
  auth: true
  authMsgId: "0100,0102"

Теперь вы можете запустить программу и наслаждаться жизнью.

Расширение возможностей

Поскольку логика обработки часто не является строгой, всё ещё существует необходимость в индивидуальной настройке некоторых общих логических процессов, поэтому в этом разделе рассматривается расширение на основе настраиваемого пакета сердцебиения. Нужно определить только один класс, как показано ниже:

import com.zhoyq.server.jt808.starter.core.Jt808Pack;
import com.zhoyq.server.jt808.starter.core.PackHandler;
import com.zhoyq.server.jt808.starter.helper.ResHelper;
import lombok.extern.slf4j.Slf4j;

/**
 * 0x0002 Терминальное сердцебиение
 */
@Slf4j
@Jt808Pack(msgId = 0x0002)
public class HeartbeatPackHandler implements PackHandler {
    @Override
    public byte[] handle(byte[] phoneNum, byte[] streamNum, byte[] msgId, byte[] msgBody) {
        log.info("new heartbeat.");
        return ResHelper.getPlatAnswer(phoneNum, streamNum, msgId, (byte) 0x00);
    }
}

Конечно, ответ нужно организовать самостоятельно, пакет разработки также предоставляет инструмент класса ResHelper, просто определите класс, реализуйте интерфейс PackHandler и используйте аннотацию @Jt808Pack. Конечно, этот метод также можно использовать для определения сообщений вне протокола, например, для создания собственных сообщений с использованием зарезервированных битов сообщений.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Пакет для вторичной разработки, связанный с анализом протокола китайского транспортного стандарта 808. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zhoyq-spring-boot-starter-jt808.git
git@api.gitlife.ru:oschina-mirror/zhoyq-spring-boot-starter-jt808.git
oschina-mirror
zhoyq-spring-boot-starter-jt808
zhoyq-spring-boot-starter-jt808
master