Appendix 7:  VB and PHP Code

 

The following is the user interface on the PC side that displays the returned values from the internet database:

 

 

 

VB Code

 

Imports System

Imports System.IO

 

Public Class Form1

    Dim rcvString As String = "KITH"

    Dim phpExe As String = "c:\apachefriends\xampp\php\php.exe"

    Dim phpScriptDir As String = "c:\apachefriends\xampp\htdocs\"

    Dim phpScriptFile As String = "weatherdog.php"

    Dim tempDir As String = "c:\apachefriends\xampp\htdocs\"

    Dim tempFile As String = "weather.txt"

 

    Dim date_time As String

    Dim temperature As String

    Dim humidity As String

    Dim wind As String

    Dim visibility As String

 

 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        SerialPort1.PortName = "COM1"

        SerialPort1.BaudRate = 9600

        SerialPort1.NewLine = vbNewLine

        SerialPort1.Open()

    End Sub

 

    Private Sub SerialPort1_ReceivedEvent(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialReceivedEventArgs) Handles SerialPort1.ReceivedEvent

        If (SerialPort1.BytesToRead > 1) Then

            rcvString = SerialPort1.ReadLine()

            rcvString = Mid(rcvString, InStr(rcvString, "<") + 1, rcvString.Length - (1 + InStr(rcvString, "<")))

            TextBox1.Text = rcvString.ToUpper

 

            If (File.Exists(tempDir & tempFile)) Then File.Delete(tempDir & tempFile)

 

            Shell(phpExe & " " & phpScriptDir & phpScriptFile & " " & Chr(34) & tempDir & tempFile & Chr(34) & " " & Chr(34) & rcvString.ToUpper & Chr(34))

 

            While (Not File.Exists(tempDir & tempFile))

            End While

 

            System.Threading.Thread.Sleep(1000)

 

            Dim weatherFile As FileStream = File.Open(tempDir & tempFile, FileMode.Open)

            Dim fileStream As StreamReader = New StreamReader(weatherFile)

 

            date_time = fileStream.ReadLine()

            temperature = fileStream.ReadLine()

            humidity = fileStream.ReadLine()

            wind = fileStream.ReadLine()

            visibility = fileStream.ReadLine()

 

            If (date_time <> "") Then

                date_time = date_time.Replace("/", ".")

                SerialPort1.WriteLine(date_time & "GMT")

                System.Threading.Thread.Sleep(2000)

                SerialPort1.WriteLine(temperature)

                System.Threading.Thread.Sleep(500)

                SerialPort1.WriteLine(humidity)

                System.Threading.Thread.Sleep(500)

                SerialPort1.WriteLine(wind)

                System.Threading.Thread.Sleep(500)

                SerialPort1.WriteLine(visibility)

 

            Else

                SerialPort1.WriteLine("                   ")

                System.Threading.Thread.Sleep(2000)

                SerialPort1.WriteLine("NA")

                System.Threading.Thread.Sleep(500)

                SerialPort1.WriteLine("NA")

                System.Threading.Thread.Sleep(500)

                SerialPort1.WriteLine("NA")

                System.Threading.Thread.Sleep(500)

                SerialPort1.WriteLine("NA")

 

            End If

 

 

            fileStream.Close()

            weatherFile.Close()

 

            TextBox2.AppendText("Location: " & TextBox1.Text.ToUpper & vbNewLine)

            TextBox2.AppendText(date_time & " GMT" & vbNewLine)

            TextBox2.AppendText("Temperature: " & temperature & " F" & vbNewLine)

            TextBox2.AppendText("Humidity: " & humidity & " %" & vbNewLine)

            TextBox2.AppendText("Wind: " & wind & " mph" & vbNewLine)

            TextBox2.AppendText("Visibility: " & visibility & " miles" & vbNewLine & vbNewLine)

 

            File.Delete(tempDir & tempFile)

        End If

    End Sub

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

        If (File.Exists(tempDir & tempFile)) Then File.Delete(tempDir & tempFile)

 

        Shell(phpExe & " " & phpScriptDir & phpScriptFile & " " & Chr(34) & tempDir & tempFile & Chr(34) & " " & Chr(34) & TextBox1.Text.ToUpper & Chr(34))

 

        While (Not File.Exists(tempDir & tempFile))

        End While

 

        System.Threading.Thread.Sleep(1000)

 

        Dim weatherFile As FileStream = File.Open(tempDir & tempFile, FileMode.Open)

        Dim fileStream As StreamReader = New StreamReader(weatherFile)

 

        date_time = fileStream.ReadLine()

        temperature = fileStream.ReadLine()

        humidity = fileStream.ReadLine()

        wind = fileStream.ReadLine()

        visibility = fileStream.ReadLine()

 

        TextBox2.AppendText("Location: " & TextBox1.Text.ToUpper & vbNewLine)

        TextBox2.AppendText(date_time & " GMT" & vbNewLine)

        TextBox2.AppendText("Temperature: " & temperature & " F" & vbNewLine)

        TextBox2.AppendText("Humidity: " & humidity & " %" & vbNewLine)

        TextBox2.AppendText("Wind: " & wind & " mph" & vbNewLine)

        TextBox2.AppendText("Visibility: " & visibility & " miles" & vbNewLine & vbNewLine)

 

        fileStream.Close()

        weatherFile.Close()

 

        File.Delete(tempDir & tempFile)

 

    End Sub

End Class

 

 

PHP Code

 

<?php

//include class file

include('Services/Weather.php');

 

// instantiate object for METAR decoding

$metar = &Services_Weather::service("METAR", array("debug" => 0));

if (Services_Weather::isError($metar)) {

    die("Error: ".$metar->getMessage()."\n"); }

 

 

$metar->setDateTimeFormat("d.m.Y", "H:i");

 

// set location identifier$

$location = $argv[2];

 

// construct URL to NOAA METAR site using location identifier

$url = "ftp://weather.noaa.gov/data/observations/metar/stations/" .

$location . ".TXT";

 

// retrieve and parse METAR

$data = $metar->_parseWeatherData($url);

 

$units = $metar->getUnitsFormat();

 

// display parsed data

print_r($data);

 

$data_file = $argv[1];

$f=fopen($data_file,"w");

 

fwrite($f, $data[updateRaw]);

fwrite($f, "\r\n" . $data['temperature']);

fwrite($f, "\r\n" . $data['humidity']);

fwrite($f, "\r\n" . $data['wind']);

fwrite($f, "\r\n" . $data['visibility']);

 

fclose($f);

?>