diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java new file mode 100644 index 0000000..0495d4f --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.Weather; + +/** + * @author a203 + */ +public interface WeatherMapper extends BaseMapper { + +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java new file mode 100644 index 0000000..0495d4f --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.Weather; + +/** + * @author a203 + */ +public interface WeatherMapper extends BaseMapper { + +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java new file mode 100644 index 0000000..118359d --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.model.Weather; + +/** + * @author a203 + */ +public interface IWeatherService extends IService { + +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java new file mode 100644 index 0000000..0495d4f --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.Weather; + +/** + * @author a203 + */ +public interface WeatherMapper extends BaseMapper { + +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java new file mode 100644 index 0000000..118359d --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.model.Weather; + +/** + * @author a203 + */ +public interface IWeatherService extends IService { + +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java new file mode 100644 index 0000000..97c1c0f --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.dao.WeatherMapper; +import com.casic.missiles.modular.system.model.Weather; +import com.casic.missiles.modular.system.service.IWeatherService; +import org.springframework.stereotype.Service; + +/** + * 气象站-温度、湿度、气压数据信息 服务实现类 + * + * @author a203 + */ + +@Service +public class WeatherServiceImpl extends ServiceImpl implements IWeatherService { + + public WeatherServiceImpl() { + + } +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java new file mode 100644 index 0000000..0495d4f --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.Weather; + +/** + * @author a203 + */ +public interface WeatherMapper extends BaseMapper { + +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java new file mode 100644 index 0000000..118359d --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.model.Weather; + +/** + * @author a203 + */ +public interface IWeatherService extends IService { + +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java new file mode 100644 index 0000000..97c1c0f --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.dao.WeatherMapper; +import com.casic.missiles.modular.system.model.Weather; +import com.casic.missiles.modular.system.service.IWeatherService; +import org.springframework.stereotype.Service; + +/** + * 气象站-温度、湿度、气压数据信息 服务实现类 + * + * @author a203 + */ + +@Service +public class WeatherServiceImpl extends ServiceImpl implements IWeatherService { + + public WeatherServiceImpl() { + + } +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java index 9c152fa..bcbcfb9 100644 --- a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java @@ -7,7 +7,7 @@ import org.springframework.stereotype.Service; /** - * 台风数据信息 服务实现类 + * 气象站-风数据信息 服务实现类 * * @author a203 */ diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java new file mode 100644 index 0000000..0495d4f --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.Weather; + +/** + * @author a203 + */ +public interface WeatherMapper extends BaseMapper { + +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java new file mode 100644 index 0000000..118359d --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.model.Weather; + +/** + * @author a203 + */ +public interface IWeatherService extends IService { + +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java new file mode 100644 index 0000000..97c1c0f --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.dao.WeatherMapper; +import com.casic.missiles.modular.system.model.Weather; +import com.casic.missiles.modular.system.service.IWeatherService; +import org.springframework.stereotype.Service; + +/** + * 气象站-温度、湿度、气压数据信息 服务实现类 + * + * @author a203 + */ + +@Service +public class WeatherServiceImpl extends ServiceImpl implements IWeatherService { + + public WeatherServiceImpl() { + + } +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java index 9c152fa..bcbcfb9 100644 --- a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java @@ -7,7 +7,7 @@ import org.springframework.stereotype.Service; /** - * 台风数据信息 服务实现类 + * 气象站-风数据信息 服务实现类 * * @author a203 */ diff --git a/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java b/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java index 6dbc91d..79ae34c 100644 --- a/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java +++ b/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java @@ -1,7 +1,9 @@ package com.casic.missiles.serialport; import com.alibaba.fastjson.JSON; +import com.casic.missiles.modular.system.model.Weather; import com.casic.missiles.modular.system.model.Wind; +import com.casic.missiles.modular.system.service.IWeatherService; import com.casic.missiles.modular.system.service.IWindService; import com.casic.missiles.modular.system.utils.TimeUtil; import gnu.io.NRSerialPort; @@ -27,12 +29,19 @@ */ @Value("${casic.serialPort.meteorology.name}") private String serialPortName; + /** + * 硬件端口号 + */ + @Value("${casic.serialPort.meteorology.port}") + private Integer serialPortNumber; private NRSerialPort serialPort; private final IWindService windService; + private final IWeatherService weatherService; - public SerialPortInit(IWindService windService) { + public SerialPortInit(IWindService windService, IWeatherService weatherService) { this.windService = windService; + this.weatherService = weatherService; } /** @@ -44,7 +53,7 @@ Set allPorts = NRSerialPort.getAvailableSerialPorts(); log.info("Available port as follows " + JSON.toJSONString(allPorts)); if (!allPorts.isEmpty()) { - serialPort = new NRSerialPort(serialPortName, 4800); + serialPort = new NRSerialPort(serialPortName, serialPortNumber); try { if (serialPort.connect()) { try { @@ -78,18 +87,53 @@ private void analyzeData(byte[] bytes) { String data = asciiToString(bytes); log.info("串口收到数据 <=== " + data); + String[] splitData = data.split(","); if (data.startsWith("$WIMWV")) { - //风向和风速 - String[] splitData = data.split(","); + /** + * 风向和风速 + * + * $WIMWV,,R,,M,V*37 + * */ Wind wind = new Wind(); wind.setDegree(splitData[1].isEmpty() ? 0 : Integer.parseInt(splitData[1])); wind.setSpeed(splitData[3].isEmpty() ? 0 : Double.parseDouble(splitData[3])); + wind.setDataUnit(splitData[4]); wind.setCreateTime(TimeUtil.getCurrentTime()); - windService.save(wind); +// windService.save(wind); } else if (data.startsWith("$WIXDR")) { + /** + * $WIXDR,C,21.2,C,2,U,0.0,#,0,U,12.7,V,1,U,3.614,V,2*22 + * */ + if (data.contains("#")) { + } else { + /** + * 气压、温度、湿度 + * + * $WIXDR,C,21.1,C,0,H,15.9,P,0,P,1020.4,H,0*76 + * */ + Weather weather = new Weather(); + weather.setTProbeId(Integer.parseInt(splitData[4])); + weather.setTemperature(Float.parseFloat(splitData[2])); + weather.setTempUnit(splitData[3]); + weather.setHProbeId(Integer.parseInt(splitData[8])); + weather.setHumidity(Float.parseFloat(splitData[6])); + weather.setHumidUnit(splitData[7]); + + String datum = splitData[12]; + /** + * 0*75 + * */ + weather.setPProbeId(Integer.parseInt(datum.split("\\*")[0])); + weather.setPressure(Float.parseFloat(splitData[10])); + weather.setPressureUnit(splitData[11]); + + weather.setCreateTime(TimeUtil.getCurrentTime()); + +// weatherService.save(weather); + } } else { log.info("数据格式错误 ===> " + data); } diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java new file mode 100644 index 0000000..0495d4f --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.Weather; + +/** + * @author a203 + */ +public interface WeatherMapper extends BaseMapper { + +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java new file mode 100644 index 0000000..118359d --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.model.Weather; + +/** + * @author a203 + */ +public interface IWeatherService extends IService { + +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java new file mode 100644 index 0000000..97c1c0f --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.dao.WeatherMapper; +import com.casic.missiles.modular.system.model.Weather; +import com.casic.missiles.modular.system.service.IWeatherService; +import org.springframework.stereotype.Service; + +/** + * 气象站-温度、湿度、气压数据信息 服务实现类 + * + * @author a203 + */ + +@Service +public class WeatherServiceImpl extends ServiceImpl implements IWeatherService { + + public WeatherServiceImpl() { + + } +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java index 9c152fa..bcbcfb9 100644 --- a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java @@ -7,7 +7,7 @@ import org.springframework.stereotype.Service; /** - * 台风数据信息 服务实现类 + * 气象站-风数据信息 服务实现类 * * @author a203 */ diff --git a/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java b/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java index 6dbc91d..79ae34c 100644 --- a/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java +++ b/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java @@ -1,7 +1,9 @@ package com.casic.missiles.serialport; import com.alibaba.fastjson.JSON; +import com.casic.missiles.modular.system.model.Weather; import com.casic.missiles.modular.system.model.Wind; +import com.casic.missiles.modular.system.service.IWeatherService; import com.casic.missiles.modular.system.service.IWindService; import com.casic.missiles.modular.system.utils.TimeUtil; import gnu.io.NRSerialPort; @@ -27,12 +29,19 @@ */ @Value("${casic.serialPort.meteorology.name}") private String serialPortName; + /** + * 硬件端口号 + */ + @Value("${casic.serialPort.meteorology.port}") + private Integer serialPortNumber; private NRSerialPort serialPort; private final IWindService windService; + private final IWeatherService weatherService; - public SerialPortInit(IWindService windService) { + public SerialPortInit(IWindService windService, IWeatherService weatherService) { this.windService = windService; + this.weatherService = weatherService; } /** @@ -44,7 +53,7 @@ Set allPorts = NRSerialPort.getAvailableSerialPorts(); log.info("Available port as follows " + JSON.toJSONString(allPorts)); if (!allPorts.isEmpty()) { - serialPort = new NRSerialPort(serialPortName, 4800); + serialPort = new NRSerialPort(serialPortName, serialPortNumber); try { if (serialPort.connect()) { try { @@ -78,18 +87,53 @@ private void analyzeData(byte[] bytes) { String data = asciiToString(bytes); log.info("串口收到数据 <=== " + data); + String[] splitData = data.split(","); if (data.startsWith("$WIMWV")) { - //风向和风速 - String[] splitData = data.split(","); + /** + * 风向和风速 + * + * $WIMWV,,R,,M,V*37 + * */ Wind wind = new Wind(); wind.setDegree(splitData[1].isEmpty() ? 0 : Integer.parseInt(splitData[1])); wind.setSpeed(splitData[3].isEmpty() ? 0 : Double.parseDouble(splitData[3])); + wind.setDataUnit(splitData[4]); wind.setCreateTime(TimeUtil.getCurrentTime()); - windService.save(wind); +// windService.save(wind); } else if (data.startsWith("$WIXDR")) { + /** + * $WIXDR,C,21.2,C,2,U,0.0,#,0,U,12.7,V,1,U,3.614,V,2*22 + * */ + if (data.contains("#")) { + } else { + /** + * 气压、温度、湿度 + * + * $WIXDR,C,21.1,C,0,H,15.9,P,0,P,1020.4,H,0*76 + * */ + Weather weather = new Weather(); + weather.setTProbeId(Integer.parseInt(splitData[4])); + weather.setTemperature(Float.parseFloat(splitData[2])); + weather.setTempUnit(splitData[3]); + weather.setHProbeId(Integer.parseInt(splitData[8])); + weather.setHumidity(Float.parseFloat(splitData[6])); + weather.setHumidUnit(splitData[7]); + + String datum = splitData[12]; + /** + * 0*75 + * */ + weather.setPProbeId(Integer.parseInt(datum.split("\\*")[0])); + weather.setPressure(Float.parseFloat(splitData[10])); + weather.setPressureUnit(splitData[11]); + + weather.setCreateTime(TimeUtil.getCurrentTime()); + +// weatherService.save(weather); + } } else { log.info("数据格式错误 ===> " + data); } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Weather.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Weather.java new file mode 100644 index 0000000..1da4bf6 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Weather.java @@ -0,0 +1,84 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * 气压、温度、湿度 + *

+ * $WIXDR,C,21.1,C,0,H,15.9,P,0,P,1020.4,H,0*76 + * + * @author a203 + */ +@Data +@TableName("bus_env_weather") +public class Weather extends Model { + private static final long serialVersionUID = 1L; + + @TableId(value = "ID", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 温度探头ID:0 + */ + @TableField(value = "T_PROBE_ID") + private Integer tProbeId; + + /** + * 温度数据 + */ + @TableField(value = "TEMPERATURE") + private Float temperature; + + /** + * 温度单位,C-摄氏度,F-华氏度 + */ + @TableField(value = "TEMP_UNIT") + private String tempUnit; + + /** + * 湿度探头ID:0 + */ + @TableField(value = "H_PROBE_ID") + private Integer hProbeId; + + /** + * 湿度数据 + */ + @TableField(value = "HUMIDITY") + private Float humidity; + + /** + * 数据单位,P-百分比 + */ + @TableField(value = "HUMID_UNIT") + private String humidUnit; + + /** + * 气压探头ID:0 + */ + @TableField(value = "P_PROBE_ID") + private Integer pProbeId; + + /** + * 气压数据 + */ + @TableField(value = "PRESSURE") + private Float pressure; + + /** + * 气压单位,H-hPa,B-1000hPa,P=Pa + */ + @TableField(value = "PRESSURE_UNIT") + private String pressureUnit; + + /** + * 收到数据的时间 + */ + @TableField(value = "CREATE_TIME") + private String createTime; +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java new file mode 100644 index 0000000..0495d4f --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.Weather; + +/** + * @author a203 + */ +public interface WeatherMapper extends BaseMapper { + +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java new file mode 100644 index 0000000..118359d --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.model.Weather; + +/** + * @author a203 + */ +public interface IWeatherService extends IService { + +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java new file mode 100644 index 0000000..97c1c0f --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.dao.WeatherMapper; +import com.casic.missiles.modular.system.model.Weather; +import com.casic.missiles.modular.system.service.IWeatherService; +import org.springframework.stereotype.Service; + +/** + * 气象站-温度、湿度、气压数据信息 服务实现类 + * + * @author a203 + */ + +@Service +public class WeatherServiceImpl extends ServiceImpl implements IWeatherService { + + public WeatherServiceImpl() { + + } +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java index 9c152fa..bcbcfb9 100644 --- a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java @@ -7,7 +7,7 @@ import org.springframework.stereotype.Service; /** - * 台风数据信息 服务实现类 + * 气象站-风数据信息 服务实现类 * * @author a203 */ diff --git a/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java b/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java index 6dbc91d..79ae34c 100644 --- a/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java +++ b/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java @@ -1,7 +1,9 @@ package com.casic.missiles.serialport; import com.alibaba.fastjson.JSON; +import com.casic.missiles.modular.system.model.Weather; import com.casic.missiles.modular.system.model.Wind; +import com.casic.missiles.modular.system.service.IWeatherService; import com.casic.missiles.modular.system.service.IWindService; import com.casic.missiles.modular.system.utils.TimeUtil; import gnu.io.NRSerialPort; @@ -27,12 +29,19 @@ */ @Value("${casic.serialPort.meteorology.name}") private String serialPortName; + /** + * 硬件端口号 + */ + @Value("${casic.serialPort.meteorology.port}") + private Integer serialPortNumber; private NRSerialPort serialPort; private final IWindService windService; + private final IWeatherService weatherService; - public SerialPortInit(IWindService windService) { + public SerialPortInit(IWindService windService, IWeatherService weatherService) { this.windService = windService; + this.weatherService = weatherService; } /** @@ -44,7 +53,7 @@ Set allPorts = NRSerialPort.getAvailableSerialPorts(); log.info("Available port as follows " + JSON.toJSONString(allPorts)); if (!allPorts.isEmpty()) { - serialPort = new NRSerialPort(serialPortName, 4800); + serialPort = new NRSerialPort(serialPortName, serialPortNumber); try { if (serialPort.connect()) { try { @@ -78,18 +87,53 @@ private void analyzeData(byte[] bytes) { String data = asciiToString(bytes); log.info("串口收到数据 <=== " + data); + String[] splitData = data.split(","); if (data.startsWith("$WIMWV")) { - //风向和风速 - String[] splitData = data.split(","); + /** + * 风向和风速 + * + * $WIMWV,,R,,M,V*37 + * */ Wind wind = new Wind(); wind.setDegree(splitData[1].isEmpty() ? 0 : Integer.parseInt(splitData[1])); wind.setSpeed(splitData[3].isEmpty() ? 0 : Double.parseDouble(splitData[3])); + wind.setDataUnit(splitData[4]); wind.setCreateTime(TimeUtil.getCurrentTime()); - windService.save(wind); +// windService.save(wind); } else if (data.startsWith("$WIXDR")) { + /** + * $WIXDR,C,21.2,C,2,U,0.0,#,0,U,12.7,V,1,U,3.614,V,2*22 + * */ + if (data.contains("#")) { + } else { + /** + * 气压、温度、湿度 + * + * $WIXDR,C,21.1,C,0,H,15.9,P,0,P,1020.4,H,0*76 + * */ + Weather weather = new Weather(); + weather.setTProbeId(Integer.parseInt(splitData[4])); + weather.setTemperature(Float.parseFloat(splitData[2])); + weather.setTempUnit(splitData[3]); + weather.setHProbeId(Integer.parseInt(splitData[8])); + weather.setHumidity(Float.parseFloat(splitData[6])); + weather.setHumidUnit(splitData[7]); + + String datum = splitData[12]; + /** + * 0*75 + * */ + weather.setPProbeId(Integer.parseInt(datum.split("\\*")[0])); + weather.setPressure(Float.parseFloat(splitData[10])); + weather.setPressureUnit(splitData[11]); + + weather.setCreateTime(TimeUtil.getCurrentTime()); + +// weatherService.save(weather); + } } else { log.info("数据格式错误 ===> " + data); } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Weather.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Weather.java new file mode 100644 index 0000000..1da4bf6 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Weather.java @@ -0,0 +1,84 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * 气压、温度、湿度 + *

+ * $WIXDR,C,21.1,C,0,H,15.9,P,0,P,1020.4,H,0*76 + * + * @author a203 + */ +@Data +@TableName("bus_env_weather") +public class Weather extends Model { + private static final long serialVersionUID = 1L; + + @TableId(value = "ID", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 温度探头ID:0 + */ + @TableField(value = "T_PROBE_ID") + private Integer tProbeId; + + /** + * 温度数据 + */ + @TableField(value = "TEMPERATURE") + private Float temperature; + + /** + * 温度单位,C-摄氏度,F-华氏度 + */ + @TableField(value = "TEMP_UNIT") + private String tempUnit; + + /** + * 湿度探头ID:0 + */ + @TableField(value = "H_PROBE_ID") + private Integer hProbeId; + + /** + * 湿度数据 + */ + @TableField(value = "HUMIDITY") + private Float humidity; + + /** + * 数据单位,P-百分比 + */ + @TableField(value = "HUMID_UNIT") + private String humidUnit; + + /** + * 气压探头ID:0 + */ + @TableField(value = "P_PROBE_ID") + private Integer pProbeId; + + /** + * 气压数据 + */ + @TableField(value = "PRESSURE") + private Float pressure; + + /** + * 气压单位,H-hPa,B-1000hPa,P=Pa + */ + @TableField(value = "PRESSURE_UNIT") + private String pressureUnit; + + /** + * 收到数据的时间 + */ + @TableField(value = "CREATE_TIME") + private String createTime; +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Wind.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Wind.java index 7d17a6d..c374f96 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Wind.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Wind.java @@ -25,14 +25,20 @@ private Integer degree; /** - * 风速,单位【米/每秒】 + * 风速 */ @TableField("SPEED") private Double speed; /** + * 数据单位,K-千米/时,M-米/秒,N-节 + */ + @TableField(value = "DATA_UNIT") + private String dataUnit; + + /** * 收到数据的时间 */ - @TableField("CREATE_TIME") + @TableField(value = "CREATE_TIME") private String createTime; } diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java new file mode 100644 index 0000000..0495d4f --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/dao/WeatherMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.Weather; + +/** + * @author a203 + */ +public interface WeatherMapper extends BaseMapper { + +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java new file mode 100644 index 0000000..118359d --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/IWeatherService.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.model.Weather; + +/** + * @author a203 + */ +public interface IWeatherService extends IService { + +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java new file mode 100644 index 0000000..97c1c0f --- /dev/null +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WeatherServiceImpl.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.dao.WeatherMapper; +import com.casic.missiles.modular.system.model.Weather; +import com.casic.missiles.modular.system.service.IWeatherService; +import org.springframework.stereotype.Service; + +/** + * 气象站-温度、湿度、气压数据信息 服务实现类 + * + * @author a203 + */ + +@Service +public class WeatherServiceImpl extends ServiceImpl implements IWeatherService { + + public WeatherServiceImpl() { + + } +} diff --git a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java index 9c152fa..bcbcfb9 100644 --- a/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java +++ b/casic-environment/src/main/java/com/casic/missiles/modular/system/service/impl/WindServiceImpl.java @@ -7,7 +7,7 @@ import org.springframework.stereotype.Service; /** - * 台风数据信息 服务实现类 + * 气象站-风数据信息 服务实现类 * * @author a203 */ diff --git a/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java b/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java index 6dbc91d..79ae34c 100644 --- a/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java +++ b/casic-environment/src/main/java/com/casic/missiles/serialport/SerialPortInit.java @@ -1,7 +1,9 @@ package com.casic.missiles.serialport; import com.alibaba.fastjson.JSON; +import com.casic.missiles.modular.system.model.Weather; import com.casic.missiles.modular.system.model.Wind; +import com.casic.missiles.modular.system.service.IWeatherService; import com.casic.missiles.modular.system.service.IWindService; import com.casic.missiles.modular.system.utils.TimeUtil; import gnu.io.NRSerialPort; @@ -27,12 +29,19 @@ */ @Value("${casic.serialPort.meteorology.name}") private String serialPortName; + /** + * 硬件端口号 + */ + @Value("${casic.serialPort.meteorology.port}") + private Integer serialPortNumber; private NRSerialPort serialPort; private final IWindService windService; + private final IWeatherService weatherService; - public SerialPortInit(IWindService windService) { + public SerialPortInit(IWindService windService, IWeatherService weatherService) { this.windService = windService; + this.weatherService = weatherService; } /** @@ -44,7 +53,7 @@ Set allPorts = NRSerialPort.getAvailableSerialPorts(); log.info("Available port as follows " + JSON.toJSONString(allPorts)); if (!allPorts.isEmpty()) { - serialPort = new NRSerialPort(serialPortName, 4800); + serialPort = new NRSerialPort(serialPortName, serialPortNumber); try { if (serialPort.connect()) { try { @@ -78,18 +87,53 @@ private void analyzeData(byte[] bytes) { String data = asciiToString(bytes); log.info("串口收到数据 <=== " + data); + String[] splitData = data.split(","); if (data.startsWith("$WIMWV")) { - //风向和风速 - String[] splitData = data.split(","); + /** + * 风向和风速 + * + * $WIMWV,,R,,M,V*37 + * */ Wind wind = new Wind(); wind.setDegree(splitData[1].isEmpty() ? 0 : Integer.parseInt(splitData[1])); wind.setSpeed(splitData[3].isEmpty() ? 0 : Double.parseDouble(splitData[3])); + wind.setDataUnit(splitData[4]); wind.setCreateTime(TimeUtil.getCurrentTime()); - windService.save(wind); +// windService.save(wind); } else if (data.startsWith("$WIXDR")) { + /** + * $WIXDR,C,21.2,C,2,U,0.0,#,0,U,12.7,V,1,U,3.614,V,2*22 + * */ + if (data.contains("#")) { + } else { + /** + * 气压、温度、湿度 + * + * $WIXDR,C,21.1,C,0,H,15.9,P,0,P,1020.4,H,0*76 + * */ + Weather weather = new Weather(); + weather.setTProbeId(Integer.parseInt(splitData[4])); + weather.setTemperature(Float.parseFloat(splitData[2])); + weather.setTempUnit(splitData[3]); + weather.setHProbeId(Integer.parseInt(splitData[8])); + weather.setHumidity(Float.parseFloat(splitData[6])); + weather.setHumidUnit(splitData[7]); + + String datum = splitData[12]; + /** + * 0*75 + * */ + weather.setPProbeId(Integer.parseInt(datum.split("\\*")[0])); + weather.setPressure(Float.parseFloat(splitData[10])); + weather.setPressureUnit(splitData[11]); + + weather.setCreateTime(TimeUtil.getCurrentTime()); + +// weatherService.save(weather); + } } else { log.info("数据格式错误 ===> " + data); } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Weather.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Weather.java new file mode 100644 index 0000000..1da4bf6 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Weather.java @@ -0,0 +1,84 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * 气压、温度、湿度 + *

+ * $WIXDR,C,21.1,C,0,H,15.9,P,0,P,1020.4,H,0*76 + * + * @author a203 + */ +@Data +@TableName("bus_env_weather") +public class Weather extends Model { + private static final long serialVersionUID = 1L; + + @TableId(value = "ID", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 温度探头ID:0 + */ + @TableField(value = "T_PROBE_ID") + private Integer tProbeId; + + /** + * 温度数据 + */ + @TableField(value = "TEMPERATURE") + private Float temperature; + + /** + * 温度单位,C-摄氏度,F-华氏度 + */ + @TableField(value = "TEMP_UNIT") + private String tempUnit; + + /** + * 湿度探头ID:0 + */ + @TableField(value = "H_PROBE_ID") + private Integer hProbeId; + + /** + * 湿度数据 + */ + @TableField(value = "HUMIDITY") + private Float humidity; + + /** + * 数据单位,P-百分比 + */ + @TableField(value = "HUMID_UNIT") + private String humidUnit; + + /** + * 气压探头ID:0 + */ + @TableField(value = "P_PROBE_ID") + private Integer pProbeId; + + /** + * 气压数据 + */ + @TableField(value = "PRESSURE") + private Float pressure; + + /** + * 气压单位,H-hPa,B-1000hPa,P=Pa + */ + @TableField(value = "PRESSURE_UNIT") + private String pressureUnit; + + /** + * 收到数据的时间 + */ + @TableField(value = "CREATE_TIME") + private String createTime; +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Wind.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Wind.java index 7d17a6d..c374f96 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Wind.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/Wind.java @@ -25,14 +25,20 @@ private Integer degree; /** - * 风速,单位【米/每秒】 + * 风速 */ @TableField("SPEED") private Double speed; /** + * 数据单位,K-千米/时,M-米/秒,N-节 + */ + @TableField(value = "DATA_UNIT") + private String dataUnit; + + /** * 收到数据的时间 */ - @TableField("CREATE_TIME") + @TableField(value = "CREATE_TIME") private String createTime; } diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 597de2d..26b3e18 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -47,6 +47,7 @@ #气象站串口 meteorology: name: /dev/tty.usbserial-1120 + port: 4800 logging: level.root: info