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);
?>