193 lines
7.3 KiB
C#
193 lines
7.3 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Net.Sockets;
|
|||
|
|
using System.Net;
|
|||
|
|
using System.Windows.Forms;
|
|||
|
|
using System.Net.NetworkInformation;
|
|||
|
|
using System.Text.RegularExpressions;
|
|||
|
|
using System.IO;
|
|||
|
|
|
|||
|
|
namespace Nanji_Island
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
class tool
|
|||
|
|
{
|
|||
|
|
public static double[] data_send;
|
|||
|
|
|
|||
|
|
/***********************EXO2 多参数传感器解析*******************************/
|
|||
|
|
public static double[] Multi_parameter_EXO2(string data_rec)
|
|||
|
|
{
|
|||
|
|
//定义长度为13的数组,顺序为温度、电导率、盐度、浊度、总固体悬浮物、溶解氧百分比、溶解氧、叶绿素、红藻类、ph、刷子位置、压力、浊度
|
|||
|
|
data_send = new double[13];
|
|||
|
|
string[] rec = null;
|
|||
|
|
rec = data_rec.Split(' ');
|
|||
|
|
int n = rec.Length;
|
|||
|
|
|
|||
|
|
if (rec.Length == 18)
|
|||
|
|
{
|
|||
|
|
data_send[0] = double.Parse(rec[3]);
|
|||
|
|
data_send[1] = double.Parse(rec[4]);
|
|||
|
|
data_send[2] = double.Parse(rec[5]);
|
|||
|
|
data_send[3] = double.Parse(rec[6]);
|
|||
|
|
data_send[4] = double.Parse(rec[7]);
|
|||
|
|
data_send[5] = double.Parse(rec[8]);
|
|||
|
|
data_send[6] = double.Parse(rec[9]);
|
|||
|
|
data_send[7] = double.Parse(rec[10]);
|
|||
|
|
data_send[8] = double.Parse(rec[11]);
|
|||
|
|
data_send[9] = double.Parse(rec[12]);
|
|||
|
|
data_send[10] = double.Parse(rec[13]);
|
|||
|
|
data_send[11] = double.Parse(rec[14]);
|
|||
|
|
data_send[12] = double.Parse(rec[15]);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
return data_send;
|
|||
|
|
}
|
|||
|
|
/***********************EXO2 多参数传感器解析*******************************/
|
|||
|
|
|
|||
|
|
/***********************WXT536 气象传感器解析*******************************/
|
|||
|
|
public static double[] Weather_WXT536(string data_rec)
|
|||
|
|
{
|
|||
|
|
//定义长度为6数组,顺序为气温、湿度、风速、风向、气压、雨量
|
|||
|
|
double[] data_send = new double[6];
|
|||
|
|
string[] rec = null;
|
|||
|
|
rec = data_rec.Split(',');
|
|||
|
|
for (int i = 0; i < rec.Length; i++)
|
|||
|
|
{
|
|||
|
|
string a = rec[i].Substring(0, 2);
|
|||
|
|
if (a.Equals("Dm"))//平均风向
|
|||
|
|
{
|
|||
|
|
//使用正则表达式提取字符串中的数
|
|||
|
|
data_send[3] = double.Parse(Regex.Replace(a, @"[^0-9,.]+", ""));
|
|||
|
|
}
|
|||
|
|
else if (a.Equals("Sm"))//平均风速
|
|||
|
|
{
|
|||
|
|
data_send[2] = double.Parse(Regex.Replace(a, @"[^0-9,.]+", ""));
|
|||
|
|
}
|
|||
|
|
else if (a.Equals("Ta"))//气温
|
|||
|
|
{
|
|||
|
|
data_send[0] = double.Parse(Regex.Replace(a, @"[^0-9,.]+", ""));
|
|||
|
|
}
|
|||
|
|
else if (a.Equals("Ua"))//湿度
|
|||
|
|
{
|
|||
|
|
data_send[1] = double.Parse(Regex.Replace(a, @"[^0-9,.]+", ""));
|
|||
|
|
}
|
|||
|
|
else if (a.Equals("Pa"))//气压
|
|||
|
|
{
|
|||
|
|
data_send[4] = double.Parse(Regex.Replace(a, @"[^0-9,.]+", ""));
|
|||
|
|
}
|
|||
|
|
else if (a.Equals("Rc"))//雨量
|
|||
|
|
{
|
|||
|
|
data_send[5] = double.Parse(Regex.Replace(a, @"[^0-9,.]+", ""));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return data_send;
|
|||
|
|
}
|
|||
|
|
/***********************气象传感器解析*******************************/
|
|||
|
|
|
|||
|
|
/***********************GPS传感器解析*******************************/
|
|||
|
|
public static double[] GPS(string data_rec)
|
|||
|
|
{
|
|||
|
|
//定义长度为2数组,顺序为纬度、经度
|
|||
|
|
double[] data_send = new double[2];
|
|||
|
|
string[] rec = null;
|
|||
|
|
rec = data_rec.Split(',');
|
|||
|
|
data_send[0] = double.Parse(rec[3])/100;
|
|||
|
|
data_send[1] = double.Parse(rec[5])/100;
|
|||
|
|
return data_send;
|
|||
|
|
}
|
|||
|
|
/***********************GPS传感器解析*******************************/
|
|||
|
|
|
|||
|
|
/***********************校验和*******************************/
|
|||
|
|
public static bool check_sum(string sum,string data)
|
|||
|
|
{
|
|||
|
|
if (data.Length == Convert.ToInt32(sum))
|
|||
|
|
{
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
else { return true; }//暂时不校验--(勇说
|
|||
|
|
}
|
|||
|
|
/***********************校验和*******************************/
|
|||
|
|
|
|||
|
|
/***********************获取当前主机IP*******************************/
|
|||
|
|
public static string GetLocalIP()
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
//获得当前主机名称
|
|||
|
|
string HostName = Dns.GetHostName();
|
|||
|
|
IPHostEntry IpEntry = Dns.GetHostEntry(HostName);
|
|||
|
|
for (int i = 0; i < IpEntry.AddressList.Length; i++)
|
|||
|
|
{
|
|||
|
|
//从ip地址列表中筛选出IPv4类型的IP地址
|
|||
|
|
//AddressFamily.InterNetWork表示此IP为IPv4
|
|||
|
|
//AddressFamily.InterNetWorkV6表示此地址为IPv6类型
|
|||
|
|
if (IpEntry.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
|
|||
|
|
{
|
|||
|
|
return IpEntry.AddressList[i].ToString();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return "";
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
MessageBox.Show("获取本机IP出错:" + ex.Message);
|
|||
|
|
return "";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/***********************获取当前主机IP*******************************/
|
|||
|
|
|
|||
|
|
/***********************是否ping通*******************************/
|
|||
|
|
public static bool PingIp(string strIP)
|
|||
|
|
{
|
|||
|
|
bool bRet = false;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
Ping pingSend = new Ping();
|
|||
|
|
PingReply reply = pingSend.Send(strIP, 1000);
|
|||
|
|
if (reply.Status == IPStatus.Success)
|
|||
|
|
bRet = true;
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
bRet = false;
|
|||
|
|
}
|
|||
|
|
return bRet;
|
|||
|
|
}
|
|||
|
|
/***********************是否ping通*******************************/
|
|||
|
|
|
|||
|
|
/*****************获取指定目录下,某后缀名固定的路径****************/
|
|||
|
|
public static List<FileInfo> getFile(string path, string extName, List<FileInfo> lst)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
string[] dir = Directory.GetDirectories(path); //文件夹列表
|
|||
|
|
DirectoryInfo fdir = new DirectoryInfo(path);
|
|||
|
|
FileInfo[] file = fdir.GetFiles();
|
|||
|
|
//FileInfo[] file = Directory.GetFiles(path); //文件列表
|
|||
|
|
if (file.Length != 0 || dir.Length != 0) //当前目录文件或文件夹不为空
|
|||
|
|
{
|
|||
|
|
foreach (FileInfo f in file) //显示当前目录所有文件
|
|||
|
|
{
|
|||
|
|
if (extName.ToLower().IndexOf(f.Extension.ToLower()) >= 0)
|
|||
|
|
{
|
|||
|
|
lst.Add(f);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
foreach (string d in dir)
|
|||
|
|
{
|
|||
|
|
getFile(d, extName, lst);//递归
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return lst;
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
throw ex;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|