0230204_FZLH_upperpc/fuqing/Nanji_Island/tool.cs

193 lines
7.3 KiB
C#
Raw Permalink Normal View History

2023-07-26 01:26:19 +00:00
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;
}
}
}
}