IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> ubuntu18里用python编写modbus-RTS -> 正文阅读

[开发工具]ubuntu18里用python编写modbus-RTS

1.conda环境

用PIP3 或 conda 安装好下面库

1.1 python3.6

1.2 pyserail3.5

1.3 crcmod 1.7

2.代码

查看USB名字,终端输入:

ls /dev/

通过对比插拔usb时,新增的名字,确认串口名,通常是: ttyUSB0

打开串口权限 ,终端输入:

sudo chmod 777 /dev/ttyUSB0

?在pycharm里选择配置好的conda环境,运行以下代码。

import serial
import time
import math
from crcmod import mkCrcFun
from binascii import unhexlify


def crc16_modbus(s):
    crc16 = mkCrcFun(0x18005, rev=True, initCrc=0xFFFF, xorOut=0x0000)
    return get_crc_value(s, crc16)


def get_crc_value(s, crc16):
    data = s.replace(' ', '')
    crc_out = hex(crc16(unhexlify(data))).upper()
    str_list = list(crc_out)
    if len(str_list) == 5:
        str_list.insert(2, '0')  # 位数不足补0
    crc_data = ''.join(str_list[2:])
    return crc_data[:2] + ' ' + crc_data[2:]


def pressure_input_transform(num1, num2=0, num3=0, num4=0):
    p1 = hex(math.ceil(num1 / 0.6 * 409.5))
    p2 = hex(math.ceil(num2 / 0.6 * 409.5))
    p3 = hex(math.ceil(num3 / 0.6 * 409.5))
    p4 = hex(math.ceil(num4 / 0.6 * 409.5))

    str1 = p1[2:len(p1)].zfill(4)
    str2 = p2[2:len(p2)].zfill(4)
    str3 = p3[2:len(p3)].zfill(4)
    str4 = p4[2:len(p4)].zfill(4)

    str5 = crc16_modbus('01' + '10' + '00' + '01' + '00' + '04' + '08' + str1 + str2 + str3 + str4)
    crc_h = str5[3:5]
    crc_l = str5[0:2]

    return '01' + '10' + '00' + '01' + '00' + '04' + '08' + str1 + str2 + str3 + str4 + crc_h + crc_l


if __name__ == '__main__':
    s = serial.Serial('/dev/ttyUSB0', 9600, bytesize=8, stopbits=1, parity='N')
    d = bytes.fromhex(pressure_input_transform(0.25, 0, 0, 0))

    a = s.write(d)

    time.sleep(2)  # must stop
    s.close()

以上代码包含了我机器的部分转换代码,请根据实际情况更改代码。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-12-18 16:11:43  更:2021-12-18 16:12:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:46:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码