Internet

Atomic Remote I/O

Kees van Oss

Inleiding:

In de reeks artikelen over ethernet, heb ik beschreven hoe men de Atom geschikt kan maken om in een netwerk te functioneren. Ik heb reeds een webserver werkende maar ben nog steeds doende om de software en drivers universeel te maken. Tijdens de ontwikkeling van de webserver kwam er een idee in me op wat vrij eenvoudig toegepast kan worden, Remote I/O. Het geheel werkt nog niet maar van het principe wil ik alvast een tipje van de sluier oplichten.

Principe:

Wat is de bedoeling? Ik heb ergens in mijn netwerk een Atom staan waarop een webserver draait. Nu wil ik op een willekeurige PC in het netwerk (of internet) via Internet Explorer een aantal bitjes van een I/O poort van de Atom '0' of '1' maken. Ik wil dus op afstand mijn Atom I/O laten verrichten.

remote-io-1.gif

1)Vraag met Internet Explorer de pagina IO.HTM op,
2)De Atomic webserver stuurt de pagina IO.HTM terug,

remote-io-2.jpg

3)Vul het I/O adres in en welke bitjes op '1' gezet moeten worden en druk dan op de 'Verstuur'-knop,
4)Internet Explorer vraagt weer de pagina IO.HTM op maarnu met een aantal parameters: io.htm?adres=B800&b0=1&b3=1&b4=1&b5=1

remote-io-3.jpg

De Atomic webserver ziet de parameters en stuurt van #B800 de bits 0,3,4,5 aan.

Formulieren:

De truuk is het gebruik van een formulier in de IO.HTM pagina. Een formulier bevat een aantal objecten met een unieke naam en er kan een actie aan toegekent worden zoals de aanroep van dezelfde pagina, een aanroep van een andere pagina of mailen. Wanneer in het formulier dan op een 'Submit'-knop gedrukt wordt, wordt de actie uitgevoerd en alle gewijzigde objecten met naam worden als parameter meegestuurd. In de IO.HTM pagina worden volgende objecten in het formulier geplaatst:

  • Tekstveld (adres), waarin het I/O adres van de Atom ingevuld kan worden,
  • Aankruisvak (b0), om Bit 0 van dit adres '1' te maken,
  • Aankruisvak (b1), om Bit 1 van dit adres '1' te maken,
  • Aankruisvak (b2), om Bit 2 van dit adres '1' te maken,
  • Aankruisvak (b3), om Bit 3 van dit adres '1' te maken,
  • Aankruisvak (b4), om Bit 4 van dit adres '1' te maken,
  • Aankruisvak (b5), om Bit 5 van dit adres '1' te maken,
  • Aankruisvak (b6), om Bit 6 van dit adres '1' te maken,
  • Aankruisvak (b7), om Bit 7 van dit adres '1' te maken,
  • Verstuur knop (Submit), om ingevoerde data als parameters te versturen.

Atomic webserver:

De Atomic webserver moet dus de parameters uit kunnen lezen welke bij de aanvraag van de IO.HTM pagina meegestuurd worden. Na IO.HTM staat een vraagteken wat betekent dat vanaf hier de parameters beginnen. Daarna volgt de naam van de variabele, een is-gelijk teken en de waarde van die variabele. De parameters onderling worden gescheiden met een '&' teken.

In mijn bestaande webserver moet dus een extra parameter-uitlees routine geplaatst worden. Dit is op zich niet zo veel werk omdat er aan de functionaliteit van de webserver niets verandert.

Toekomst:

In dit voorbeeld heb ik alleen maar Output gedaan en geen Input. Het is ook mogelijk om dezelfde parameter routine te gebruiken om een byte uit te lezen. Het enigste verschil met het Output gedeele is dat nu de HTML pagina aangepast moet worden voordat hij naar de PC teruggestuurd wordt. Theoretisch ook niet echt complex maar al met al vraagt dit toch nog wel wat tijd om goed te implementeren. Je moet namelijk ook een parameter meegeven om aan te geven of het om input dan wel output gaat.

Tot zo ver weer een verhaal over de Atom met ethernet.