User Tools

Site Tools


uphp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
uphp [2018/09/01 08:49]
jeff MEGA verbage improved
uphp [2021/04/07 09:35]
admin
Line 1: Line 1:
-======Programming the Wattmon======+======uPHP======
  
-"Programming" and "scripting" are used interchangeably throughout this documentation.+The [[hardware:wattmons|Wattmon]] is built on a scripting language that is syntactically identical to PHP((PHP is a server-side scripting language designed primarily for web development but also used as a general-purpose programming language. PHP stands for "PHP: Hypertext Preprocessor.This confuses many people because the first word of the acronym is the acronym (this type of acronym is called a recursive acronym.) )) - we call it uPHP for Micro-PHP.  It has a small but powerful subset of the functions and features found in the PHP language.
  
-The Wattmon is built on a scripting language that is syntactically identical to PHP((PHP is a server-side scripting language designed primarily for web development but also used as a general-purpose programming language. PHP stands for "PHPHypertext Preprocessor." This confuses many people because the first word of the acronym is the acronym (this type of acronym is called a recursive acronym.) )) - we call it uPHP for Micro-PHP.  It has a small but powerful subset of the functions and features found in the PHP language.+This section contains an introduction and detailed guide for using the built in scripting language to customize the [[hardware:wattmons|Wattmon]] for any application:
  
-=====Why uPHP?=====+  * [[uphp:uphp_intro|Programming the Wattmon]] - An introduction of general interest to all users, as it explains the architecture and design of the OS
  
-First perhaps it would be good to explain a bit about how and why we chose PHP.  The goal of the Wattmon is to provide a highly flexible platform that can be customized for pretty much any application imaginable, keeping in mind very low memory availability.  It became clear that a scripting language would be required to implement this, since having custom firmwares for various applications would be very tedious.  The question then becamewhat would be the *best* scripting language that is well known today and can be deployed on a microcontroller with such limited resource?  The choices are actually very small.  Most modern scripting languages require quite a bit of RAM.  So, we decided to roll our own scripting language from scratch and base it off a well known language.+  * [[uphp:uPHP Language Basics]] - Basic syntax and tips to get started
  
-The Wattmon interface is primarily browser based, and generates HTML pages on the fly from uPHP scripts.  The methodology of HTML-PHP integration is well understood by most programmers and hence it allows you to become more productive quickly. +  * [[uphp:functions|uPHP Function Reference]] - The entire function list (advanced) 
- +      * [[uphp:modbus_functions|uPHP Serial and Modbus Functions]] - Serial and Modbus Functions 
-====Challenges==== +  [[uphp:library_functions:library_functions|uPHP Library Function Reference]] - WattmonOS additional function libraries 
- +   
-The biggest challenge with the scripting language is its memory limitation.  The [[hardware:wattmons:WattmonPRO]] and [[hardware:wattmons:WattmonMINI]] processors have a total of 128KB (yes, Kilobytes!) of RAM available to run a multitasking OS with a TCP/IP and USB stack, modbus polling engine, scheduler and more.  For these platforms during normal operation scripts have a maximum of about 30 KB of memory for variables, which means that as a programmer you need to be very conscious of memory allocation.  We have introduced some special non-PHP compatible variable types to help with this.  The [[uphp:functions:indexed_array()]] function lets you create arrays of a very specific type (int, byte, etcwhich will reduce the amount of resources compared to hash arrays created with the [[uphp:functions:array()]] function. +  [[uphp:uPHP Special Variables]] - Special arrays that are populated automatically before a script is run 
- +   
-The [[hardware:wattmons:WattmonMEGA]] processor has a total of 512KB of RAM (4 times as much as for the PRO and the MINI). Memory limitations are much less of a challenge when scripting for the MEGA. +  [[uphp:Blockly Programming the Wattmon]] - An introduction to using the visual blockly language to create scripts on Wattmon
- +
-====Benefits==== +
- +
-Having a scripting language that lets you modify and edit your program remotely is a very powerful thing.  It lets you provide remote support to your clients and fix issues without needing to visit the site, and also makes your applications future-proof as you can at any time update the code base and integrate new features or protocols. +
- +
-[[uphp:uPHP Language Basics]] +
- +
-[[uphp:functions|uPHP Function Reference]]+
  
uphp.txt · Last modified: 2021/09/13 05:57 (external edit)