Анализ протокола 808: пакет вторичной разработки
Этот пакет вторичной разработки основан на исходном коде проекта, который был переработан автором. В то время проект не соответствовал стандартам и только анализировал данные о местоположении транспортных средств, но не реализовывал все функции. Теперь у автора наконец-то появилось время для пересмотра исходного кода проекта.
В интерфейсе DataService произошли изменения, необходимо реализовать два новых метода: terminalLocation и mediaPackage.
Добавлен параметр mediaId в интерфейс для обработки мультимедийных данных при отправке 0x0801, чтобы связать сообщения о местоположении, мультимедийные данные и данные сущностей.
Ниже приведены краткие шаги по использованию Maven для разработки, подробные инструкции см. в экране прямой трансляции:
<dependency>
<groupId>com.zhoyq</groupId>
<artifactId>spring-boot-starter-jt808</artifactId>
<version>1.3.2</version>
</dependency>
@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);
}
}
import com.zhoyq.server.jt808.starter.service.DataService;
@Component
public class SimpleDataService implements DataService{}
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 )