sábado, 30 de junio de 2012


PROYECTOS; EoEiProEngLib, MathEngProLib, EquatnEngProLib & and HP50GNKLib
 
A continuación listo unos proyectos que se están desarrollando para la calculadora HP50G en el blog de AdictosHp
0: MathEngProLib.lib (Mathematics Engineering Professional Library)
1: EoEiEngProLib.lib (Electronic And Electrical Engineering Professional Library)
2: EquatnEngProLib.lib (Equation Engineering Professional Library)
3: HP50GNKLib.lib (NewKernel for HP50G)
Un agradecimiento especial a Roger Broncano (PERU) creador de HPuserEdit, sin este software seria imposible desarrollar proyectos complejos para las calculadoras HP
La primer biblioteca que comparto libremente con vosotros es 1: EoEiEngProLib.lib (ElectrOnic And ElectrIcal Engineering Professional Library) Versión Alpha 0.02, existe una biblioteca similar llamada EEpro que fue creada en 1994 en lenguaje SystemRPL para la serie HP48. /!\ Nota mi biblioteca (EoEiEngProLib.lib) no toma ningún código ni gráficas, etc. de EEpro, no he descompilado EEpro. solo he tomado las ecuaciones pero las ecuaciones son universales y he tomado también los indices o menús de la EEpro que son cadenas de textos como
"Resistive Circuits" "Capacitance and Electric Fields"
"Inductance And Magnetism""Electron Motion""Meters and Bridge Circuits"
"RC and RL Circuits""RLC Circuits"

si estoy violando algún derecho de autor, me lo hacen conocer.
Gracias
Desarrolle un motor 100% en UserRPL para dichos aplicaciones el cual es GUIplus.lib (100Kbytes) y que contiene unas cajas de dialogo similar a INFORM pero con muchísimas opciones mas, como incorporar menús personalizados, cambio de tipo de fuente, iconos en los menús, etc.
(EoEiEngProLib.lib) esta disponible libremente dentro del siguiente archivo
http://www.unalmed.edu.co/~ameza/calcs/hp/GUIplus_HP48_49_50_GraphicalUs...
Por favor prueban esta aplicación ya sea en el emulador o calculadora real y espero sus comentarios, sugerencias, aportes, etc.
LISTA DE ARCHIVOS
0: GUIplusHP4x50FontsAndIcons.lib Fuentes de texto (3072 caracteres creados pixel*pixel) especializadas para CAS(Sistema Algebraico Computarizado) las fuentes originales de las calculadora HP50, son las mismas de la HP48GX que en ese entonces solo era pensada para calculo numérico.

1: GUIplusHP4x50GraphicalUserInterface.lib Biblioteca con funciones para generar cajas de dialogo.
2: GUIplusHP4x50ConstantObjs.lib Biblioteca de constantes que son requieren para la anterior biblioteca.
3: EoEiEngProLib.dir Directorio de trabajo de la biblioteca EoEiEngProLib.lib, en este directorio se almacena las variables de las ecuaciones, posiciones de las cajas de dialogo para que cuando sean llamadas de nuevo sean automáticamente puestas en ellas.
Actualmente solo he codificado el Menu EQUATIONS/RESISTIVE CIRCUITS/OHM'S LAW,
capturas de pantalla, el lado izquierdo es la biblioteca de 1994 (EEpro), el lado es la actual 2011 (EoEiEngProLib.lib)
Como se pueden unir al proyecto:
0: Ayundandome a completar los menús,
la codificación es muy intuitiva, por ejemplo:
Menu Principal se genera con el siguiente código
 menuEoEiEngProLb
 «
  { ResCirIcon "Elec/tronic/tricalEngLib" }
  {
   { { FntPreviousMenuG AnimatsNumber3 } "Prv"       « "" STDflagsHelp » « comingSoonDgBox  » }
   { { Book0Icon        AnimatsNumber4 } "Analysis"  « "" STDflagsHelp » « comingSoonDgBox  » }
   { { MathExprIcon     AnimatsNumber4 } "Equations" « "" STDflagsHelp » « equatnsMenuEEEPL » }
   { { ResCirIcon       AnimatsNumber4 } "Reference" « "" STDflagsHelp » « comingSoonDgBox  » }
   { { ToolsIcon        AnimatsNumber4 } "Tools"     « "" STDflagsHelp » « toolsEoEiEngPrLb » }
   { { FuntionNextMenuG AnimatsNumber3 } "Nxt"       « "" STDflagsHelp » « comingSoonDgBox  » }
  }
  NoCustomMenu
  { POSmainMenuDgBox ONtitleBar ONdownBar
   { UpVertALING CenterHorzALING LeftTextALING }
   ONhelpLine ONrestorPrvScrn FGmainMenu
  }
  NoPath
  functionsMenuBOX
  'POSmainMenuDgBox' « evalOption » processDiagBox
 »
El menú de ecuaciones se genera con el siguiente código
 equatnsMenuEEEPL
 «
  { { "Equations" equatnsMenuEEEPL } }
  'CurrentDgBoxPath' STO

  { MathExprIcon "E0:Equations" }

  {
   { ResCirIcon     "Resistive Circuits"              « "Resistive Circuits" LineFeedChar + " " + STDflagsHelp » « restivCircsEEEPL » }
   { Condenser0Icon "Capacitance and Electric Fields" « "Capacitance and Electric Fields" STDflagsHelp » « comingSoonDgBox » }
   { Coil0Icon      "Inductance And Magnetism"        « "Inductance And Magnetism"        STDflagsHelp » « comingSoonDgBox » }
   { "e"            "Electron Motion"                 « "Electron Motion"                 STDflagsHelp » « comingSoonDgBox » }
   { Empty19x8Icon  "Meters and Bridge Circuits"      « "Meters and Bridge Circuits"      STDflagsHelp » « comingSoonDgBox » }
   { RC0Icon        "RC and RL Circuits"              « "RL and RC Circuits"              STDflagsHelp » « comingSoonDgBox » }
   { RC0Icon        "RLC Circuits"                    « "RLC Circuits"                    STDflagsHelp » « comingSoonDgBox » }
  }

  CstMenuT2
  { POSEquatsMenuDgBox ONtitleBar ONdownBar
   { DownVertALING CenterHorzALING CenterTextALING }
   ONhelpLine ONrestorPrvScrn FGequationsMenuDgBox
  }
  CurrentDgBoxPath
  chooseBOX
  'POSEquatsMenuDgBox' « evalOption » processDiagBox
 »
Entrada de datos de las ecuaciones
 restivCircsEEEPL
 «
  { { "Equations" equatnsMenuEEEPL } { "Resistive Circuits" restivCircsEEEPL } }
  'CurrentDgBoxPath' STO

  { ResCirIcon "E01:Resistive Circuits" }
  {
   { VIRicon       "Ohm's Law & Power"
    « { { "Equations:" 'V=I*R' 'P=I*V' 'P=I^2*R' 'P=V^2/R' 'P=V^2*G' } OhmsLaw1G } STDflagsHelp »
    « OhmsLaw&PwrEEEPL »
   }
   { ""            "Resistance & Conductance" « "Resistance & Conductance" STDflagsHelp » « comingSoonDgBox » }
   { "T"           "Temperature Effect"       « "Temperature Effect"       STDflagsHelp » « comingSoonDgBox » }
   { Empty19x8Icon "Maximum Power Transfer"   « "Maximum Power Transfer"   STDflagsHelp » « comingSoonDgBox » }
   { Empty19x8Icon "V & I Source Equivalence" « "V & I Source Equivalence" STDflagsHelp » « comingSoonDgBox » }
  }

  @{CustomMenu
   { NoIcon "Stack" « goToStack » ONrestorPrvScrn } @ CustomF1
   { NoIcon "Vpict" « viewPictureHelp » ONrestorPrvScrn } @ CustomF2
   Menu3 refreshDgBxFont @  CustomF2
   CustomMenuType1
   4 LIST
  @}
  { POSrestiveCircsDgBx ONtitleBar ONdownBar
   { DownVertALING CenterHorzALING CenterTextALING }
   ONhelpLine ONrestorPrvScrn FGrestiveCircsDgBx
  }
  CurrentDgBoxPath
  chooseBOX
  'POSrestiveCircsDgBx' « evalOption » processDiagBox
 »

 OhmsLaw&PwrEEEPL
 «
  {
   { "Resistive Circuits" restivCircsEEEPL }
   { "Ohm's Law and Power" OhmsLaw&PwrEEEPL }
  }
  'CurrentDgBoxPath' STO

  { :Voltage_V:V :Current_A:I :Resistance_:R :Power_W:P :Conductance:G } 'EqVars' STO


  { VIRicon "E02:Ohm's Law and Power" }

  {
   {
    "Eq0:"
    "V=I*R"
    « { { "EquationR 0:" 'V=I*R' } OhmsLaw1G } { ONdownBar LeftTextALING 0 } »
    « 'V=I*R' 'EQ0' STO EQ0SolverEEEPrLb »
   }

   {
    "Eq1:"
    "P=I*V"
    « { { "Equation 1:" 'P=I*V' } OhmsLaw1G } { ONdownBar LeftTextALING 0 } »
    « 'P=I*V' 'EQ1' STO »
   }

   {
    "Eq2:"
    "P=I^2*R"
    « { { "Equation 2:" 'P=I^2*R' } OhmsLaw1G } { ONdownBar LeftTextALING 0 } »
    « 'P=I^2*R' 'EQ2' STO »
   }

   {
    "Eq3:"
    "P=V^2/R"
    « { { "Equation 3:" 'P=V^2/R' } OhmsLaw1G } { ONdownBar LeftTextALING 0 } »
    « 'P=V^2/R' 'EQ3' STO »
   }

   {
    "Eq4:"
    "P=V^2*G"
    « { { "Equation 4:" 'P=V^2*G' } OhmsLaw1G } { ONdownBar LeftTextALING 0 } »
    « 'P=V^2*G' 'EQ4' STO »
   }

   {
    "Eq5:"
    "R=1/G"
    « { { "Equation 5:" 'R=1/G' } OhmsLaw1G } { ONdownBar LeftTextALING 0 } »
    « 'R=1/G' 'EQ5' STO »
   }

  }

  { @CustomMenu
   { NoIcon "Stack" « goToStack » ONrestorPrvScrn }      @ CustomF1
   { NoIcon "Vpict" « viewPictureHelp » ONrestorPrvScrn }@ CustomF2
   { NoIcon "Pict" « getPictureHelp DROP goToStack » ONrestorPrvScrn }@ CustomF3
   { NoIcon "EqVar" « viewVarsEEEnPrLb » ONrestorPrvScrn }  @ CustomF4
   { NoIcon "Reset" « resetVarEoEiEPLb » ONrestorPrvScrn } @ CustomF5
   CustomMenuType1
  }

  { POSOhmsLawAndPowerMenu ONtitleBar ONdownBar
   { DownVertALING CenterHorzALING CenterTextALING }
   ONhelpLine ONrestorPrvScrn OhmsLawAndPowerDgBoxFG
  }
  CurrentDgBoxPath
  chooseBOX
  'POSOhmsLawAndPowerMenu' « evalOption » processDiagBox
 »
1: Optimizando los códigos o algoritmos para que se ejecuten mas rápido
2: De pronto algún entusiasta( s ) [AdictoHP] que haga un port de GUI+.lib en SystemRPL para incrementar enormemente la velocidad de ejecución de las cajas de dialogo. y un sueño casi imposible cajas de dialogo en escala de grises (lenguaje ML) como lo hace la nueva HP39GII y de pronto lo hará la próxima calculadora para ingeniería la HP51GX
3: Renombrar los nombres de funciones, escribí todo el código en ingles, pero hay que hacer muchas correcciones
POR HACER:
0: Un solucionador múltiple de ecuaciones dentro de la caja de dialogo.
1: Almacenar las posiciones de caja de dialogo en un solo archivo, actualmente lo hace independientemente.
2: Incorporar unidades.
Prevista de la biblioteca MathEngProLib Mathematics Engineering Professional Library

2 comentarios:

deja tus comentarios, los responderé lo más rápido que pueda....