基于python的4G DTU设备温度数据的仿真并传输

数据编码模块

OneNet平台设备开发文档

中移平台开发文档
开发文档链接:ONeNet设备开发文档

数据编码代码如下:

class Converter(object):
    def to_hex(data):
        # onenet平台 .Json数据类型
        byte_list = '\x03'
        # 获取ANSI编码及长度
        list = data.encode('mbcs')
        len_list = len([format(i, 'X') for i in list])
        #塔石4G DTU编码格式
        byte_list += chr(0) + chr(len_list)
        for i in list:
            byte_list += chr(i)
        byte_list += '\r\n'
        # 串口使用比特流传输
        s_byte_list = bytes(byte_list, encoding='UTF-8')
        return s_byte_list

串口模块

class mSerial:
    def __init__(self, com, bps, timeout):
        self.port = com
        self.bps = bps
        self.timeout = timeout
        global Ret
        try:
            # 打开串口,得到串口对象
            self.main_serial = serial.Serial(self.port, self.bps, timeout=self.timeout)
            # 判断是否打开成功
            if (self.main_serial.is_open):
                Ret = True
        except Exception as error:
            print("---Error---:", error)
    # 打开串口
    def Open_serial(self):
        self.main_serial.open()
    # 发送数据
    def Send_data(self, data):
        self.main_serial.write(data)
    # 关闭串口
    def Close_serial(self):
        self.main_serial.close()
        print(self.main_serial.is_open)  # 检验串口是否打开

源代码

# -*- coding: utf-8 -*-
"""
@author: 浅笑醉红楼.(3303295829@qq.com)
"""
import serial
import serial.tools.list_ports
import time
import random

class Converter(object):
    def to_hex(data):
        # 数据类型
        byte_list = '\x03'
        # 获取ANSI编码及长度
        list = data.encode('mbcs')
        len_list = len([format(i, 'X') for i in list])
        #塔石4G DTU编码格式
        byte_list += chr(0) + chr(len_list)
        for i in list:
            byte_list += chr(i)
        byte_list += '\r\n'
        # 串口使用比特流传输
        s_byte_list = bytes(byte_list, encoding='UTF-8')
        return s_byte_list

class mSerial:
    def __init__(self, com, bps, timeout):
        self.port = com
        self.bps = bps
        self.timeout = timeout
        global Ret
        try:
            # 打开串口,得到串口对象
            self.main_serial = serial.Serial(self.port, self.bps, timeout=self.timeout)
            # 判断是否打开成功
            if (self.main_serial.is_open):
                Ret = True
        except Exception as error:
            print("---Error---:", error)
    # 打开串口
    def Open_serial(self):
        self.main_serial.open()
    # 发送数据
    def Send_data(self, data):
        self.main_serial.write(data)
    # 关闭串口
    def Close_serial(self):
        self.main_serial.close()
        print(self.main_serial.is_open)  # 检验串口是否打开

if __name__ == '__main__':
    count=1
    myserial=mSerial('COM5',9600,0.5)
    if (Ret):
        while (1):
            Chang = random.uniform(-5, 15)
            temperature = 20 + Chang
            temperature = round(temperature, 2)
            data = {"Temperature": temperature}
            a = Converter.to_hex(str(data))
            myserial.Send_data(a)
            time.sleep(3)
            print('数据序号:',count)
            print('温度值:',temperature)
            count+=1
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要实现Java和4G DTU设备之间的通信,可以通过以下步骤: 1. 首先,确保Java程序中有相应的串口通信库,例如rxtx或JavaComm。这些库可以让Java程序通过串口与设备进行通信。 2. 确保4G DTU设备正确配置,配置包括设置串口参数(如波特率、数据位、校验位和停止位),并确保设备与计算机通过串口连接。 3. 在Java程序中,使用串口通信库打开与设备相连的串口,可以通过指定串口号或设备名称来打开串口。 4. 建立与设备的通信会话。可以通过向设备发送指令或数据来与设备进行通信,例如读取设备状态、发送控制命令等。 5. 在Java程序中,接收和解析来自设备的响应。可以通过读取串口缓冲区的数据来获取设备的响应,然后解析响应以获取所需的信息。 6. 根据需要,可以在Java程序中实现对设备进行控制的功能。这可以通过向设备发送控制命令或数据来实现。 7. 最后,在与设备通信完成后,记得关闭串口并释放相应的资源,以确保程序的正确执行。 综上所述,通过使用相应的串口通信库,可以在Java程序中实现与4G DTU设备的通信。通过打开串口,发送和接收数据,解析响应等步骤,可以实现与设备的通信,并根据需要进行相应的控制操作。 ### 回答2: 要实现 Java 和 4G DTU 设备之间的通信,我们可以采用以下步骤: 1. 确定设备接口:首先,我们需要了解 4G DTU 设备的通信接口类型,例如串口、以太网等。根据接口类型,我们选择适当的 Java 库和插件来实现通信。 2. 连接设备:使用 Java 提供的串口通信库或者网络通信库,我们可以建立 Java 程序与 4G DTU 设备之间的连接。如果是串口通信,我们需要指定正确的端口和波特率;如果是网络通信,我们需要指定正确的 IP 地址和端口号。 3. 通信协议:在建立连接后,我们需要确定设备所使用的通信协议。4G DTU 设备通常使用 Modbus、MQTT 或者自定义的协议进行通信。根据设备的协议,我们可以使用相应的 Java 库来解析和封装数据。 4. 数据读取和写入:通过 Java 程序与 4G DTU 设备之间的连接,我们可以实现对设备数据读取和写入。根据设备的协议,我们可以发送合适的指令或者请求来获取设备数据,同时也可以发送指令来向设备写入数据。 5. 异常处理:在通信过程中,可能会出现各种异常情况,例如通信中断、超时等。我们需要使用异常处理机制来捕获和处理这些异常,以保证程序的稳定运行。 6. 数据解析和处理:获取到设备数据后,我们可以利用 Java 提供的数据处理和计算功能对数据进行解析和处理。根据具体的应用场景,我们可以把数据存储到数据库、进行数据分析或者其他操作。 需要注意的是,以上步骤仅提供了一个基本的通信框架,具体实现还需要根据具体的设备和应用场景进行调整和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

✎浅笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值