POC-メテオ
POC-メテオを使ってデータロガー付き天気ステーションを作りましょう。
データロガーをPOC-メテオと統合し、以前ご紹介したUSB天気測定を改良したバージョンのご紹介です。
前回の用例で問題だったのはコンピュータが電源オフまたは再起動中にデータが取れないことでした。実際、Windowsのアップデートは頻繁に行われているためこれは大きな問題です。データレコーディングをコンピュータからモジュール自体に移譲することでこの問題を解決します。
long utc = stream.get_startTimeUTC();
DateTime tstart = new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(utc);
Stopwatch sw = new Stopwatch();
DateTime tend = tstart.AddSeconds(stream.get_rowCount() * stream.get_dataSamplesInterval());
List<String> names = stream.get_columnNames();
int increment = 1;
if (stream.get_dataSamplesInterval() == 1)
{
// we take only one mesure per minute
increment = 60;
}
for (int row = 0; row < stream.get_rowCount(); row += increment)
{
long nbsec = unixtime + row * stream.get_dataSamplesInterval();
DateTime t = new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(nbsec);
TimeSpan delta = DateTime.Now - t;
if (delta.TotalDays > 2)
{
continue;
}
DataRow rowData = table.NewRow();
rowData["Time"] = t;
for (int c = 0; c < stream.get_columnCount(); c++)
{
switch (names[c])
{
case "temperature":
rowData["Temperature"] = stream.get_data(row, c);
break;
case "pressure":
rowData["Pressure"] = stream.get_data(row, c);
break;
case "humidity":
rowData["Humidity"] = stream.get_data(row, c);
break;
default:
continue;
}
}
table.Rows.Add(rowData);
}
}