python modbus tk 库_python modbus_tk模块学习笔记(rtu slaver例程)
GIT地址:https://github.com/ljean/modbus-tk
找到modbus rtu slaver 例程
用宝塔将例程复制到centos目录
#!/usr/bin/env python
# -*- coding: utf_8 -*-
"""
Modbus TestKit: Implementation of Modbus protocol in python
(C)2009 - Luc Jean - luc.jean@gmail.com
(C)2009 - Apidev - http://www.apidev.fr
This is distributed under GNU LGPL license, see license.txt
"""
import sys
import modbus_tk
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu
import serial
PORT = 0
#PORT = '/dev/ptyp5'
def main():
"""main"""
logger = modbus_tk.utils.create_logger(name="console", record_format="%(message)s")
#Create the server
server = modbus_rtu.RtuServer(serial.Serial(PORT))
try:
logger.info("running...")
logger.info("enter 'quit' for closing the server")
server.start()
slave_1 = server.add_slave(1)
slave_1.add_block('0', cst.HOLDING_REGISTERS, 0, 100)
while True:
cmd = sys.stdin.readline()
args = cmd.split(' ')
if cmd.find('quit') == 0:
sys.stdout.write('bye-bye\r\n')
break
elif args[0] == 'add_slave':
slave_id = int(args[1])
server.add_slave(slave_id)
sys.stdout.write('done: slave %d added\r\n' % (slave_id))
elif args[0] == 'add_block':
slave_id = int(args[1])
name = args[2]
block_type = int(args[3])
starting_address = int(args[4])
length = int(args[5])
slave = server.get_slave(slave_id)
slave.add_block(name, block_type, starting_address, length)
sys.stdout.write('done: block %s added\r\n' % (name))
elif args[0] == 'set_values':
slave_id = int(args[1])
name = args[2]
address = int(args[3])
values = []
for val in args[4:]:
values.append(int(val))
slave = server.get_slave(slave_id)
slave.set_values(name, address, values)
values = slave.get_values(name, address, len(values))
sys.stdout.write('done: values written: %s\r\n' % (str(values)))
elif args[0] == 'get_values':
slave_id = int(args[1])
name = args[2]
address = int(args[3])
length = int(args[4])
slave = server.get_slave(slave_id)
values = slave.get_values(name, address, length)
sys.stdout.write('done: values read: %s\r\n' % (str(values)))
else:
sys.stdout.write("unknown command %s\r\n" % (args[0]))
finally:
server.stop()
if __name__ == "__main__":
main()
查看centos串口号
[root@bogon /]# cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0 CTS|DSR|CD
1: uart:16550A port:000002F8 irq:3 tx:40867 rx:13240 DSR|CD
2: uart:unknown port:000003E8 irq:4
3: uart:unknown port:000002E8 irq:3
[root@bogon /]# ls -l /dev/ttyS*
crw-rw---- 1 root dialout 4, 64 12月 18 11:29 /dev/ttyS0
crw-rw---- 1 root dialout 4, 65 12月 18 12:39 /dev/ttyS1
crw-rw---- 1 root dialout 4, 66 12月 18 11:29 /dev/ttyS2
crw-rw---- 1 root dialout 4, 67 12月 18 11:29 /dev/ttyS3
[root@bogon /]#
这里我用的
/dev/ttyS1
刚才复制的例程
修改
PORT = 0
#PORT = '/dev/ptyp5'
为
#PORT = 0
PORT = '/dev/ttyS1'
centos下运行例程
python licheng.py
输出
RtuServer /dev/ttyS1 is opened
running...
enter 'quit' for closing the server
输入
set_values 1 0 0 1 2 3 4 5 6 7 8 9 10
返回
done: values written: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
modbus poll
原文链接:https://blog.csdn.net/taogunet/article/details/111410138
python modbus tk 库_python modbus_tk模块学习笔记(rtu slaver例程)相关推荐
- python modbus tk 库_Python Modbus_tk在树莓派上实现rtu master
利用 python modbus工具实现modbus从站的数据采集,很方便简单.Python Modbus 协议工具目前有下面三种: pymodbus MinimalModbus Modbus-tk ...
- python modbus tk 库_python modbus_tk库 学习记录
注:目前的开发只涉及 modbus master即 client端的开发,未涉及 slave端服务器的开发,slave服务器的设计,一般开发嵌入式设备作为数据采集器的时候用到,市面上有现成的slave ...
- python网络编程库_python网络编程学习笔记(9):数据库客户端
一.DB-API概述 python支持很多不同的数据库.由于不同的卖家服务器导致和数据库通信的网络协议各有不同.在python的早期版本中,每一种数据库都带有自己的python模块,所有这些模块以不同 ...
- 对python的评价语_Python自然语言处理学习笔记之评价(evaluationd)
对模型的评价是在test set上进行的,本文首先介绍测试集应该满足的特征,然后介绍四种评价方法. 一.测试集的选择 1.首先,测试集必须是严格独立于训练集的,否则评价结果一定很高,但是虚高,不适用于 ...
- python测试自动化封装_python接口自动化学习笔记(封装获取测试数据方法)
本篇文章是接于python接口自动化学习笔记(封装方法用于读取excel) 后的拓展,讲解在封装完成excel的数据读取代码后,如何在data层进行使用 首先,我准备了这样一个excel表格用以存储测 ...
- python modbus tk 库_如何使用modbus tk rtu(python)设置简单的从机和主机
我想通过modbus协议在树莓pi(从机)和pc(主机)之间建立通信.目前,我正在使用 modbus-tk (python)设置通信协议. 问题是主设备无法从从设备读取寄存器我能知道我的代码有什么问题 ...
- python wmi 显卡型号_python - wmi模块学习(windwos硬件信息获取)
#!/usr/bin/env python#-*- coding: utf-8 -*-#http://www.cnblogs.com/liu-ke/ importwmiimportosimportsy ...
- python做cae库_python常用模块-OS模块
importos__file__:指当前文件,带有路径的 D:/svn_auto3/test_case1/test1.py(注意这里的斜杠,和abspath的区别就是这里)#路径操作 >> ...
- python locust提取参数_python+locust性能测试学习笔记
前言 Locust(俗称 蝗虫)一个轻量级的开源压测工具,基本功能是用Python代码描述所有测试.不需要笨拙的UI或庞大的XML,只需简单的代码即可. 环境安装 Locust支持Python 2.7 ...
最新文章
- 使用面部标记提取和深度神经网络进行“昏昏欲睡”的检测
- mysql十大报错_MySQL十大报错函数
- datagrid后台分页js.js
- SAP Cloud for Customer的公有云和私有云部署方式 - Public Cloud vs Private Cloud
- Java编程:将五子棋棋盘内容用稀疏矩阵存储至磁盘,并从中重新读取内容——稀疏数组和算法
- 风变科技公司的python小课_风变编程Python小课最近很火,大家学完感受如何?
- 36款免费可商用字体 附字体分享链接
- 【YY手机】用AVR单片机制作手机系列教程-基础篇
- 九九乘法表之循环嵌套的奇妙
- 支持iphone的打印服务器,MAC苹果电脑系统 如何添加网络打印机(适用于Mac OS)
- IDEA 打包 jar 包记录
- 拉格朗日法线性规划求解
- 阿里云推出节省计划的每小时承诺消费怎么样?
- Cloudera Manager安装之利用parcels方式安装单节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(CentOS6.5)(四)...
- k8s 部署 owncloud
- Android之如何分析手机系统相册图片和视频删除后保存的位置然后恢复文件,目前已经适配小米、OPPO、VIVO、一加、努比亚、魅族等手机。
- ESP8266 接入阿里物联网平台实现远程控制LED
- bpm java_bpm完全解读
- 本征图像分解:Retinex理论【转载】
- 步进电机驱动器控制转速和圈数
热门文章
- html 行自动对齐,html – 行元素不会对齐
- where 1=1会影响索引吗_MySQL之InnoDB存储引擎:索引的使用
- k3 xp服务器系统,如何在英文XP环境下安装k3系统.doc
- java 调制信号,常见调制技术汇总
- 谷歌云服务器支持udp,谷歌浏览器扩展使用UDP
- FFT分析的加窗和重叠
- xmpp安装到Linux服务器,在Ubuntu 18.04/16.04系统中安装Ejabberd XMPP Server的方法
- linux 停止仿真命令,如何通过命令行关闭Android模拟器
- PHP 设计模式之工厂模式 (静态工厂模式)
- WPF: 共享Grid宽度或高度的方法