TCP/IP Networking, Part 2: Web-Based Control



Similar documents
TCP/IP Networking: Web-Based Status Monitoring

<option> eggs </option> <option> cheese </option> </select> </p> </form>

Understanding PIC WEB boards and how to use Microchip's TCP-IP Stack. Rev.A, April Copyright(c) 2008, OLIMEX Ltd, All rights reserved

HTML Form Widgets. Review: HTML Forms. Review: CGI Programs

07 Forms. 1 About Forms. 2 The FORM Tag. 1.1 Form Handlers

PHP Form Handling. Prof. Jim Whitehead CMPS 183 Spring 2006 May 3, 2006

FORMS. Introduction. Form Basics

HTML Forms and CONTROLS

Real SQL Programming 1

Further web design: HTML forms

LabVIEW Internet Toolkit User Guide

Livezilla How to Install on Shared Hosting By: Jon Manning

Configuring iplanet 6.0 Web Server For SSL and non-ssl Redirect

Dynamic Web-Enabled Data Collection

The Basics of Dynamic SAS/IntrNet Applications Roderick A. Rose, Jordan Institute for Families, School of Social Work, UNC-Chapel Hill

Implementation of Embedded Web server using TEA algorithm

By Glenn Fleishman. WebSpy. Form and function

Shasta College SharePoint Tutorial. Create an HTML Form

InPost UK Limited GeoWidget Integration Guide Version 1.1

Introducing the BIG-IP and SharePoint Portal Server 2003 configuration

Perceptive Intelligent Capture Solution Configration Manager

Novell Identity Manager

Spam Marshall SpamWall Step-by-Step Installation Guide for Exchange 5.5

Internet Technologies

2- Forms and JavaScript Course: Developing web- based applica<ons

Inserting the Form Field In Dreamweaver 4, open a new or existing page. From the Insert menu choose Form.

OCS Training Workshop LAB13. Ethernet FTP and HTTP servers

Chapter 6 Virtual Private Networking Using SSL Connections

CGI Programming. What is CGI?

JAVASCRIPT AND COOKIES

DiskPulse DISK CHANGE MONITOR

T320 E-business technologies: foundations and practice

Debugging Network Communications. 1 Check the Network Cabling

IBM TCP/IP Network Port Monitor

Advanced Web Development SCOPE OF WEB DEVELOPMENT INDUSTRY

Chapter 4: Website Basics

Visual Basic Programming. An Introduction

GE Intelligent Platforms. Activating Licenses Online Using a Local License Server

Training module 2 Installing VMware View

7 Why Use Perl for CGI?

µtasker Document FTP Client

HPCC Data Handling. Boca Raton Documentation Team

NJCU WEBSITE TRAINING MANUAL

Chapter 5 Configuring the Remote Access Web Portal

Getting Started Guide with WIZ550web

Practice Fusion API Client Installation Guide for Windows

TUTORIAL FOR INITIALIZING BLUETOOTH COMMUNICATION BETWEEN ANDROID AND ARDUINO

HOW TO CREATE AN HTML5 JEOPARDY- STYLE GAME IN CAPTIVATE

Computer Networking LAB 2 HTTP

Designing and Implementing Forms 34

An Introduction to MPLAB Integrated Development Environment

Install MS SQL Server 2012 Express Edition

Response Time Analysis of Web Templates

CentreWare Internet Services Setup and User Guide. Version 2.0

Configuring Color Access on the WorkCentre 7120 Using Microsoft Active Directory Customer Tip

GSM. Quectel Cellular Engine. HTTP Service AT Commands GSM_HTTP_ATC_V1.2

Chapter 14: Links. Types of Links. 1 Chapter 14: Links

USING THE XPERT2 / 9210B ON A TCP/IP NETWORK

Forms, CGI Objectives. HTML forms. Form example. Form example...

Web Server Lite. Web Server Software User s Manual

Lecture 2-ter. 2. A communication example Managing a HTTP v1.0 connection. G.Bianchi, G.Neglia, V.Mancuso

Introduction. How does FTP work?

RN-131-PICTAIL & RN-171-PICTAIL Web-Server Demo Application

Finding XSS in Real World

How to Create and Send a Froogle Data Feed

Customer Tips. Configuring Color Access on the WorkCentre 7328/7335/7345 using Windows Active Directory. for the user. Overview

How do I Configure my bmail Account on Outlook 2013 Using the Google Apps Sync Tool?

WordPress & RSS: What You Need to Know

INTRODUCTION TO ATRIUM... 2 SYSTEM REQUIREMENTS... 2 TECHNICAL DETAILS... 2 LOGGING INTO ATRIUM... 3 SETTINGS... 4 NAVIGATION PANEL...

MFPConnect Monitoring. Monitoring with IPCheck Server Monitor. Integration Manual Version Edition 1

IBM BPM V8.5 Standard Consistent Document Managment

InternetVista Web scenario documentation

E-Blocks Easy Internet Bundle

Advanced Tornado TWENTYONE Advanced Tornado Accessing MySQL from Python LAB

Contents. 2 Alfresco API Version 1.0

Working with forms in PHP

OCS Training Workshop LAB14. Setup

Website Development Komodo Editor and HTML Intro

Team Foundation Server 2013 Installation Guide

Introduction to Network Security Lab 1 - Wireshark

R i o L i n x s u p p o r r i o l i n x. c o m 1 / 3 0 /

Packet Capture. Document Scope. SonicOS Enhanced Packet Capture

understand how image maps can enhance a design and make a site more interactive know how to create an image map easily with Dreamweaver

Search Engine Optimization Checklist

XHTML Forms. Form syntax. Selection widgets. Submission method. Submission action. Radio buttons

1.264 Lecture 19 Web database: Forms and controls

RMCS Installation Guide

Presentation Reporting Quick Start

Modern snoop lab lite version

Bitrix Site Manager ASP.NET. Installation Guide

How To Set Up A Xerox Econcierge Powered By Xerx Account

Beginning Web Development with Node.js

2- Electronic Mail (SMTP), File Transfer (FTP), & Remote Logging (TELNET)

Sitecore Ecommerce Enterprise Edition Installation Guide Installation guide for administrators and developers

WIRIS quizzes web services Getting started with PHP and Java

October, Install/Uninstall Xerox Print Drivers & Apps Best Practices for Windows 8, 8.1, and 10 Customer Tip

Installing and Configuring Microsoft Dynamics Outlook Plugin to Use with ipipeline MS CRM

Wireshark Lab: HTTP. 1. The Basic HTTP GET/response interaction

Learning Remote Control Framework ADD-ON for LabVIEW

Transcription:

TCP/IP Networking, Part 2: Web-Based Control Microchip TCP/IP Stack HTTP2 Module 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 1 Welcome to the next web seminar in Microchip s series on embedded web applications. We ll be discussing the HTTP2 web server module included with Microchip s free TCP/IP Stack, and more specifically, how you can use web-based control to accept input to your embedded application. My name is Elliott Wood, and I m an Applications Engineer at Microchip s headquarters in Chandler, AZ. I am one of the main developers of Microchip s TCP/IP Stack, and I ll be explaining how to build a simple web-based control system for an embedded product. 1

Project Overview Web Enabled Vending Machine Online Features: Control machine lights www.microchip.com/tcpip Scope: Vending machine and web pages are written Just need to add the HTTP2 callbacks 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 2 In the previous seminar, we added web-based monitoring capabilities to a simple vending machine. If you haven t watched that seminar, you may want to do so before continuing. This presentation will assume a basic understanding of the HTTP2 web server module, and how to use dynamic variables. Today we will extend that application. When we re done, you ll be able to control our vending machine s lights online from a simple form. If you re just viewing out of curiosity or to see what s possible, all you need is a general understanding of embedded design. If you want to follow along with the examples, you will need to have downloaded and installed the full TCP/IP Stack distribution from the web page shown on the slide. You should have also at least completed the Getting Started section in the TCPIP User s Guide, and know how to use the MPFS2 utility. We will be using the TCPIP WebVend App project that is installed with the TCP/IP Stack. Just as in the last seminar, we will assume that a web developer has already designed a simple web page for us. We will start with the working vending machine application from the last session, plus this additional web page. Our task will be to add the required hooks between the form in this new web page, and our embedded application. If you re following along, you should copy the base WebPages2 folder and CustomHTTPApp.c source file from the 02 Control with GET directory inside the Labs folder. 2

Agenda Web Forms Overview Processing GET Method Forms Demonstration 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 3 We will start with a very brief overview of web forms, and how to read them in HTML code. Since most people are unfamiliar with the difference between the GET and POST methods, this will also include a brief comparison of the two. We will then describe how to process data submitted from web forms using the GET method. At the end, we ll see a demonstration of this capability. Let s get started. 3

Web Forms Overview 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 4 [no narrative] 4

Web Forms Overview Accept input through web pages Control system outputs and data online 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 5 Web forms allow the web server module to accept data from users through a network. This data can then be used to control system memory or outputs. In the simplified example on the slide, the microcontroller accepts the command of On from the web page and responds by turning the light bulb on. 5

Web Forms Components Designed in HTML Contained within <form> tags Consists of one or more fields Denoted by <input name=... > tags Submitted as name/value pairs lights=on&brightness=50 Non-alphanumeric chars are hex-encoded 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 6 Web forms, like the rest of any web page, are designed in HTML. They are recognizable as the sections contained within <form> tags. Within the <form> tags, there is a series of <input> tags. Each input tag represent some user-interface element (such as a text field, checkbox, or a button). It is assigned a name parameter, which controls the name of the field when it gets returned to the browser. When variables are submitted to the server, they are encoded as a series of name/value pairs. Each field is separated by an ampersand symbol (&) and names are separated from values with an equal sign (=). Non-alphanumeric characters, if present, are escaped by a percent sign (%) and then followed by two characters representing the ASCII value in hexadecimal. Numerous websites explain how to create web forms, but that is outside the scope of this presentation. If you re interested in more information, search for HTML forms on your favorite search engine. 6

Form Methods <form method= get...> GET Data appended to URL Length limited to ~100 bytes Easiest to process <form method= post...> POST Data sent as request body Length is unlimited More difficult to process 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 7 Each form tag has a parameter called the method. This parameter is set to either get or post, which controls how the data is submitted to the server. There s a technical history behind this two, but embedded devices have different needs so this historical differentiation is mostly irrelevant. The GET method appends the data to the URL and arrives before the headers. In the Microchip platform, this data is easiest to process because it is stored in memory all at once. However, the length of all names, values, and delimiting characters is limited to the size of the available buffer generally 100 bytes. The POST method sends the data as the body of the request, following the headers. On the Microchip platform, this data is more difficult to process because the application assumes responsibility for the TCP buffer. However, this additional complexity allows unlimited amounts of data to be received. This webinar focuses only on the GET method. The POST method is described in the next seminar in this series. 7

The GET Method 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 8 Let s take a closer look at the GET method. 8

The GET Method Data appended to URL /form.htm?lights=on&brightness=50 Easiest to process All input in curhttp.data Automatically decoded Limited to available buffer ~100 bytes max input Handled in HTTPExecuteGet() callback 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 9 As mentioned, the GET method appends all submitted data to the URL. The data string follows a question mark in the URL requested by the client. In the example on the slide, the field lights is set to a value of on, and the field brightness is set to 50. As mentioned, in Microchip s HTTP2 web server module, data submitted in this fashion is easiest to process. All data submitted via GET is automatically decoded and placed in the curhttp.data byte array all at once. Since it is in memory, searching for parameters is simple and efficient. The drawback of course, is that memory is limited, so data submitted in this manner must fit completely in the 100 bytes allocated to each HTTP data buffer. The HTTPExecuteGet() callback function is called when data is submitted using this method. Like the dynamic variable callbacks, this function is also userimplemented and is defined in CustomHTTPApp.c. 9

GET Method Example 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 10 Let s start with an example. 10

GET Method Example 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 11 If we take a look at the Lights page, we see a set of radio buttons intended to let us control whether the vending machine s lights are on or off. On our development board, we d like this setting to control several of the LEDs. When this form is loaded, we d also like the current state to be pre-selected. 11

GOALS: Turn lights on or off from web page GET Method Example SOLUTION: Process input in HTTPExecuteGet() Determine new light state 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 12 To accomplish this, we need to modify our HTTPExecuteGet() function to accept this input parameter. Since we re only sending an on or off command, it should be safe to assume that our input will fit in the allocated 100 bytes. The GET method will be appropriate for this situation. 12

GET Example: machine.htm <!-- On/Off radio selectors --> <input type="radio" name="lights" value="on" ~lights_chk(1)~ /> On <input type="radio" name="lights" value="off" ~lights_chk(0)~ /> Off <!-- Form submission button --> <input type="submit" class= btn value="set"/> 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 13 We will start by taking a look at the source code to lights.htm. Scan for the <form> tags, then locate the <input> tags that describe these fields. They should look something like the tags on the slide. Remember that the name parameter controls the name of the field when it gets submitted to the application. This is highlighted in blue, and will be important when we write our callback function. You ll also notice a dynamic variable, highlighted in red, placed inside each tag. These dynamic variables control which of the two settings are selected by default when the form loads. Since the last seminar explained dynamic variables in detail, they have already been written and will not be described here. The final <input> tag creates the button to submit the form. Since it has no name parameter, it will not be sent with the form data. 13

GET Example: Callback Handled in HTTPExecuteGet() Data stored in curhttp.data Locate values with: HTTPGetArg() HTTPGetROMArg() Process input values Perform necessary actions 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 14 Our web page is ready to go, so let s write our callback function. As mentioned before, data submitted via GET is handled in the HTTPExecuteGet() callback function. Data received is stored in the curhttp.data byte array. The server decodes it automatically into a series of null-terminated string pairs. This format allows the provided HTTPGetArg() functions to quickly locate values associated with names. The basic form of an HTTPExecuteGet() function is to search for input values and perform the necessary actions once these values are found. Let s look at an example. 14

HTTPExecuteGet() HTTP_IO_RESULT HTTPExecuteGet(void) { BYTE *ptr, i, name[20]; // Load the file name MPFSGetFilename(curHTTP.file, name, 20); // Make sure it s the machine.htm page if(strcmppgm2ram((char*)name, (ROM char*)"lights.htm")!= 0) return HTTP_IO_DONE; 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 15 The first step in our callback function is to check the file name. We can use the MPFSGetFilename() function to look up the name of the file requested. For applications with multiple forms, simple logic can be added here to handle data from different forms. For our case, we only have a single form on the lights.htm page, so if that s not the page we re working with then we should ignore the input and indicate that we ve finished. 15

HTTPExecuteGet() // Find the new light state value ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"lights"); if(ptr) // Make sure ptr is not NULL {// Set the new lights state if(strcmppgm2ram((char*)ptr, (ROM char*)"on") == 0) VendSetLights(TRUE); else VendSetLights(FALSE); } 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 16 The next step is to search for the data field. We only have one field, but fields may not always arrive in the same order, so this process is identical for forms with multiple inputs. First we search for the field called lights. If it is found, ptr will point to the value associated with that name. We then compare this value with another string. If they match we set the lights on, otherwise we turn them off. 16

HTTPExecuteGet() } // Indicate that we re finished return HTTP_IO_DONE; 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 17 That s all we need to do in order to turn on the lights. The last step is to return HTTP_IO_DONE to indicate that our callback is complete and should not be called again. It is worth noting that you could return HTTP_IO_WAITING at this point. When that flag is sent, the server will return control to the main loop and will invoke your callback again at a later point before it continues with this request. This is useful if you wanted to wait for some asynchronous process to complete before continuing, but is outside the scope of this presentation. 17

GET Method Demonstration 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 18 Now that our implementation is complete, let s try it out. I ll start by accessing the device from my web browser. If I navigate to the Lights page, you ll see the form and notice that the lights are currently indicated to be off. If I choose the On selector and click Set, the form will submit this value to the device and the LEDs will illuminate. I can now navigate back to the Status page from the previous seminar. When I return to the Lights form, the On indicator is already selected. If I choose off and click Set again, the LEDs on my development board will turn off. It looks like this portion is working, so our job is complete! 18

GET Method Summary Easy to process All data is in memory Automatically decoded Limited to available buffer ~100 bytes max input Handled in HTTPExecuteGet() callback HTTPGetArg() & HTTPGetROMArg() 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 19 You ve just learned how to process data submitted via the GET method. This method is simplest because all the data is in memory at once, and it is automatically decoded. However, it is only appropriate for inputs totaling less than 100 bytes. Forms submitted via GET are handled in the HTTPExecuteGet() callback. HTTPGetArg() and its associated HTTPGetROMArg() function are the provided as an easy way to parse this data and find desired values. 19

Conclusion Use forms to add web-based control Full status and control available online Second of several TCP/IP seminars POST Forms, Authentication, E-mail, & more Please provide feedback! 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 20 The tools presented today should provide everything needed to add web-based control to your own application. You can now build a complete online status and control system for any embedded device! As mentioned at the beginning, this is one of several TCP/IP seminars. The next session will explain how to receive larger amounts of data using the POST method. Additional seminars are also being developed to explain how to add authentication, send e-mails, build a data logger, and explain a variety of network-related topics. Before you go, please remember to provide feedback using the link on this seminar s web page. Comments both good and bad will be appreciated so we can better tailor future seminars to your needs. 20

For More Information TCPIP Stack User s Guide Installed with the TCP/IP Stack Accessible via Start menu TCPIP Demo App WebPages2 CustomHTTPApp.c www.microchip.com/tcpip 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 21 For more information on the topics presented here, please refer to the TCPIP Stack User s Guide. This file is installed with the TCP/IP Stack, and can be accessed via the Start menu. More examples and labs are available within the TCPIP Demo App that is installed with the stack. The demo application has its own WebPages2 folder and CustomHTTPApp.c source file that explain in more detail how everything works. Finally, our online TCPIP and Ethernet design center has many more resources to get started with your own project. Thanks for watching! 21