Spring Boot java代码Socket链接案例

socket链接案例:背景:java代码与设备交互,请求数据并入库。设备:多普勒流量计。​ 设备的请求报文:​代码实现:首先配置设备的IP、端口到配置文件或数据库,然后用@Value注解引用到常量中。设置请求报文(这里只需要两种数据):public static final byte[] WATERLEVEL = new byte[]{0x01, 0x03, 0x0000, 0x0002, (byte)0xC40B}; // 读取水位值,单精度浮点数public static final
摘要由CSDN通过智能技术生成

socket链接案例:

背景:java代码与设备交互,请求数据并入库。

设备:多普勒流量计。

​ 设备的请求报文:
在这里插入图片描述
代码实现:

首先配置设备的IP、端口到配置文件或数据库,然后用@Value注解引用到常量中。

设置请求报文(这里只需要两种数据):

public static final byte[] WATERLEVEL = new byte[]{
   0x01, 0x03, 0x0000, 0x0002, (byte)0xC40B}; // 读取水位值,单精度浮点数
public static final byte[] INSTANTANEOUSFLOW = new byte[]{
   0x01,	0x03, 0x0002, 0x0002, (byte)0x65CB}; // 读取瞬时流量值,单精度浮点数

外层方法:

public void getDataFromFlowMeter() {
   
    log.info("getDataFromFlowMeter begin.");
    // 建立socket链接 (此处判断socket是否存在链接,但是此种判断方法方法可能并不妥善,因为在实际使用中好像没有判断到...)
    if (isServerClose(Socket socket)) {
   
        socket = SocketUtils.createSocket(instrumentIp, instrumentPort);
    }
    try {
   
        // 从多普勒流量计获取水位
        float waterLevel = SocketUtils.getHydrologicalInfo(socket, WATERLEVEL);
        WaterLevelModel waterLevelModel = new WaterLevelModel();
        waterLevelModel.setWaterLevel((double) waterLevel);
        // 入库
        measureConfMapper.insertVisualLevelInfo(waterLevelModel);
        // 从多普勒流量计获取流量
        float flow = SocketUtils.getHydrologicalInfo(socket, INSTANTANEOUSFLOW);
        FlowMeterDataModel flowMeterDataModel = new <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值