0230204_FZLH_upperpc/fuqing/Nanji_Island/tool.cs

193 lines
7.3 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}
}
}