EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or...

25
EasyGUI TABLE OF CONTENTS INTRODUCTION DEFINITIONS COMMAND FORMAT CLIENT SERVER COMMUNICATION WRITING SERVERS EXAMPLES THE GENERATOR WIDGETS BUTTON LABEL EDIT MEMO LIST COMBO CHECK RADIO SHAPE SLIDER IMAGE WEB UTILITY COMMANDS: Delete Load Write SETUP

Transcript of EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or...

Page 1: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

TABLE OF CONTENTS

INTRODUCTION

DEFINITIONS

COMMAND FORMAT

CLIENT SERVER COMMUNICATION

WRITING SERVERS

EXAMPLES

THE GENERATOR

WIDGETS

BUTTON

LABEL

EDIT

MEMO

LIST

COMBO

CHECK

RADIO

SHAPE

SLIDER

IMAGE

WEB

UTILITY COMMANDS:

Delete

Load

Write

SETUP

Page 2: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

INTRODUCTION ↑

EasyGUI is an easy and simple way to create a Graphical User Interface on an Androiddevice without any Android programming experience.

The system works by sending simple messages via Wi-Fi (using TCP) from any device andany operating system, to a target Android device (Mobile Phone or Tablet). These messagesare simple strings that allow the creation of 12 different Widgets and a virtually unlimitednumber of Pages.

The most significant feature of these Widgets are that they are dynamic. Meaning thattheir size, shape, position, and color can be changed even after they were created,even during run-time.

Basically EasyGUI works as an Android Client, communicating with a Server on anotherdevice. The server may be ANY kind of hardware using ANY Operating System. All the logicresides in the Server which can be written in ANY language, (Python, Basic, C, C++, Pascal,JavaScript, Lua etc.) as long as they can send and receive messages using Sockets. Thisway most of the effort in creating an App can be concentrated at the “Business End” in theServer.

Page 3: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

DEFINITIONS ↑

Client: An Android device, a Mobile Phone, or an Android Tablet.

Server: Any kind of Computing device, A Desktop, Laptop, Mobile phone, Single BoardComputer (SBC) that is capable of Wi-Fi communication using Sockets.

It may be an Apple Phone or Tablet, An IBM compatible desktop, a Linux system, AnotherAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino.

Template: One or more pages containing EasyGUI widgets.

Widget: A Graphical User Interface Item, that allows communication with the user.

Page 4: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

COMMAND FORMAT ↑

Each Command consists of a Key/Value pair, where the Key is separated from the Value byan Equal (=) sign. Ie. MyButton=Button

Multiple Commands can be strung together where each is separated by a Tilde (~).Ie. MyButton=Button~Left=500~Top=300~Text=Press This

The first Command in a multiple Command line must be the command that identifies the IDand the Type of the Widget.

The ID of a Widget must be unique, even in a multiple Page Template. It must start with acharacter (preferably uppercase) and may contain numbers and an underscore.

All keywords are Case sensitive. There must NOT be spaces between separators.

In Multi Page Templates, The first page is always "Page0, followed by Page1, Page2.etc. in that strict sequence. There are no practical limits to the number of pages a Templatemay contain.

All colors are expressed as 9 digits RGB

There is a Special Command 40 which will cause the App to wait until a User Action (like pressing a

Button or Selecting an item from a List, and when that happens, returns a Reply containing the WidgetID and the Action:

Example:MyButton=Button Creates a Button40 Waits for User Action40=40~MyButton=2 Long press of Mybutton

or if you are using SupportFunctions.py:Put(‘MyList=One|Two|Three’) Creates a List with 3 itemsWait() Waits for User Action,if Widget == ‘MyList’:

print(Action) if User selected the second item, it will print “Two”

Page 5: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

CLIENT SERVER COMMUNICATION ↑The Server will be loaded first, waiting for the Android Client to initiate the conversation.

The first time the App is loaded it will prompt you for the last three digits of the Server’s IP(leading zero fill to 3 digits) and the Port no (leading zero fill to 5 digits).

After that, the Client will store this data, and it will only be necessary to re-input it, if theServer’s IP address or the Port number has changed.

Example: if your Servers IP address is: 192.168.24.73 and the Port is 4000, type in thefollowing when prompted: 07304000

The Client will send a start message first, containing it's IP and other identifying information.

After The initial handshaking, ALL TRANSACTIONS MUST BE IN PAIRS. Ie. EachTRANSMIT (Put) must be followed by a RECEIVE (Get)

The Server will send Commands to the Client to create or change the Widgets. The Client willreply to each message with either: OK (Message 40=40) or ERROR (Message 40=96), or inthe case of a SYNTAX ERROR 40=99.

It is the Servers responsibility to check if an error has occurred.

A typical sequence of events:

1. Create a Template, either using EasyGen or using any Text Editor.2. Copy it to the Android Client (to: /mnt/sdcard/download) the Server will display:

Listening on Port xxxxx and wait for the Client to connect.3. Load the EasyGUI App from the Android Device4. Load the Template (or create it by entering the necessary Commands)5. Issue a Wait command to wait for User action6. The User performs an action (like pressing a Button)7. The Client replies with the following:

a. The ID of the Widgetb. The action the user performed (like short press/long press etc.)

Ie: 40=40~MyButton=2

8. The Server will execute the code based upon the Reply from the Client9. Repeat from Step5

Page 6: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

WRITING SERVERS ↑

There are two ways a Server can be written:

1) In any language, sending “Native” EasyGUI commands.

If the Server is written in Python then a collection of helper functions are provided in

SupportFunctions.py (which can be imported into your code), to provide often needed

routines.

The following Python functions are provided by SupportFunctions.py:

Open(Port) Opens communication with the Client on the specified Port

Ie: Open(4000)

Put(Message) Transmits a message to the Client. Ie: Put(‘AAA=Button’)

Get() Receives a reply from the Client. Ie: 40=40~MyButton=1

Send(message) Transmits a message and Receives reply from the Client.

Ie: Send(‘MyButton=Button~Top=500’)

FileExist(FileName) Checks if a file exist on the Client. Returns True or False

GetForm(FileName) Reads a Template from the AndroidClient, and displays it

on the screen of the Android device.

Wait() Waits for a user action and returns the reply.

Ie: 40=40~Edit=MyPassword

Close() Closes the socket, frees the port then exits from Python

and unloads the App

Page 7: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

2) Using the supplied Python ObjectServer.py script which will greatly simplify the coding

necessary for the Server. This is provided to make the programming of the Server much

easier. Its use is not compulsory or necessary in order to use EasyGUI, you can do all

the detailed server programming yourself.

ObjectServer.py is an OOP Server, which converts each Widget into an Object,

which can be referenced by “Dot Notation”. Ie: MyButton.Left = 234 which will move the

Left of Mybutton to 234, or MyButtonTopPosition = MyButton.Top

It automatically stores all the parameters of each Widget every time anything

changes.

ObjectServer.py operation:

ObjectServer.py requires 3 Command Line Parameters:

1) Port Number

2) The FileName of the Template on the Android Client.

3) The FileName of the Python Script to be run. This is the Python code that

you need to write yourself to perform the purpose of your job.

Ie: 4000 Garage.dat Garage.py

When ObjectServer.py is started, it will perform the following operations:

a) Open Communication with the Android Client

b) Loads the template from the Android Client and displays it on the screen

c) Converts each Widget into an Object, and stores all of its Parameters

d) It calls the Python script that you write Yourself, which performs the

purpose of your job.

This script may also call other User written scripts, and also use some of

the following functions provided by ObjectServer.py:

Get() Receives a reply from the Client. from the Wait function

Ie: 40=40~MyButton=2

Wait() Issues a message 40 and waits for a user action and

returns the reply. Ie: 40=40~Edit=MyPassword

Close() Closes the socket, frees the port then exits from Python

and unloads the App

NOTE: Do NOT use direct EasyGUI commands, as

they will NOT update the Widget ObjectsIn case you need to create some new Widgets after the

script has started, it should be done, by creating some

“Dummy” widgets in the template, with their Height = 0,

so they will be invisible, and then changing their

Parameters by dot notation, so they become visible..

Page 8: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

EXAMPLES ↑

Python example where you can type each command manually, and the widgets will becreated/changed interactively using SupportFunctions.py.

# SimpServer.py - Manual Commands only !

from SupportFunctions import *

Open(4000)while True: Mess = input('Send: ') if Mess != '': Put(Mess) print(Get()) else: Close()

This Garage Door Opener demonstrates the power of EasyGUI. It uses 2 Image widgets (the Garage

and the Door) and 1 button. The Template only contains 4 Commands. it is using ObjectServer.py

# Garage.py

def GoUp():

while int(Door.Height) > 0:

time.sleep(.1)

Door.Height = int(Door.Height) -10

Up.Text = 'DOWN'

def GoDown():

while int(Door.Height) < 470:

time.sleep(.1)

Door.Height = int(Door.Height) + 10

Up.Text = 'UP'

Get()

while True:

Wait()

GoUp()

Wait()

Page 9: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

GoDown()

We have also provided examples using Micropython, Javascript and Arduino.

There are examples for two other servers using MQTT , and a MultiThreaded MultiClient Server.

In both of these cases EasyGui can control any number of Clients

Page 10: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

THE GENERATOR ↑In order to make it easier to design Templates, and place them on the Page(s), we have developed the

EasyGen.py Generator. This Graphical User Interface Designer will allow the designer to see the end result on

the Client device itself as the design is being developed.

How to use EasyGen:

1 - Start EasyGen (python EasyGen.py)

2 - Load the App on the Client. The EasyGen GUI will be displayed

Select a Widget from the Select Type list by clicking on it

a - Page0 will be the default

b - Type in a unique ID. The Widget will appear immediately on the Client’s screen

in position x=0, y=0, and it will appear in the Widget List

c - If you want to move or resize the Widgets, click on the Move or Size button

and use the 4 arrow keys to move and or resize the Widget. Each press of

the arrow keys will move or resize the widget by 10 pixels.

As the arrow keys manipulate the Widget the fields on the Gui will change

automatically.

d - Fill in the rest of the fields, as necessary

e - Add more widgets

3 - If you want to edit any of the Widgets, click on it in the Widgets list, and all it’s

parameters will, be displayed so you can edit them

Page 11: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

4 - When the Template is Completed, type in the Name of the file that you want to save it to

on the Client and press ‘Save Template’

5 - If you want to edit an existing Template, Type the name of the file into the FileName

entry and press ‘Load Template’

Since this Script is provided in Source format, you are welcome to modify it, after which any

responsibility for the results will be yours .

WIDGETS ↑

BUTTON

PARAM TYPE DEFAULT COMMENT

ID AlphaNumeric - Must be unique, must start with a character

TYPE Button

Left 0 Numeric

Top 0 Numeric

Width 500 Numeric

Height 200 Numeric

Text Displayed Text - if blank, ID is used

Just 1 Text Justification - Left = 1, Center = 2, Right = 3

Back23623623

6Background Color (RGB)

Color 000000000 Foreground Color (RGB)

Size 14 Font Size

Style 0 Font Style - Normal = 0, Bold = 1, talic = 2, Underline = 4

Min Not used

Max Not used

Pos Not used

Reply 40=40~ID=1 for short press, 2 for long press

Page 12: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

LABEL ↑

PARAM TYPE DEFAULT COMMENT

ID AlphaNumeric - Must be unique, must start with a character

TYPE Label

Left 0 Numeric

Top 0 Numeric

Width 500 Numeric

Height 200 Numeric

Text Displayed Text - if blank, ID is used

Just 1 Text Justification - Left = 1, Center = 2, Right = 3

Back23623623

6Background Color (RGB)

Color 000000000 Foreground Color (RGB)

Size 14 Font Size

Style 0 Font Style - Normal = 0, Bold = 1, talic = 2, Underline = 4

Min Not used

Max Not used

Pos Not used

Reply 40=40~ID=1 for short press, 2 for long press

Page 13: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

EDIT ↑

PARAM TYPE DEFAULT COMMENT

ID AlphaNumeric - Must be unique, must start with a character

TYPE Edit

Left 0 Numeric

Top 0 Numeric

Width 500 Numeric

Height 150 Numeric

Text Default Text to display - * if password

Just 1 Text Justification - Left = 1, Center = 2, Right = 3

Back23623623

6Background Color (RGB)

Color 000000000 Foreground Color (RGB)

Size 14 Font Size

Style 0 Font Style - Normal = 0, Bold = 1, talic = 2, Underline = 4

Min Not used

Max Not used

Pos Not used

Reply 40=40~ID=The entered line

Page 14: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

MEMO ↑

PARAM TYPE DEFAULT COMMENT

ID AlphaNumeric - Must be unique, must start with a character

TYPE Memo

Left 0 Numeric

Top 0 Numeric

Width 500 Numeric

Height 500 Numeric

Text Displayed Text

Just 1 Text Justification - Left = 1, Center = 2, Right = 3

Back23623623

6Background Color (RGB)

Color 000000000 Foreground Color (RGB)

Size 14 Font Size

Style 0 Font Style - Normal = 0, Bold = 1, talic = 2, Underline = 4

Min Not used

Max Not used

Pos Not used

Reply 40=40~ID=Line1|Line2 (Lines entered separated by “|”)

Page 15: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

LIST ↑

PARAM TYPE DEFAULT COMMENT

ID AlphaNumeric - Must be unique, must start with a character

TYPE List

Left 0 Numeric

Top 0 Numeric

Width 500 Numeric

Height 500 Numeric

Text Displayed Text, Lines separated by “|”

Just 1 Text Justification - Left = 1, Center = 2, Right = 3

Back23623623

6Background Color (RGB)

Color 000000000 Foreground Color (RGB)

Size 14 Font Size

Style 0 Font Style - Normal = 0, Bold = 1, talic = 2, Underline = 4

Min Not used

Max Not used

Pos Not used

Reply 40=40~ID=Line2 (the selected line)

Page 16: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

COMBO ↑

PARAM TYPE DEFAULT COMMENT

ID AlphaNumeric - Must be unique, must start with a character

TYPE Combo

Left 0 Numeric

Top 0 Numeric

Width 500 Numeric

Height 150 Numeric

Text Displayed Text, Lines separated by “|”

Just 1 Text Justification - Left = 1, Center = 2, Right = 3

Back23623623

6Background Color (RGB)

Color 000000000 Foreground Color (RGB)

Size 14 Font Size

Style 0 Font Style - Normal = 0, Bold = 1, talic = 2, Underline = 4

Min Not used

Max Not used

Pos Not used

Reply 40=40~ID=Item3 (the selected Item)

Page 17: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

CHECK ↑

PARAM TYPE DEFAULT COMMENT

ID AlphaNumeric - Must be unique, must start with a character

TYPE Check

Left 0 Numeric

Top 0 Numeric

Width 150 Numeric

Height 150 Numeric

Text Text to display with the Checkbox

Just 1 Display Text at Left = 1, Right = 2, Top = 3, Bottom = 4

Back23623623

6Background Color (RGB)

Color 000000000 Foreground Color (RGB)

Size 14 Font Size

Style 0 Font Style - Normal = 0, Bold = 1, talic = 2, Underline = 4

Min Not used

Max Not used

Pos 0 Unchecked = 0, Checked = 1

Reply 40=40~ID=0 for Unchecked, 1 for Checked

Page 18: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

RADIO ↑

PARAM TYPE DEFAULT COMMENT

ID AlphaNumeric - Must be unique, must start with a character

TYPE Radio

Left 0 Numeric

Top 0 Numeric

Width 150 Numeric

Height 150 Numeric

Text Each Buttons Text separated by “|”

Just 1 Text of Left = 1, Text on Right = 2

Back23623623

6Background Color (RGB)

Color 000000000 Foreground Color (RGB)

Size 14 Font Size

Style 0 Font Style - Normal = 0, Bold = 1, talic = 2, Underline = 4

Min 1 Horizontal = 1, Vertical = 2

Max 0 Indicates which button is ON

Pos 0 Off = 0, ON = 1

Reply 40=40~ID=1 (0 = First button,1 = Second Button) …..

Page 19: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

SHAPE ↑

PARAM TYPE DEFAULT COMMENT

ID AlphaNumeric - Must be unique, must start with a character

TYPE Shape

Left 0 Numeric

Top 0 Numeric

Width 150 Numeric

Height 150 Numeric

Text Not Used

Just 1 Square = 1, Circle = 2

Back23623623

6Background Color (RGB)

Color 000000000 Drawing Color (RGB)

Size Not used

Style Not used

Min 1 Non-Transparent = 1, Transparent = 2

Max Not used

Pos Not used

Reply 40=40~ID=1

Page 20: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

SLIDER ↑

PARAM TYPE DEFAULT COMMENT

ID AlphaNumeric - Must be unique, must start with a character

TYPE Slider

Left 0 Numeric

Top 0 Numeric

Width 500 Numeric

Height 200 Numeric

Text Not Used

Just 1 Horizontal = 1, Vertical = 2

Back23623623

6Background Color (RGB)

Color 000000000 Foreground Color (RGB)

Size Not Used

Style Not Used

Min 0 Minimum Value

Max 100 Maximum Value

Pos 50 Current Value

Reply 40=40~ID=Current Position of Slider

Page 21: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

IMAGE ↑

PARAM TYPE DEFAULT COMMENT

ID AlphaNumeric - Must be unique, must start with a character

TYPE Image

Left 0 Numeric

Top 0 Numeric

Width 500 Numeric

Height 500 Numeric

Text File Name (if file is in Client) or URL

Just Not used

Back Not used

Color Not used

Size Not used

Style Not used

Min Not used

Max Not used

Pos Not used

Reply 40=40~ID=1 fort short press, 2 for long press

Page 22: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

WEB ↑

PARAM TYPE DEFAULT COMMENT

ID AlphaNumeric - Must be unique, must start with a character

TYPE Web

Left 0 Numeric

Top 0 Numeric

Width 500 Numeric

Height 200 Numeric

Text URL

Just Not Used

Back Not Used

Color Not Used

Size Not Used

Style Not Used

Min Not Used

Max Not Used

Pos Not Used

Reply 40=40~ID=URL of the Web address navigated to

Page 23: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

UTILITY COMMANDS: ↑

These Commands do NOT create widgets. They are provided for utility purposes

Delete This will Delete a Widget,

PARAM TYPE DEFAULT COMMENT

Type 50 Delete

ID ‘Delete’

Text The ID of the Widget to be deleted from the Page

Reply If OK = 40=40, If Widget does not exists 40=96

Example: Put(‘50=Delete~Text=MyButton’)

Load This will load a Template from the Android Device, and display it on the screen.

PARAM TYPE DEFAULT COMMENT

Type 51 Load

ID ‘Load’

Text TheFileName of the Template stored on the Client

Just 0 0 = Clear, 1 = Overlay

Reply If OK 40=40, If file does not exists 40=96

Example: Put(‘51=Load~Text=Template1.dat’)

Write This will write all the Widgets on the screen onto a Template file

PARAM TYPE DEFAULT COMMENT

Type 52 Write

ID ‘Write’’

Text The Filename that the Template will be written to

Reply If OK 40=40, If FileName already exists 40=96

Example: Put(‘52=Write~Text=NewTemplate.dat’)

Exit This will close the socket, releases the Port, and exits the App.

PARAM TYPE DEFAULT COMMENT

Type Exit

Page 24: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI

Example: Put(‘Exit’)

SETUP ↑

PREREQUISITES (for python):

python 3.x

Tkinter (pip install Tkinter) - Only necessary tor EasyGen.py

keyboard (pip install keyboard) - Only necessary tor EasyGen.py

messagebox (pip install messagebox) - Only necessary tor EasyGen.py

All the necessary files will be contained in EasyGUI.zip.

1 - Unzip EasyGUI.zip into a Folder created for EasyGUI

2 - The following files will be created:Setup.py - This script will record the arrow keysEasyGen.py - The Generator01.gif to 12.gif - Help filesSupportFunctions.py - Helper FunctionsObjectServer.py - The Main ServerCopy.py - Copy utilityAll the Example Python filesAll the JPG files for the ExamplesAll the Template (dat) files for the examples

3 - Copy all the *dat files to your device (Use Copy.py)Copy all the *jpg files to your device (Use Copy.py)

4 - Run Setup.py (python Setup.py)In order to be able to use the arrow keys in EasyGen which seems to bedifferent on some operating systems, the keyboard module need to beinstalled.Setup.py will prompt you to press each of the arrow keys in turn, the results of which willbe stored.

5 - The first time you run EasyGUI (or any time you change the Server’s IP) the followingscreen will be displayed, and you need to type in the last three digits of the Server’s IP(left zero filled) and the Port number (5 digits, left zero filled).Ie: If the Server’s IP is 192.145.23.14 and the Port number is 5200, you should type in:01405200

This information will be written to the Android Device as:mnt/sdcard/download/Address.dat

Page 25: EasyGUIAndroid device of any kind, or an SBC like the 8266 or ESP32 or an Arduino. Template: One or more pages containing EasyGUI widgets. Widget: A Graphical User Interface Item,

EasyGUI