843 lines
35 KiB
C#
843 lines
35 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Data.SqlClient;
|
||
using System.Drawing;
|
||
using System.IO;
|
||
using System.Text;
|
||
using System.Text.RegularExpressions;
|
||
using System.Threading;
|
||
using System.Windows.Forms;
|
||
using LitJson;
|
||
using MySql.Data.MySqlClient;
|
||
namespace SimpleServer
|
||
{
|
||
public partial class ServerForm : Form
|
||
{
|
||
//获取当前程序运行路径
|
||
private string Save_Path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"数据记录\";
|
||
|
||
int date_flag = DateTime.Now.DayOfYear;
|
||
static string COD;
|
||
static string ammnit;
|
||
static string tonitro;
|
||
static string tophosp;
|
||
static string ph;
|
||
static string oxyen;
|
||
static string Tem;
|
||
static string conductivity;
|
||
static string turbidity;
|
||
static string time;
|
||
public struct Model
|
||
{
|
||
public string Datetime { get; set; }
|
||
public string Measparam { get; set; }
|
||
public string Value { get; set; }
|
||
public string Unit { get; set; }
|
||
public string Type { get; set; }
|
||
public string dataflag { get; set; }
|
||
}
|
||
#region DataMember & Ctor
|
||
private Server server = new Server();
|
||
private Server_10 server_10 = new Server_10();
|
||
|
||
public ServerForm()
|
||
{
|
||
InitializeComponent();
|
||
ServerDlgSubscribe(true);
|
||
ServerDlgSubscribe_10(true);
|
||
}
|
||
#endregion
|
||
|
||
#region 界面事件处理
|
||
private void btnStart_Click(object sender, EventArgs e)
|
||
{
|
||
string ip = this.tbIP.Text.Trim();
|
||
string port = this.tbPort.Text.Trim();
|
||
if (server.Start(ip, int.Parse(port)))
|
||
{
|
||
ModifyShowsByServerState(true);
|
||
}
|
||
Thread acceptClientThread = new Thread(BeginAcceptClient);
|
||
acceptClientThread.IsBackground = true;
|
||
acceptClientThread.Start();
|
||
}
|
||
|
||
private void btnClose_Click(object sender, EventArgs e)
|
||
{
|
||
if (server.ServerClose())
|
||
{
|
||
ModifyShowsByServerState(false);
|
||
}
|
||
server.DisconnectClient();
|
||
}
|
||
|
||
private void btnClear_Click(object sender, EventArgs e)
|
||
{
|
||
this.txtRecv.Clear();
|
||
}
|
||
|
||
private void btnSend_Click(object sender, EventArgs e)
|
||
{
|
||
byte[] msg = new byte[10];
|
||
|
||
msg[0] = 0x01;
|
||
msg[1] = 0x02;
|
||
server.SendMsg(msg);
|
||
}
|
||
|
||
private void btnDisconnect_Click(object sender, EventArgs e)
|
||
{
|
||
server.DisconnectClient();
|
||
}
|
||
|
||
private void ServerForm_FormClosing(object sender, FormClosingEventArgs e)
|
||
{
|
||
ServerDlgSubscribe(false);
|
||
}
|
||
|
||
private void ServerForm_Load(object sender, EventArgs e)
|
||
{
|
||
ModifyShowsByServerState(false);
|
||
ModifyShowsByClientState(false);
|
||
}
|
||
#endregion
|
||
|
||
#region 界面逻辑函数
|
||
/// <summary>
|
||
/// 根据监听状态修改界面显示
|
||
/// ServerForm_Load,点击启用服务器,关闭服务器按钮后调用
|
||
/// </summary>
|
||
/// <param name="serverStart"></param>
|
||
private void ModifyShowsByServerState(bool serverStart)
|
||
{
|
||
this.btnStart.Enabled = !serverStart;
|
||
this.btnClose.Enabled = serverStart;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据监听状态修改界面显示 -端口号2010
|
||
/// ServerForm_Load,点击启用服务器,关闭服务器按钮后调用
|
||
/// </summary>
|
||
/// <param name="serverStart"></param>
|
||
private void ModifyShowsByServerState_10(bool serverStart)
|
||
{
|
||
this.btnStart_10.Enabled = !serverStart;
|
||
this.btnClose_10.Enabled = serverStart;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据连接状态修改界面显示
|
||
/// ServerForm_Load,Server_NewClientEvent,Server_RemoteDisconnectEvent,Server_LocalDisconnectEvent调用到
|
||
/// </summary>
|
||
/// <param name="clientConnect"></param>
|
||
private void ModifyShowsByClientState(bool clientConnect)
|
||
{
|
||
this.btnSend.Enabled = clientConnect;
|
||
this.btnDisconnect.Enabled = clientConnect;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 根据连接状态修改界面显示
|
||
/// ServerForm_Load,Server_NewClientEvent,Server_RemoteDisconnectEvent,Server_LocalDisconnectEvent调用到
|
||
/// </summary>
|
||
/// <param name="clientConnect"></param>
|
||
private void ModifyShowsByClientState_10(bool clientConnect)
|
||
{
|
||
this.btnSend.Enabled = clientConnect;
|
||
this.btnDisconnect_10.Enabled = clientConnect;
|
||
}
|
||
|
||
|
||
private string splitSymbols = "\r\n\r\n";
|
||
/// <summary>
|
||
/// 日志记录
|
||
/// </summary>
|
||
/// <param name="content"></param>
|
||
private void LogRecord(string content)
|
||
{
|
||
this.txtLog.AppendText(content + splitSymbols);
|
||
}
|
||
public double ConvertDateTimeInt(System.DateTime time)//将时间格式的数据类型转换成浮点数类型
|
||
|
||
{
|
||
|
||
double intResult = 0;
|
||
|
||
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970,1,1));
|
||
|
||
intResult =(time - startTime).TotalSeconds;
|
||
|
||
return intResult;
|
||
|
||
}
|
||
public double ConvertByteDouble(byte [] d)
|
||
{
|
||
double result=0;
|
||
float q = BitConverter.ToSingle(d, 0);
|
||
result = (double)q;
|
||
return result;
|
||
}
|
||
public byte[] ConvertDoubleByte(double d)
|
||
{
|
||
byte[] result = new byte[4];
|
||
float f=(float)d;
|
||
result = BitConverter.GetBytes(f);
|
||
return result;
|
||
}
|
||
private static byte[] strToToHexByte(string hexString)
|
||
{
|
||
hexString = hexString.Replace(" ", "");
|
||
if ((hexString.Length % 2) != 0)
|
||
hexString += " ";
|
||
byte[] returnBytes = new byte[hexString.Length / 2];
|
||
for (int i = 0; i < returnBytes.Length; i++)
|
||
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
|
||
return returnBytes;
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 将收文或发文字符串处理后加入文本接收区 -2009
|
||
/// </summary>
|
||
/// <param name="param"></param>
|
||
/// --------------------------------------------------------------------------------------------
|
||
private void AppendText(byte[] param)
|
||
{
|
||
string strRcv = null;
|
||
//int decNum = 0;//存储十进制
|
||
for (int i = 0; i < param.Length; i++) //窗体显示
|
||
{
|
||
|
||
strRcv += param[i].ToString("X2"); //16进制显示
|
||
|
||
}
|
||
string strRcv_1 = strRcv.Substring(0,116);
|
||
|
||
Tools.AddLgoToTXT("端口号2009原始报文.txt", Save_Path + System.DateTime.Now.ToString("yyyy_MM_dd") + @"\", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ---- " + strRcv_1 + "\r\n");
|
||
|
||
string str;
|
||
int datenow = DateTime.Now.DayOfYear;
|
||
|
||
if (strRcv_1.Substring(10,2) == "02")
|
||
{ //实时数据功能码
|
||
if (strRcv_1.Substring(12, 2) == "09")
|
||
{//凯米斯大类
|
||
if (strRcv_1.Substring(14, 2) == "00")
|
||
{//数据类型hex
|
||
|
||
int data_tem = Convert.ToInt32(strRcv_1.Substring(16, 4), 16);//tem整数
|
||
//float f_tem = Convert.ToSingle(data_tem);//转float
|
||
int data_x = Convert.ToInt32(strRcv_1.Substring(20, 4),16);//小数
|
||
float t_tem=(float)Math.Pow(10,(double)data_x);//次方
|
||
float Tem = data_tem / t_tem;
|
||
|
||
int data_ph = Convert.ToInt32(strRcv_1.Substring(24, 4), 16);//PH整数
|
||
//float f_ph = Convert.ToSingle(data_ph);//转float
|
||
int data_x_ph = Convert.ToInt32(strRcv_1.Substring(28, 4), 16);//小数
|
||
float t_ph = (float)Math.Pow(10, (double)data_x_ph);//次方
|
||
//int data_ph = 1;
|
||
float COD = data_ph / t_ph;
|
||
|
||
|
||
int data_oxy = Convert.ToInt32(strRcv_1.Substring(32, 4), 16);//oxy整数
|
||
//float f_oxy = Convert.ToSingle(data_oxy);//转float
|
||
int data_x_oxy = Convert.ToInt32(strRcv_1.Substring(36, 4), 16);//小数
|
||
float t_oxy = (float)Math.Pow(10, (double)data_x_oxy);//次方
|
||
float turbid = data_oxy / t_oxy;
|
||
|
||
int data_conductivity = Convert.ToInt32(strRcv_1.Substring(40, 4), 16);//conductivity整数
|
||
//float f_conductivity = Convert.ToSingle(data_conductivity);//转float
|
||
int data_x_pconductivity = Convert.ToInt32(strRcv_1.Substring(44, 4), 16);//小数
|
||
float t_pconductivity = (float)Math.Pow(10, (double)data_x_pconductivity);//次方
|
||
float Conductivity = data_conductivity / t_pconductivity;
|
||
|
||
int data_turbity = Convert.ToInt32(strRcv_1.Substring(48, 4), 16);//turbity整数
|
||
//float f_turbity = Convert.ToSingle(data_turbity);//转float
|
||
int data_x_turbity = Convert.ToInt32(strRcv_1.Substring(52, 4), 16);//小数
|
||
float t_turbity = (float)Math.Pow(10, (double)data_x_turbity);//次方
|
||
float PH = data_turbity / t_turbity;
|
||
|
||
int data_ammnit = Convert.ToInt32(strRcv_1.Substring(56, 4), 16);//ammnit整数
|
||
//float f_ammnit = Convert.ToSingle(data_ammnit);//转float
|
||
int data_x_ammnit = Convert.ToInt32(strRcv_1.Substring(60, 4), 16);//小数
|
||
float t_ammnit = (float)Math.Pow(10, (double)data_x_ammnit);//次方
|
||
float ORP = data_ammnit / t_ammnit;
|
||
|
||
int data_orp = Convert.ToInt32(strRcv_1.Substring(64, 4), 16);//orp整数
|
||
// float f_orp = Convert.ToSingle(data_orp);//转float
|
||
int data_x_orp = Convert.ToInt32(strRcv_1.Substring(68, 4), 16);//小数
|
||
float t_orp = (float)Math.Pow(10, (double)data_x_orp);//次方
|
||
float OXY = data_orp / t_orp;
|
||
|
||
int data_cod = Convert.ToInt32(strRcv_1.Substring(72, 4), 16);//orp整数
|
||
//float f_cod = Convert.ToSingle(data_cod);//转float
|
||
int data_x_cod = Convert.ToInt32(strRcv_1.Substring(76, 4), 16);//小数
|
||
float t_cod = (float)Math.Pow(10, (double)data_x_cod);//次方
|
||
float NH4 = data_cod / t_cod;
|
||
|
||
int data_zhuodu = Convert.ToInt32(strRcv_1.Substring(80, 4), 16);//zhuodu
|
||
//float f_cod = Convert.ToSingle(data_cod);//转float
|
||
int data_x_zhuodu = Convert.ToInt32(strRcv_1.Substring(84, 4), 16);//小数
|
||
float t_zhuodu = (float)Math.Pow(10, (double)data_x_cod);//次方
|
||
float zhuodu = data_zhuodu / t_zhuodu;
|
||
|
||
|
||
int HUM = Convert.ToInt32(strRcv_1.Substring(100, 4), 16);//HUM
|
||
//float f_cod = Convert.ToSingle(data_cod);//转float
|
||
/*float HUM_1 = (HUM / 1000)*33;*/
|
||
float HUM_1 = 33;
|
||
DateTime time_2 = DateTime.Now;
|
||
string constr = "server=localhost;User Id=root;password=ztt12345!;Database=ningbo_wireless";
|
||
|
||
|
||
MySqlConnection mycon = new MySqlConnection(constr);
|
||
|
||
mycon.Open();
|
||
|
||
MySqlCommand mycmd = new MySqlCommand("insert into ningbo_wireless_data(id,data_time,Tem,PH,Turbidity,Ammnit,oxygen,COD,Water_level,Hum) values('0201','" + time_2 + "','" + Tem + "','" + PH + "','" + zhuodu + "','" + NH4 + "','" + OXY + "','" + COD + "','II','" + HUM_1 + "')", mycon);//数据库插入
|
||
|
||
Tools.AddLgoToTXT("端口号2009解析数据.txt", Save_Path + System.DateTime.Now.ToString("yyyy_MM_dd") + @"\", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ---- " + ",data_time:" + time_2 + ",Tem:" + Tem + ",PH:" + PH + ",zhuodu" + zhuodu + ",NH4:" + NH4 + ",OXY:" + OXY + ",COD:" + COD + "','II','" + HUM_1 + "\r\n");
|
||
//MySqlCommand mycmd_1 = new MySqlCommand("DELETE FROM kfq_node2_sensor WHERE id NOT IN (SELECT kfq_node2_sensor_copy.id FROM(SELECT MIN(id) AS id FROM kfq_node2_sensor GROUP BY data_time) kfq_node2_sensor_copy)", mycon_1);
|
||
//MySqlCommand mycmd_2 = new MySqlCommand("DELETE FROM kfq_node3_sensor WHERE id NOT IN (SELECT kfq_node3_sensor_copy.id FROM(SELECT MIN(id) AS id FROM kfq_node3_sensor GROUP BY data_time) kfq_node3_sensor_copy)", mycon_2);
|
||
//MySqlCommand mycmd_3 = new MySqlCommand("DELETE FROM kfq_node4_sensor WHERE id NOT IN (SELECT kfq_node4_sensor_copy.id FROM(SELECT MIN(id) AS id FROM kfq_node4_sensor GROUP BY data_time) kfq_node4_sensor_copy)", mycon_3);
|
||
try
|
||
{
|
||
if (mycmd.ExecuteNonQuery() > 0)
|
||
{
|
||
Console.WriteLine("数据插入成功!");
|
||
}
|
||
else
|
||
{
|
||
Console.WriteLine("数据插入wei成功!");
|
||
}
|
||
}
|
||
catch (System.Exception ex)
|
||
{
|
||
//MessageBox.Show(ex.Message, "cuowu");
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
|
||
}
|
||
//FEEF002601020900000000000000000000000000000000000000000000000000000000000100FC001C16
|
||
|
||
|
||
/*if (datenow != date_flag)
|
||
{
|
||
FileStream fs1 = new FileStream(str, FileMode.Create, FileAccess.Write);//创建写入文件
|
||
StreamWriter sw = new StreamWriter(fs1);//添加文本结束符等
|
||
// sw.WriteLine(data00.ToString() + ' ' + data11.ToString() + ' ' + data22.ToString() + ' ' + data33.ToString() + ' ' + data44.ToString() + ' ' + data55.ToString() + ' ' + data000.ToString() + ' ' + data111.ToString() + ' ' + data222.ToString() + ' ' + DateTime.Now.ToString());//开始写入值
|
||
sw.WriteLine(param);
|
||
sw.Close();
|
||
fs1.Close();
|
||
}
|
||
else
|
||
{
|
||
FileStream fs = new FileStream(str, FileMode.Append, FileAccess.Write);
|
||
StreamWriter sr = new StreamWriter(fs);
|
||
// sr.WriteLine(data00.ToString() + ' ' + data11.ToString() + ' ' + data22.ToString() + ' ' + data33.ToString() + ' ' + data44.ToString() + ' ' + data55.ToString() + ' ' + data000.ToString() + ' ' + data111.ToString() + ' ' + data222.ToString() + ' ' + DateTime.Now.ToString());//开始写入值
|
||
sr.WriteLine(param);
|
||
sr.Close();
|
||
fs.Close();
|
||
}*/
|
||
date_flag = DateTime.Now.DayOfYear;
|
||
|
||
int index1 = this.txtRecv.Text.Length;
|
||
int length1 = strRcv_1.IndexOf("\r\n");
|
||
int index2 = index1 + length1 + 2;
|
||
int length2 = param.Length - length1 - 2;
|
||
this.txtRecv.AppendText(strRcv_1);
|
||
this.txtRecv.Select(index1, length1);
|
||
this.txtRecv.SelectionColor = Color.Green;
|
||
this.txtRecv.Select(index2, length2);
|
||
this.txtRecv.SelectionColor = Color.Black;
|
||
this.txtRecv.Select(this.txtRecv.Text.Length, 0);
|
||
this.txtRecv.Focus();
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 将收文或发文字符串处理后加入文本接收区--2010
|
||
/// </summary>
|
||
/// <param name="param"></param>
|
||
/// --------------------------------------------------------------------------------------------
|
||
private void AppendText_10(byte[] param)
|
||
{
|
||
string strRcv = null;
|
||
//int decNum = 0;//存储十进制
|
||
for (int i = 0; i < param.Length; i++) //窗体显示
|
||
{
|
||
|
||
strRcv += param[i].ToString("X2"); //16进制显示
|
||
|
||
}
|
||
string strRcv_1 = strRcv.Substring(0, 116);
|
||
Tools.AddLgoToTXT("端口号2010原始报文.txt", Save_Path + System.DateTime.Now.ToString("yyyy_MM_dd") + @"\", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ---- " + strRcv_1 + "\r\n");
|
||
|
||
string str;
|
||
int datenow = DateTime.Now.DayOfYear;
|
||
|
||
if (strRcv_1.Substring(10, 2) == "02")
|
||
{ //实时数据功能码
|
||
if (strRcv_1.Substring(12, 2) == "09")
|
||
{//凯米斯大类
|
||
if (strRcv_1.Substring(14, 2) == "00")
|
||
{//数据类型hex
|
||
|
||
int data_tem = Convert.ToInt32(strRcv_1.Substring(16, 4), 16);//tem整数
|
||
//float f_tem = Convert.ToSingle(data_tem);//转float
|
||
int data_x = Convert.ToInt32(strRcv_1.Substring(20, 4), 16);//小数
|
||
float t_tem = (float)Math.Pow(10, (double)data_x);//次方
|
||
float Tem = data_tem / t_tem;
|
||
|
||
int data_ph = Convert.ToInt32(strRcv_1.Substring(24, 4), 16);//PH整数
|
||
//float f_ph = Convert.ToSingle(data_ph);//转float
|
||
int data_x_ph = Convert.ToInt32(strRcv_1.Substring(28, 4), 16);//小数
|
||
float t_ph = (float)Math.Pow(10, (double)data_x_ph);//次方
|
||
//int data_ph = 1;
|
||
float COD = data_ph / t_ph;
|
||
|
||
|
||
int data_oxy = Convert.ToInt32(strRcv_1.Substring(32, 4), 16);//oxy整数
|
||
//float f_oxy = Convert.ToSingle(data_oxy);//转float
|
||
int data_x_oxy = Convert.ToInt32(strRcv_1.Substring(36, 4), 16);//小数
|
||
float t_oxy = (float)Math.Pow(10, (double)data_x_oxy);//次方
|
||
float turbid = data_oxy / t_oxy;
|
||
|
||
int data_conductivity = Convert.ToInt32(strRcv_1.Substring(40, 4), 16);//conductivity整数
|
||
//float f_conductivity = Convert.ToSingle(data_conductivity);//转float
|
||
int data_x_pconductivity = Convert.ToInt32(strRcv_1.Substring(44, 4), 16);//小数
|
||
float t_pconductivity = (float)Math.Pow(10, (double)data_x_pconductivity);//次方
|
||
float Conductivity = data_conductivity / t_pconductivity;
|
||
|
||
int data_turbity = Convert.ToInt32(strRcv_1.Substring(48, 4), 16);//turbity整数
|
||
//float f_turbity = Convert.ToSingle(data_turbity);//转float
|
||
int data_x_turbity = Convert.ToInt32(strRcv_1.Substring(52, 4), 16);//小数
|
||
float t_turbity = (float)Math.Pow(10, (double)data_x_turbity);//次方
|
||
float PH = data_turbity / t_turbity;
|
||
|
||
int data_ammnit = Convert.ToInt32(strRcv_1.Substring(56, 4), 16);//ammnit整数
|
||
//float f_ammnit = Convert.ToSingle(data_ammnit);//转float
|
||
int data_x_ammnit = Convert.ToInt32(strRcv_1.Substring(60, 4), 16);//小数
|
||
float t_ammnit = (float)Math.Pow(10, (double)data_x_ammnit);//次方
|
||
float ORP = data_ammnit / t_ammnit;
|
||
|
||
int data_orp = Convert.ToInt32(strRcv_1.Substring(64, 4), 16);//orp整数
|
||
// float f_orp = Convert.ToSingle(data_orp);//转float
|
||
int data_x_orp = Convert.ToInt32(strRcv_1.Substring(68, 4), 16);//小数
|
||
float t_orp = (float)Math.Pow(10, (double)data_x_orp);//次方
|
||
float OXY = data_orp / t_orp;
|
||
|
||
int data_cod = Convert.ToInt32(strRcv_1.Substring(72, 4), 16);//orp整数
|
||
//float f_cod = Convert.ToSingle(data_cod);//转float
|
||
int data_x_cod = Convert.ToInt32(strRcv_1.Substring(76, 4), 16);//小数
|
||
float t_cod = (float)Math.Pow(10, (double)data_x_cod);//次方
|
||
float NH4 = data_cod / t_cod;
|
||
|
||
int data_zhuodu = Convert.ToInt32(strRcv_1.Substring(80, 4), 16);//zhuodu
|
||
//float f_cod = Convert.ToSingle(data_cod);//转float
|
||
int data_x_zhuodu = Convert.ToInt32(strRcv_1.Substring(84, 4), 16);//小数
|
||
float t_zhuodu = (float)Math.Pow(10, (double)data_x_cod);//次方
|
||
float zhuodu = data_zhuodu / t_zhuodu;
|
||
|
||
|
||
int HUM = Convert.ToInt32(strRcv_1.Substring(100, 4), 16);//HUM
|
||
//float f_cod = Convert.ToSingle(data_cod);//转float
|
||
float HUM_1 = (HUM / 1000) * 33;
|
||
|
||
int V0 = Convert.ToInt32(strRcv_1.Substring(108, 4), 16);//HUM
|
||
//float f_cod = Convert.ToSingle(data_cod);//转float
|
||
double V1 = (V0 / 1000.00) * 11.16;
|
||
|
||
DateTime time_2 = DateTime.Now;
|
||
string constr = "server=localhost;User Id=root;password=ztt12345!;Database=ningbo_wireless";
|
||
|
||
|
||
MySqlConnection mycon = new MySqlConnection(constr);
|
||
|
||
mycon.Open();
|
||
|
||
MySqlCommand mycmd = new MySqlCommand("insert into ningbo_wireless1_data(id,data_time,Tem,PH,Turbidity,Ammnit,oxygen,COD,Water_level,Hum,Vol) values('0201','" + time_2 + "','" + Tem + "','" + PH + "','" + zhuodu + "','" + NH4 + "','" + OXY + "','" + COD + "','II','" + HUM_1 + "','" + V1 + "')", mycon);//数据库插入
|
||
Tools.AddLgoToTXT("端口号2010解析数据.txt", Save_Path + System.DateTime.Now.ToString("yyyy_MM_dd") + @"\", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ---- " + ",data_time:" + time_2 + ",Tem:" + Tem + ",PH:" + PH + ",zhuodu" + zhuodu + ",NH4:" + NH4 + ",OXY:" + OXY + ",COD:" + COD + "','II','" + HUM_1 + "\r\n");
|
||
|
||
//MySqlCommand mycmd_1 = new MySqlCommand("DELETE FROM kfq_node2_sensor WHERE id NOT IN (SELECT kfq_node2_sensor_copy.id FROM(SELECT MIN(id) AS id FROM kfq_node2_sensor GROUP BY data_time) kfq_node2_sensor_copy)", mycon_1);
|
||
//MySqlCommand mycmd_2 = new MySqlCommand("DELETE FROM kfq_node3_sensor WHERE id NOT IN (SELECT kfq_node3_sensor_copy.id FROM(SELECT MIN(id) AS id FROM kfq_node3_sensor GROUP BY data_time) kfq_node3_sensor_copy)", mycon_2);
|
||
//MySqlCommand mycmd_3 = new MySqlCommand("DELETE FROM kfq_node4_sensor WHERE id NOT IN (SELECT kfq_node4_sensor_copy.id FROM(SELECT MIN(id) AS id FROM kfq_node4_sensor GROUP BY data_time) kfq_node4_sensor_copy)", mycon_3);
|
||
try
|
||
{
|
||
if (mycmd.ExecuteNonQuery() > 0)
|
||
{
|
||
Console.WriteLine("数据插入成功!");
|
||
}
|
||
else
|
||
{
|
||
Console.WriteLine("数据插入wei成功!");
|
||
}
|
||
}
|
||
catch (System.Exception ex)
|
||
{
|
||
//MessageBox.Show(ex.Message, "cuowu");
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
|
||
}
|
||
date_flag = DateTime.Now.DayOfYear;
|
||
|
||
int index1 = this.txtRecv.Text.Length;
|
||
int length1 = strRcv_1.IndexOf("\r\n");
|
||
int index2 = index1 + length1 + 2;
|
||
int length2 = param.Length - length1 - 2;
|
||
this.txtRecv.AppendText(strRcv_1);
|
||
this.txtRecv.Select(index1, length1);
|
||
this.txtRecv.SelectionColor = Color.Green;
|
||
this.txtRecv.Select(index2, length2);
|
||
this.txtRecv.SelectionColor = Color.Black;
|
||
this.txtRecv.Select(this.txtRecv.Text.Length, 0);
|
||
this.txtRecv.Focus();
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 业务逻辑处理
|
||
/// <summary>
|
||
/// 监听启动之后,线程中启动连接接收
|
||
/// </summary>
|
||
private void BeginAcceptClient()
|
||
{
|
||
server.BeginAcceptClient();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 监听启动之后,线程中启动连接接收-10
|
||
/// </summary>
|
||
private void BeginAcceptClient_10()
|
||
{
|
||
server_10.BeginAcceptClient();
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 在构造函数和ServerForm_FormClosing里调用
|
||
/// </summary>
|
||
/// <param name="add"></param>
|
||
private void ServerDlgSubscribe(bool add)
|
||
{
|
||
if (add)
|
||
{
|
||
server.ServerStartEvent += new DlgNoParam(Server_ServerStartEvent);
|
||
server.ServerCloseEvent += new DlgNoParam(Server_ServerCloseEvent);
|
||
server.NewClientEvent += new DlgOneParam<string>(Server_NewClientEvent);
|
||
server.RecvMsgEvent += new DlgOneParam<byte[]>(Server_RecvMsgEvent);
|
||
server.RemoteDisconnectEvent += new DlgOneParam<string>(Server_RemoteDisconnectEvent);
|
||
server.LocalDisconnectEvent += new DlgNoParam(Server_LocalDisconnectEvent);
|
||
}
|
||
else
|
||
{
|
||
server.ServerStartEvent -= new DlgNoParam(Server_ServerStartEvent);
|
||
server.ServerCloseEvent -= new DlgNoParam(Server_ServerCloseEvent);
|
||
server.NewClientEvent -= new DlgOneParam<string>(Server_NewClientEvent);
|
||
server.RecvMsgEvent -= new DlgOneParam<byte[]>(Server_RecvMsgEvent);
|
||
server.RemoteDisconnectEvent -= new DlgOneParam<string>(Server_RemoteDisconnectEvent);
|
||
server.LocalDisconnectEvent -= new DlgNoParam(Server_LocalDisconnectEvent);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 在构造函数和ServerForm_FormClosing里调用-2010
|
||
/// </summary>
|
||
/// <param name="add"></param>
|
||
private void ServerDlgSubscribe_10(bool add)
|
||
{
|
||
if (add)
|
||
{
|
||
server.ServerStartEvent += new DlgNoParam(Server_ServerStartEvent_10);
|
||
server.ServerCloseEvent += new DlgNoParam(Server_ServerCloseEvent_10);
|
||
server.NewClientEvent += new DlgOneParam<string>(Server_NewClientEvent_10);
|
||
server.RecvMsgEvent += new DlgOneParam<byte[]>(Server_RecvMsgEvent_10);//数据接收解析
|
||
server.RemoteDisconnectEvent += new DlgOneParam<string>(Server_RemoteDisconnectEvent_10);
|
||
server.LocalDisconnectEvent += new DlgNoParam(Server_LocalDisconnectEvent_10);
|
||
}
|
||
else
|
||
{
|
||
server.ServerStartEvent -= new DlgNoParam(Server_ServerStartEvent_10);
|
||
server.ServerCloseEvent -= new DlgNoParam(Server_ServerCloseEvent_10);
|
||
server.NewClientEvent -= new DlgOneParam<string>(Server_NewClientEvent_10);
|
||
server.RecvMsgEvent -= new DlgOneParam<byte[]>(Server_RecvMsgEvent_10);//数据接收解析
|
||
server.RemoteDisconnectEvent -= new DlgOneParam<string>(Server_RemoteDisconnectEvent_10);
|
||
server.LocalDisconnectEvent -= new DlgNoParam(Server_LocalDisconnectEvent_10);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 下层事件处理-2009
|
||
public void Server_ServerStartEvent()
|
||
{
|
||
if (this.InvokeRequired)
|
||
{
|
||
this.BeginInvoke(new ThreadStart(delegate()
|
||
{
|
||
LogRecord("服务器(2009)已启动...");
|
||
}));
|
||
}
|
||
else
|
||
{
|
||
LogRecord("服务器(端口号2009)已启动...");
|
||
}
|
||
}
|
||
|
||
public void Server_ServerCloseEvent()
|
||
{
|
||
if (this.InvokeRequired)
|
||
{
|
||
this.BeginInvoke(new ThreadStart(delegate()
|
||
{
|
||
LogRecord("服务器(端口号2009)已关闭...");
|
||
}));
|
||
}
|
||
else
|
||
{
|
||
LogRecord("服务器(端口号2009)已关闭...");
|
||
}
|
||
}
|
||
|
||
public void Server_NewClientEvent(string param)
|
||
{
|
||
if (this.InvokeRequired)
|
||
{
|
||
this.BeginInvoke(new ThreadStart(delegate()
|
||
{
|
||
LogRecord("(端口号2009)接收到客户端连接: " + param + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
||
ModifyShowsByClientState(true);
|
||
}));
|
||
}
|
||
else
|
||
{
|
||
LogRecord("(端口号2009)接收到客户端连接: " + param + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
||
ModifyShowsByClientState(true);
|
||
}
|
||
}
|
||
|
||
public void Server_RecvMsgEvent(byte[] param)
|
||
{
|
||
if (this.InvokeRequired)
|
||
{
|
||
this.BeginInvoke(new ThreadStart(delegate()
|
||
{
|
||
AppendText(param);
|
||
}));
|
||
}
|
||
else
|
||
{
|
||
AppendText(param);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
public void Server_RemoteDisconnectEvent(string param)
|
||
{
|
||
if (this.InvokeRequired)
|
||
{
|
||
this.BeginInvoke(new ThreadStart(delegate()
|
||
{
|
||
LogRecord("(端口号2009)远程客户端断开连接: " + param);
|
||
ModifyShowsByClientState(false);
|
||
}));
|
||
}
|
||
else
|
||
{
|
||
LogRecord("(端口号2009)远程客户端断开连接: " + param);
|
||
ModifyShowsByClientState(false);
|
||
}
|
||
}
|
||
|
||
public void Server_LocalDisconnectEvent()
|
||
{
|
||
if (this.InvokeRequired)
|
||
{
|
||
this.BeginInvoke(new ThreadStart(delegate()
|
||
{
|
||
LogRecord("(端口号2009)本地客户端断开连接");
|
||
ModifyShowsByClientState(false);
|
||
}));
|
||
}
|
||
else
|
||
{
|
||
LogRecord("(端口号2009)本地客户端断开连接");
|
||
ModifyShowsByClientState(false);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
|
||
#region 下层事件处理-2010
|
||
public void Server_ServerStartEvent_10()
|
||
{
|
||
if (this.InvokeRequired)
|
||
{
|
||
this.BeginInvoke(new ThreadStart(delegate()
|
||
{
|
||
LogRecord("服务器(端口号2010)已启动...");
|
||
}));
|
||
}
|
||
else
|
||
{
|
||
LogRecord("服务器(端口号2010)已启动...");
|
||
}
|
||
}
|
||
|
||
public void Server_ServerCloseEvent_10()
|
||
{
|
||
if (this.InvokeRequired)
|
||
{
|
||
this.BeginInvoke(new ThreadStart(delegate()
|
||
{
|
||
LogRecord("服务器(端口号2010)已关闭...");
|
||
}));
|
||
}
|
||
else
|
||
{
|
||
LogRecord("服务器(端口号2010)已关闭...");
|
||
}
|
||
}
|
||
|
||
public void Server_NewClientEvent_10(string param)
|
||
{
|
||
if (this.InvokeRequired)
|
||
{
|
||
this.BeginInvoke(new ThreadStart(delegate()
|
||
{
|
||
LogRecord("(端口号2010)接收到客户端连接: " + param + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
||
ModifyShowsByClientState_10(true);
|
||
}));
|
||
}
|
||
else
|
||
{
|
||
LogRecord("(端口号2010)接收到客户端连接: " + param + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
||
ModifyShowsByClientState_10(true);
|
||
}
|
||
}
|
||
|
||
public void Server_RecvMsgEvent_10(byte[] param)
|
||
{
|
||
if (this.InvokeRequired)
|
||
{
|
||
this.BeginInvoke(new ThreadStart(delegate()
|
||
{
|
||
AppendText_10(param);
|
||
}));
|
||
}
|
||
else
|
||
{
|
||
AppendText_10(param);
|
||
}
|
||
}
|
||
|
||
|
||
public void Server_RemoteDisconnectEvent_10(string param)
|
||
{
|
||
if (this.InvokeRequired)
|
||
{
|
||
this.BeginInvoke(new ThreadStart(delegate()
|
||
{
|
||
LogRecord("(端口号2010)远程客户端断开连接: " + param);
|
||
ModifyShowsByClientState_10(false);
|
||
}));
|
||
}
|
||
else
|
||
{
|
||
LogRecord("(端口号2010)远程客户端断开连接: " + param);
|
||
ModifyShowsByClientState_10(false);
|
||
}
|
||
}
|
||
|
||
public void Server_LocalDisconnectEvent_10()
|
||
{
|
||
if (this.InvokeRequired)
|
||
{
|
||
this.BeginInvoke(new ThreadStart(delegate()
|
||
{
|
||
LogRecord("(端口号2010)本地客户端断开连接");
|
||
ModifyShowsByClientState_10(false);
|
||
}));
|
||
}
|
||
else
|
||
{
|
||
LogRecord("(端口号2010)本地客户端断开连接");
|
||
ModifyShowsByClientState_10(false);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
|
||
#region 端口号2010操作
|
||
|
||
/// <summary>
|
||
/// 开启端口号2010的监听
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void btnStart_10_Click(object sender, EventArgs e)
|
||
{
|
||
string ip_10 = this.tbIP_10.Text.Trim();
|
||
string port_10 = this.tbPort_10.Text.Trim();
|
||
if (server_10.Start(ip_10, int.Parse(port_10)))
|
||
{
|
||
ModifyShowsByServerState_10(true);
|
||
}
|
||
Thread acceptClientThread = new Thread(BeginAcceptClient_10);
|
||
acceptClientThread.IsBackground = true;
|
||
acceptClientThread.Start();
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 关闭端口号2010的监听
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void btnClose_10_Click(object sender, EventArgs e)
|
||
{
|
||
if (server_10.ServerClose())
|
||
{
|
||
ModifyShowsByServerState_10(false);
|
||
}
|
||
server.DisconnectClient();
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 关闭连接
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void btnDisconnect_10_Click(object sender, EventArgs e)
|
||
{
|
||
server.DisconnectClient();
|
||
}
|
||
|
||
#endregion
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
}
|
||
}
|