Tabla de Contenidos
Python
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/
Web
https://cherrypy.dev/ python en servidor web
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/#
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
https://pyoxidizer.readthedocs.io
https://www.pyinstaller.org
http://www.py2exe.org/
https://pyoxidizer.readthedocs.io/en/latest/comparisons.html
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