'***************************************************************** '* Name : xport_hello.pbp * '* Author : Patrick Dwyer * '* Notice : Copyright (c) 2006 * '* : Licensed under GPL * '* : http://www.opensource.org/licenses/gpl-license.php * '* Date : 2/14/2006 * '* Version : 1.0 * '* Notes : * '* : * '***************************************************************** ' We are using a 20Mhz oscillator DEFINE OSC 20 DEFINE ADC_BITS 10 DEFINE ADC_CLOCK 3 DEFINE ADC_SAMPLEUS 50 potPin VAR PORTA.0 TRISA = 255 ADCON1 = %10000010 outByte VAR BYTE outByte = 0 potVal VAR WORD potVal = 0 ' We communicate with the XPort using 9600 8N1 serial true9600 con 84 ' Our serial communication pins tx var PORTC.6 rx var PORTC.7 ' Our blinking pin for status messages statusPin var PORTC.4 OUTPUT statusPin ' Used to read response from the XPort inByte var byte ' Track whether or not we are connected to the remote server connected var bit connected = 0 ' Turn on our LED so we know that the startup sequence is going high statusPin ' Wait for the XPort to boot up pause 5000 ' Turn off the status LED while operating LOW statusPin ' Just so we know that we're ready, we'll quickly blink the status LED counter var byte counter = 0 while counter < 4 high statusPin pause 100 low statusPin pause 100 counter = counter + 1 wend ' In our main loop we need to accomplish the following: ' 1. Connect to the remote server ' 2. Send data to the remote server ' 3. Pause so we don't continually send data ' We use the xport_connect method to establish our connection, ' and the http_request method to send our data to a remote script main: ADCIN potPin, potVal outByte = potVal / 4 if connected = 1 then ' If we're already connected then we can send our message gosub http_request ' back off the server for a few seconds pause 1000 else ' try and connect gosub xport_connect endif goto main xport_connect: ' Send our connection string to the XPort. This string contains ' the remote IP and the remote port. In this case we're connecting ' to itp.nyu.edu on port 80 (HTTP) serout2 tx, true9600, ["C128.122.253.189/80", 10] ' now we're connected connected = 1 return http_request: ' light LED to indicate HTTP GET request in progress: high statusPin ' To send data to the server we need to create a valid HTTP request ' header. All of the data we transmit here will go to the remote ' server. ' The first line tells the server that we want to get a certain ' page, and includes the url parameters that we want to pass to ' our script. ' The second line tells the remote server what format the header ' we're sending is in. ' The third line tells the server that the domain we want to be ' talking too is digilutionary.com ' The next line identifies what type of device is requesting data. ' Finally we send two newline characters, which tells the server that ' our request header is finished, at which point it runs our remote script SEROUT2 TX, true9600, ["GET /~jh1725/cgi-bin/write.py?user=jeff&msg=",DEC outByte] serout2 tx, true9600, [" HTTP/1.1", 10] SEROUT2 tx, true9600, ["HOST: itp.nyu.edu", 10] SEROUT2 tx, true9600, ["User-Agent: Mozilla/4.0(compatible;MSIE 5.23;Mac_PowerPC)"] serout2 tx, true9600, [10, 10] ' wait for bytes from server: ' Our server sends a 0 to finish while inByte <> 0 serin2 rx, true9600, [inByte] wend ' now we're disconnected: connected = 0 ' turn off LED, since GET request is complete: low statusPin return