Herramientas de usuario

Herramientas del sitio


prog_python:python

Python

Web

IPC (Inter-Process Communication)

https://docs.python.org/3/library/ipc.html
Unix socket = IPC socket
datagram socket = sin coneccion ~ UDP/IP
stream socket ~ TCP/IP
memory-mapped file = mmap

Fecha, tiempos, calendario

GUI

tkinter
wxPython
kivy tambien para Android
pyQt
pyGUI
pyforms https://pyforms.readthedocs.io
PySimpleGUI libreria basada en tkinter

Data base, comunicacion

http://pythonhosted.org/pymodbus/ PyModbus documentacion

Tabla caracteres Unicode https://unicode-table.com/es

crear un ejecutable

PyModbus (RTU)

import pymodbus
# https://github.com/riptideio/pymodbus/
# https://pypi.org/project/pymodbus/
from pymodbus.client.sync import ModbusSerialClient 

config = {}
config["rtu_serial"] = '/dev/ttyS0'
config["rtu_timeout"] = 0.5
config["rtu_speed"] = 19200
config["rtu_par"] = 'N'  # N=none, O=odd=inpar, E=even=par 
config["rtu_slave"] = 1

import glob
scan = glob.glob('/dev/ttyS*') + glob.glob('/dev/ttyUSB*') + glob.glob('/dev/ttyACM*')
if config["rtu_serial"] in scan:
print('serial ',config["rtu_serial"] +"'  si existe")
else:
print("error: '"+ config["rtu_serial"] +"'  no existe\n")
msg = "encontrados: "
for name in scan:
	msg = msg +"'"+ name +"' "
print(msg)
sys.exit(1)
print('config:',config["rtu_speed"],'baud',' 8'+config["rtu_par"]+'1')

rtu = ModbusSerialClient( port= config["rtu_serial"],
	method= "rtu", baudrate= config["rtu_speed"],
	bytesize= 8, parity= config["rtu_par"], stopbits= 1, 
	timeout= config["rtu_timeout"] )

if rtu.connect():
print("hay conexion con rtu slave",config["rtu_slave"])
else:
print("sin conexion con rtu slave",config["rtu_slave"])

#________________________________
def LeerBits(inicio,cantidad):
"""retorna una lista de valores"""
bit = []
if rtu.connect():
	resp= rtu.read_coils(inicio, cantidad, unit=config["rtu_slave"])
	if not resp.isError():
		bit = resp.bits
	return bit
#________________________________
def EscribirBits(inicio,bits):
"""bits es una lista de valores"""
resp= rtu.write_coils(inicio, bits, unit=config["rtu_slave"])
if not resp.isError():
	return True
else:
	return False
#________________________________
def LeerEnteros(inicio,cantidad):
"""retorna una lista de valores"""
reg = []
if rtu.connect():
	resp= rtu.read_holding_registers(inicio, cantidad, unit=config["rtu_slave"])
	if not resp.isError():
		reg = resp.registers
	return reg
#________________________________
def EscribirEnteros(inicio,regs):
"""regs es una lista de valores"""
resp= rtu.write_registers(inicio, regs, unit=config["rtu_slave"])
if not resp.isError():
	return True
else:
	return False
#________________________________
""" ejemplos con registros"""
print('\nEscribir en reg %MW0 y siguientes: 0,1111,2222,3333,4444,5555,6666,7777,8888,9999')
valores= [0,1111,2222,3333,4444,5555,6666,7777,8888,9999]
EscribirEnteros(inicio=0, regs= valores)

print('\nLeer 7 enteros, desde %MW0 hasta %MW6')
print( LeerEnteros(inicio=0,cantidad=7) )

print('\nLeer 6 enteros, desde %MW3 hasta %MW8')
print( LeerEnteros(inicio=3,cantidad=6) )

#________________________________
""" ejemplos con bits"""
print('\nEscribir en bits %M0 y siguientes: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1')
valores= [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
EscribirBits(inicio=0, bits= valores)

print('\nLeer 16 bits, desde %M0 hasta %MW15')
print( LeerBits(inicio=0,cantidad=16) )

print('\nEscribir 0 en bit %M3')
EscribirBits(inicio=3, bits= [0])

print('\nLeer 16 bits, desde %M0 hasta %MW15')
print( LeerBits(inicio=0,cantidad=16) )
  
rtu.close()  # liberar puerto serial

https://pypi.org/project/pyModSlave/
https://github.com/zxlin/Modbus-PLC-Simulator
https://sourceforge.net/projects/pymodslave/
https://sourceforge.net/projects/qmodmaster/

  Python Shelve Module
  https://www.pythoncheatsheet.org/modules/shelve-module
  https://rico-schmidt.name/pymotw-3/shelve/index.html
  
  ________________________________
  TinyDB    https://tinydb.readthedocs.io/en/latest/#
  
  _________________________________
  pickleDB    https://pypi.org/project/pickleDB/
  
  _________________________________
  ZODB
prog_python/python.txt · Última modificación: 2025/05/08 23:04 por rolf

Excepto donde se indique lo contrario, el contenido de este wiki esta bajo la siguiente licencia: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki