https://es.wikipedia.org/wiki/Python
https://www.python.org/
https://pypi.org/
https://www.geeksforgeeks.org/python-tkinter-tutorial/
http://python-para-impacientes.blogspot.com
https://docs.python-guide.org/
https://learnxinyminutes.com/docs/es-es/python-es/
dibujar con canvas
JSON serializar y deserializar
Serialización con pickle
https://docs.python.org/3/ documentacion python version 3
https://docs.python.org/3/library/tkinter.html
https://devfreebooks.github.io/python/
using Flask Python web framework
web py es un framework para desarrollo web que es simple y potente.
https://webpy.readthedocs.io/en/latest/index.html
http://www.brython.info ejecutar codigo python, en paginas web (lado cliente)
https://pyscript.net/ python en navegador del cliente
https://www.tutorialspoint.com/python3/python_cgi_programming.htm
http://cgi.tutorial.codepoint.net/session
https://bottlepy.org/docs/dev/index.html crear paginas web con python (lado servidor)
https://www.escuelapython.com/usa-python-en-el-navegador-con-transcrypt/
https://pythontips.com/2019/05/22/running-python-in-the-browser/
www.web2py.com/books
headers del protocolo http
https://requests.readthedocs.io/es/latest/#
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
tkinter
wxPython
kivy tambien para Android
pyQt
pyGUI
pyforms https://pyforms.readthedocs.io
PySimpleGUI libreria basada en tkinter
http://pythonhosted.org/pymodbus/ PyModbus documentacion
Tabla caracteres Unicode https://unicode-table.com/es
https://pyoxidizer.readthedocs.io
https://www.pyinstaller.org
http://www.py2exe.org/
https://pyoxidizer.readthedocs.io/en/latest/comparisons.html
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