由于嵌入式工程师无法调试光电分离腔的通信,因此将光电分离腔上位机改为服务器,待后续测试后再改为客户端
This commit is contained in:
parent
7ea526d7e7
commit
bc7ea19a6a
Binary file not shown.
Binary file not shown.
@ -168,7 +168,7 @@ namespace ZTTMS_Manage_yibayiyi_20230320
|
||||
|
||||
btnGetNewInfo.Enabled = true;
|
||||
Others.g_socketSendGDFL.Close();
|
||||
//Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
|
||||
PhotoelectricSeparationDataForm.strState = "连接断开";
|
||||
PhotoelectricSeparationDataForm.change();
|
||||
@ -331,7 +331,7 @@ namespace ZTTMS_Manage_yibayiyi_20230320
|
||||
|
||||
btnGetNewInfo.Enabled = true;
|
||||
Others.g_socketSendGDFL.Close();
|
||||
//Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
|
||||
PhotoelectricSeparationDataForm.strState = "连接断开";
|
||||
PhotoelectricSeparationDataForm.change();
|
||||
|
||||
@ -274,7 +274,7 @@ namespace ZTTMS_Manage_yibayiyi_20230320
|
||||
EveryDayLog.WriteGDFL("光电分离腔请求设备重启失败,错误信息为:" + ex.ToString());
|
||||
EveryDayLog.WriteErrorGDFL("光电分离腔请求设备重启失败,错误信息为:" + ex.ToString());
|
||||
|
||||
//Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
Others.g_gdflReceive = false;
|
||||
|
||||
GDFLPortStateForm.strState = "连接断开";
|
||||
|
||||
@ -13,11 +13,11 @@ namespace ZTTMS_Manage_yibayiyi_20230320
|
||||
{
|
||||
class Others
|
||||
{
|
||||
//public static string g_ipGDFL;
|
||||
public static string g_ipGDFL;
|
||||
|
||||
//键值对集合:键为IP地址,值为Socket
|
||||
//将远程连接的客户端的IP地址和端口号存入集合中
|
||||
//public static Dictionary<string, Socket> g_dicSocketGDFL = new Dictionary<string, Socket>();
|
||||
public static Dictionary<string, Socket> g_dicSocketGDFL = new Dictionary<string, Socket>();
|
||||
|
||||
public static Socket g_socketSend;
|
||||
//public static TcpClient g_socketSend;
|
||||
|
||||
@ -58,7 +58,7 @@ namespace ZTTMS_Manage_yibayiyi_20230320
|
||||
|
||||
Others.g_gdflReceive = false;
|
||||
|
||||
g_ip = "41.244.68.61";
|
||||
//g_ip = "41.244.68.61";
|
||||
//g_ip = "127.0.0.1";
|
||||
g_port = 55000;
|
||||
|
||||
@ -70,27 +70,27 @@ namespace ZTTMS_Manage_yibayiyi_20230320
|
||||
|
||||
try
|
||||
{
|
||||
////在服务器端创建一个负责IP地址和端口号的Socket
|
||||
//g_socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
////g_socketWatch.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
|
||||
//在服务器端创建一个负责IP地址和端口号的Socket
|
||||
g_socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
//g_socketWatch.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
|
||||
|
||||
////string ip3 = "192.168.1.240";
|
||||
//IPAddress ip2 = IPAddress.Any;
|
||||
////创建端口号对象
|
||||
//Console.WriteLine("创建端口号对象");
|
||||
////IPEndPoint point = new IPEndPoint(IPAddress.Parse(ip3), g_port);
|
||||
//IPEndPoint point = new IPEndPoint(ip2, g_port);
|
||||
////监听
|
||||
//g_socketWatch.Bind(point);
|
||||
//g_socketWatch.Listen(10);
|
||||
//string ip3 = "192.168.1.240";
|
||||
IPAddress ip2 = IPAddress.Any;
|
||||
//创建端口号对象
|
||||
Console.WriteLine("创建端口号对象");
|
||||
//IPEndPoint point = new IPEndPoint(IPAddress.Parse(ip3), g_port);
|
||||
IPEndPoint point = new IPEndPoint(ip2, g_port);
|
||||
//监听
|
||||
g_socketWatch.Bind(point);
|
||||
g_socketWatch.Listen(10);
|
||||
|
||||
//trdConnect = new Thread(ListenConnect);
|
||||
//trdConnect.IsBackground = true;
|
||||
//trdConnect.Start(g_socketWatch);
|
||||
|
||||
trdConnect = new Thread(ListenConnectClient);
|
||||
trdConnect = new Thread(ListenConnect);
|
||||
trdConnect.IsBackground = true;
|
||||
trdConnect.Start();
|
||||
trdConnect.Start(g_socketWatch);
|
||||
|
||||
//trdConnect = new Thread(ListenConnectClient);
|
||||
//trdConnect.IsBackground = true;
|
||||
//trdConnect.Start();
|
||||
|
||||
Thread trdDataSplit = new Thread(DataSplit);
|
||||
trdDataSplit.IsBackground = true;
|
||||
@ -497,7 +497,7 @@ namespace ZTTMS_Manage_yibayiyi_20230320
|
||||
Others.g_gdflReceive = false;
|
||||
Others.g_socketSendGDFL = null;
|
||||
Others.g_socketSendGDFL.Close();
|
||||
//Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
CallInvokeUIUpdate("UpdateState", "连接断开");
|
||||
|
||||
GDFLPortStateForm.strState = "连接断开";
|
||||
@ -644,230 +644,230 @@ namespace ZTTMS_Manage_yibayiyi_20230320
|
||||
|
||||
|
||||
#region Connnect
|
||||
//private void ListenConnect(object o)
|
||||
//{
|
||||
// //等待客户端的连接,并且创建与之通信用的Socket
|
||||
// Socket socketWatch = o as Socket;
|
||||
// while (true)
|
||||
// {
|
||||
// Thread.Sleep(1);
|
||||
// try
|
||||
// {
|
||||
// //负责和客户端通信的Socket
|
||||
// Others.g_socketSendGDFL = socketWatch.Accept();
|
||||
|
||||
// Others.g_socketSendGDFL.IOControl(IOControlCode.KeepAliveValues, GetKeepAliveData(), null);
|
||||
// Others.g_socketSendGDFL.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
|
||||
|
||||
// Others.g_ipGDFL = Others.g_socketSendGDFL.RemoteEndPoint.ToString();
|
||||
// Console.WriteLine(Others.g_ipGDFL);
|
||||
|
||||
// if (!Others.g_dicSocketGDFL.ContainsKey(Others.g_ipGDFL))
|
||||
// {
|
||||
// //将远程连接的客户端的IP地址和端口号存入集合中
|
||||
// Others.g_dicSocketGDFL.Add(Others.g_ipGDFL, Others.g_socketSendGDFL);
|
||||
// Others.g_gdflReceive = true;
|
||||
|
||||
// Console.WriteLine("新增远程连接:" + Others.g_ipGDFL + "\r" + DateTime.Now);
|
||||
|
||||
// EveryDayLog.WriteGDFL("光电分离腔新增远程连接:" + Others.g_ipGDFL);
|
||||
|
||||
// CallInvokeUIUpdate("UpdatelblIP", "IP:" + Others.g_ipGDFL);
|
||||
// CallInvokeUIUpdate("UpdatelblState", "连接成功");
|
||||
|
||||
// GDFLPortStateForm.strState = "连接成功";
|
||||
// GDFLPortStateForm.change();
|
||||
|
||||
|
||||
// List<object> list = new List<object>
|
||||
// {
|
||||
// Others.g_ipGDFL,
|
||||
// Others.g_socketSendGDFL
|
||||
// };
|
||||
|
||||
// //开启一个新线程不停接收客户端的数据
|
||||
// Thread trdReceive = new Thread(DataReceive);
|
||||
// trdReceive.IsBackground = true;
|
||||
// trdReceive.Start(list);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if (!Others.g_dicSocketGDFL[Others.g_ipGDFL].Connected)
|
||||
// {
|
||||
// Console.WriteLine(Others.g_ipGDFL + "连接已断开!");
|
||||
// try
|
||||
// {
|
||||
// Others.g_dicSocketGDFL[Others.g_ipGDFL].Shutdown(SocketShutdown.Both);
|
||||
// }
|
||||
// catch
|
||||
// {
|
||||
|
||||
// }
|
||||
// finally
|
||||
// {
|
||||
// Others.g_dicSocketGDFL[Others.g_ipGDFL].Close(100);
|
||||
// Others.g_dicSocketGDFL[Others.g_ipGDFL].Dispose();
|
||||
// }
|
||||
// Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
|
||||
// //将远程连接的客户端的IP地址和端口号存入集合中
|
||||
// Others.g_dicSocketGDFL.Add(Others.g_ipGDFL, Others.g_socketSendGDFL);
|
||||
// Others.g_gdflReceive = true;
|
||||
|
||||
// Console.WriteLine("新增远程连接:" + Others.g_ipGDFL + "\r" + DateTime.Now);
|
||||
|
||||
// CallInvokeUIUpdate("UpdatelblIP", "IP:" + Others.g_ipGDFL);
|
||||
// CallInvokeUIUpdate("UpdatelblState", "连接成功");
|
||||
|
||||
// GDFLPortStateForm.strState = "连接成功";
|
||||
// GDFLPortStateForm.change();
|
||||
|
||||
// ////根据1min内接收到的心跳包数量判断连接是否正常
|
||||
// //timerCheckConnectState.Interval = 60 * 1000;
|
||||
// //timerCheckConnectState.Enabled = true;
|
||||
// //timerCheckConnectState.Start();
|
||||
// //EveryDayLog.WriteGDFL("定时器(判断接收到的心跳包数量是否正常)已开启!");
|
||||
|
||||
// ////开启一个新线程不停接收客户端的数据
|
||||
// //Thread trdReceive = new Thread(DataReceive);
|
||||
// //trdReceive.IsBackground = true;
|
||||
// //trdReceive.Start(Others.g_socketSendGDFL);
|
||||
|
||||
// List<object> list = new List<object>
|
||||
// {
|
||||
// Others.g_ipGDFL,
|
||||
// Others.g_socketSendGDFL
|
||||
// };
|
||||
|
||||
// //开启一个新线程不停接收客户端的数据
|
||||
// Thread trdReceive = new Thread(DataReceive);
|
||||
// trdReceive.IsBackground = true;
|
||||
// trdReceive.Start(list);
|
||||
|
||||
// continue;
|
||||
// }
|
||||
|
||||
// else if (Others.g_dicSocketGDFL[Others.g_ipGDFL].Poll(1000, SelectMode.SelectRead))
|
||||
// {
|
||||
// try
|
||||
// {
|
||||
// Others.g_dicSocketGDFL[Others.g_ipGDFL].Shutdown(SocketShutdown.Both);
|
||||
// }
|
||||
// catch
|
||||
// {
|
||||
|
||||
// }
|
||||
// finally
|
||||
// {
|
||||
// Others.g_dicSocketGDFL[Others.g_ipGDFL].Close(100);
|
||||
// Others.g_dicSocketGDFL[Others.g_ipGDFL].Dispose();
|
||||
// }
|
||||
// Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
// Others.g_gdflReceive = false;
|
||||
// Console.WriteLine("ListenConnectError移除远程连接:" + Others.g_ipGDFL + "\r" + DateTime.Now);
|
||||
// CallInvokeUIUpdate("UpdatelblState", "连接断开");
|
||||
|
||||
// GDFLPortStateForm.strState = "连接断开";
|
||||
// GDFLPortStateForm.change();
|
||||
|
||||
// //将远程连接的客户端的IP地址和端口号存入集合中
|
||||
// Others.g_dicSocketGDFL.Add(Others.g_ipGDFL, Others.g_socketSendGDFL);
|
||||
// Others.g_gdflReceive = true;
|
||||
|
||||
// Console.WriteLine("新增远程连接:" + Others.g_ipGDFL + "\r" + DateTime.Now);
|
||||
|
||||
// CallInvokeUIUpdate("UpdatelblIP", "IP:" + Others.g_ipGDFL);
|
||||
// CallInvokeUIUpdate("UpdatelblState", "连接成功");
|
||||
|
||||
// GDFLPortStateForm.strState = "连接成功";
|
||||
// GDFLPortStateForm.change();
|
||||
|
||||
// ////根据1min内接收到的心跳包数量判断连接是否正常
|
||||
// //timerCheckConnectState.Interval = 60 * 1000;
|
||||
// //timerCheckConnectState.Enabled = true;
|
||||
// //timerCheckConnectState.Start();
|
||||
// //EveryDayLog.WriteGDFL("定时器(判断接收到的心跳包数量是否正常)已开启!");
|
||||
|
||||
// ////开启一个新线程不停接收客户端的数据
|
||||
// //Thread trdReceive = new Thread(DataReceive);
|
||||
// //trdReceive.IsBackground = true;
|
||||
// //trdReceive.Start(Others.g_socketSendGDFL);
|
||||
|
||||
// List<object> list = new List<object>
|
||||
// {
|
||||
// Others.g_ipGDFL,
|
||||
// Others.g_socketSendGDFL
|
||||
// };
|
||||
|
||||
// //开启一个新线程不停接收客户端的数据
|
||||
// Thread trdReceive = new Thread(DataReceive);
|
||||
// trdReceive.IsBackground = true;
|
||||
// trdReceive.Start(list);
|
||||
|
||||
// continue;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// Console.WriteLine("GDFLListenConnectError:" + ex.Message);
|
||||
// EveryDayLog.WriteErrorGDFL("GDFLListenConnectError:" + ex.Message);
|
||||
|
||||
// Console.WriteLine(Others.g_ipGDFL + "连接已断开!");
|
||||
// try
|
||||
// {
|
||||
// Others.g_dicSocketGDFL[Others.g_ipGDFL].Shutdown(SocketShutdown.Both);
|
||||
// }
|
||||
// catch
|
||||
// {
|
||||
|
||||
// }
|
||||
// finally
|
||||
// {
|
||||
// Others.g_dicSocketGDFL[Others.g_ipGDFL].Close(100);
|
||||
// Others.g_dicSocketGDFL[Others.g_ipGDFL].Dispose();
|
||||
// }
|
||||
// Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
private bool Connect(string ip, int port)
|
||||
private void ListenConnect(object o)
|
||||
{
|
||||
if (Others.g_gdflReceive == true)
|
||||
//等待客户端的连接,并且创建与之通信用的Socket
|
||||
Socket socketWatch = o as Socket;
|
||||
while (true)
|
||||
{
|
||||
Console.WriteLine("光电分离腔连接中,无需再连接!");
|
||||
return true;
|
||||
Thread.Sleep(1);
|
||||
try
|
||||
{
|
||||
//负责和客户端通信的Socket
|
||||
Others.g_socketSendGDFL = socketWatch.Accept();
|
||||
|
||||
Others.g_socketSendGDFL.IOControl(IOControlCode.KeepAliveValues, GetKeepAliveData(), null);
|
||||
Others.g_socketSendGDFL.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
|
||||
|
||||
Others.g_ipGDFL = Others.g_socketSendGDFL.RemoteEndPoint.ToString();
|
||||
Console.WriteLine(Others.g_ipGDFL);
|
||||
|
||||
if (!Others.g_dicSocketGDFL.ContainsKey(Others.g_ipGDFL))
|
||||
{
|
||||
//将远程连接的客户端的IP地址和端口号存入集合中
|
||||
Others.g_dicSocketGDFL.Add(Others.g_ipGDFL, Others.g_socketSendGDFL);
|
||||
Others.g_gdflReceive = true;
|
||||
|
||||
Console.WriteLine("新增远程连接:" + Others.g_ipGDFL + "\r" + DateTime.Now);
|
||||
|
||||
EveryDayLog.WriteGDFL("光电分离腔新增远程连接:" + Others.g_ipGDFL);
|
||||
|
||||
CallInvokeUIUpdate("UpdatelblIP", "IP:" + Others.g_ipGDFL);
|
||||
CallInvokeUIUpdate("UpdatelblState", "连接成功");
|
||||
|
||||
GDFLPortStateForm.strState = "连接成功";
|
||||
GDFLPortStateForm.change();
|
||||
|
||||
|
||||
List<object> list = new List<object>
|
||||
{
|
||||
Others.g_ipGDFL,
|
||||
Others.g_socketSendGDFL
|
||||
};
|
||||
|
||||
//开启一个新线程不停接收客户端的数据
|
||||
Thread trdReceive = new Thread(DataReceive);
|
||||
trdReceive.IsBackground = true;
|
||||
trdReceive.Start(list);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!Others.g_dicSocketGDFL[Others.g_ipGDFL].Connected)
|
||||
{
|
||||
Console.WriteLine(Others.g_ipGDFL + "连接已断开!");
|
||||
try
|
||||
{
|
||||
Others.g_dicSocketGDFL[Others.g_ipGDFL].Shutdown(SocketShutdown.Both);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
Others.g_dicSocketGDFL[Others.g_ipGDFL].Close(100);
|
||||
Others.g_dicSocketGDFL[Others.g_ipGDFL].Dispose();
|
||||
}
|
||||
Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
|
||||
//将远程连接的客户端的IP地址和端口号存入集合中
|
||||
Others.g_dicSocketGDFL.Add(Others.g_ipGDFL, Others.g_socketSendGDFL);
|
||||
Others.g_gdflReceive = true;
|
||||
|
||||
Console.WriteLine("新增远程连接:" + Others.g_ipGDFL + "\r" + DateTime.Now);
|
||||
|
||||
CallInvokeUIUpdate("UpdatelblIP", "IP:" + Others.g_ipGDFL);
|
||||
CallInvokeUIUpdate("UpdatelblState", "连接成功");
|
||||
|
||||
GDFLPortStateForm.strState = "连接成功";
|
||||
GDFLPortStateForm.change();
|
||||
|
||||
////根据1min内接收到的心跳包数量判断连接是否正常
|
||||
//timerCheckConnectState.Interval = 60 * 1000;
|
||||
//timerCheckConnectState.Enabled = true;
|
||||
//timerCheckConnectState.Start();
|
||||
//EveryDayLog.WriteGDFL("定时器(判断接收到的心跳包数量是否正常)已开启!");
|
||||
|
||||
////开启一个新线程不停接收客户端的数据
|
||||
//Thread trdReceive = new Thread(DataReceive);
|
||||
//trdReceive.IsBackground = true;
|
||||
//trdReceive.Start(Others.g_socketSendGDFL);
|
||||
|
||||
List<object> list = new List<object>
|
||||
{
|
||||
Others.g_ipGDFL,
|
||||
Others.g_socketSendGDFL
|
||||
};
|
||||
|
||||
//开启一个新线程不停接收客户端的数据
|
||||
Thread trdReceive = new Thread(DataReceive);
|
||||
trdReceive.IsBackground = true;
|
||||
trdReceive.Start(list);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
else if (Others.g_dicSocketGDFL[Others.g_ipGDFL].Poll(1000, SelectMode.SelectRead))
|
||||
{
|
||||
try
|
||||
{
|
||||
Others.g_dicSocketGDFL[Others.g_ipGDFL].Shutdown(SocketShutdown.Both);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
Others.g_dicSocketGDFL[Others.g_ipGDFL].Close(100);
|
||||
Others.g_dicSocketGDFL[Others.g_ipGDFL].Dispose();
|
||||
}
|
||||
Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
Others.g_gdflReceive = false;
|
||||
Console.WriteLine("ListenConnectError移除远程连接:" + Others.g_ipGDFL + "\r" + DateTime.Now);
|
||||
CallInvokeUIUpdate("UpdatelblState", "连接断开");
|
||||
|
||||
GDFLPortStateForm.strState = "连接断开";
|
||||
GDFLPortStateForm.change();
|
||||
|
||||
//将远程连接的客户端的IP地址和端口号存入集合中
|
||||
Others.g_dicSocketGDFL.Add(Others.g_ipGDFL, Others.g_socketSendGDFL);
|
||||
Others.g_gdflReceive = true;
|
||||
|
||||
Console.WriteLine("新增远程连接:" + Others.g_ipGDFL + "\r" + DateTime.Now);
|
||||
|
||||
CallInvokeUIUpdate("UpdatelblIP", "IP:" + Others.g_ipGDFL);
|
||||
CallInvokeUIUpdate("UpdatelblState", "连接成功");
|
||||
|
||||
GDFLPortStateForm.strState = "连接成功";
|
||||
GDFLPortStateForm.change();
|
||||
|
||||
////根据1min内接收到的心跳包数量判断连接是否正常
|
||||
//timerCheckConnectState.Interval = 60 * 1000;
|
||||
//timerCheckConnectState.Enabled = true;
|
||||
//timerCheckConnectState.Start();
|
||||
//EveryDayLog.WriteGDFL("定时器(判断接收到的心跳包数量是否正常)已开启!");
|
||||
|
||||
////开启一个新线程不停接收客户端的数据
|
||||
//Thread trdReceive = new Thread(DataReceive);
|
||||
//trdReceive.IsBackground = true;
|
||||
//trdReceive.Start(Others.g_socketSendGDFL);
|
||||
|
||||
List<object> list = new List<object>
|
||||
{
|
||||
Others.g_ipGDFL,
|
||||
Others.g_socketSendGDFL
|
||||
};
|
||||
|
||||
//开启一个新线程不停接收客户端的数据
|
||||
Thread trdReceive = new Thread(DataReceive);
|
||||
trdReceive.IsBackground = true;
|
||||
trdReceive.Start(list);
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("GDFLListenConnectError:" + ex.Message);
|
||||
EveryDayLog.WriteErrorGDFL("GDFLListenConnectError:" + ex.Message);
|
||||
|
||||
Console.WriteLine(Others.g_ipGDFL + "连接已断开!");
|
||||
try
|
||||
{
|
||||
Others.g_dicSocketGDFL[Others.g_ipGDFL].Shutdown(SocketShutdown.Both);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
Others.g_dicSocketGDFL[Others.g_ipGDFL].Close(100);
|
||||
Others.g_dicSocketGDFL[Others.g_ipGDFL].Dispose();
|
||||
}
|
||||
Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
}
|
||||
}
|
||||
|
||||
Others.g_socketSendGDFL = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
try
|
||||
{
|
||||
Others.g_socketSendGDFL.IOControl(IOControlCode.KeepAliveValues, GetKeepAliveData(), null);
|
||||
Others.g_socketSendGDFL.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
|
||||
|
||||
IPEndPoint point = new IPEndPoint(IPAddress.Parse(ip), port);
|
||||
Others.g_socketSendGDFL.Connect(point);
|
||||
|
||||
Others.g_gdflReceive = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("光电分离腔服务器未开启:" + ex.Message);
|
||||
EveryDayLog.WriteGDFL("光电分离腔服务器未开启:" + ex.Message);
|
||||
waitReConnect = false;
|
||||
lblConnectState.Text = "服务器未开启";
|
||||
Others.g_gdflReceive = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
Console.WriteLine("光电分离腔已连接服务器!");
|
||||
EveryDayLog.WriteGDFL("光电分离腔已连接服务器!");
|
||||
waitReConnect = true;
|
||||
Others.g_gdflReceive = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
//private bool Connect(string ip, int port)
|
||||
//{
|
||||
// if (Others.g_gdflReceive == true)
|
||||
// {
|
||||
// Console.WriteLine("光电分离腔连接中,无需再连接!");
|
||||
// return true;
|
||||
// }
|
||||
|
||||
// Others.g_socketSendGDFL = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
// try
|
||||
// {
|
||||
// Others.g_socketSendGDFL.IOControl(IOControlCode.KeepAliveValues, GetKeepAliveData(), null);
|
||||
// Others.g_socketSendGDFL.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
|
||||
|
||||
// IPEndPoint point = new IPEndPoint(IPAddress.Parse(ip), port);
|
||||
// Others.g_socketSendGDFL.Connect(point);
|
||||
|
||||
// Others.g_gdflReceive = true;
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// Console.WriteLine("光电分离腔服务器未开启:" + ex.Message);
|
||||
// EveryDayLog.WriteGDFL("光电分离腔服务器未开启:" + ex.Message);
|
||||
// waitReConnect = false;
|
||||
// lblConnectState.Text = "服务器未开启";
|
||||
// Others.g_gdflReceive = false;
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// Console.WriteLine("光电分离腔已连接服务器!");
|
||||
// EveryDayLog.WriteGDFL("光电分离腔已连接服务器!");
|
||||
// waitReConnect = true;
|
||||
// Others.g_gdflReceive = true;
|
||||
// return true;
|
||||
//}
|
||||
|
||||
private byte[] GetKeepAliveData()
|
||||
{
|
||||
uint dummy = 0;
|
||||
@ -878,166 +878,166 @@ namespace ZTTMS_Manage_yibayiyi_20230320
|
||||
return inOptionValues;
|
||||
}
|
||||
|
||||
private bool WaitReConnect(string ip, int port)
|
||||
{
|
||||
waitReConnect = false;
|
||||
//private bool WaitReConnect(string ip, int port)
|
||||
//{
|
||||
// waitReConnect = false;
|
||||
|
||||
Console.WriteLine("光电分离腔开始进行三次握手!");
|
||||
// Console.WriteLine("光电分离腔开始进行三次握手!");
|
||||
|
||||
try
|
||||
{
|
||||
//进行三次握手
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
waitReConnect = Connect(ip, port);
|
||||
DateTime time = DateTime.Now;
|
||||
while ((DateTime.Now - time).TotalSeconds < 5 && !waitReConnect)
|
||||
{
|
||||
Thread.Sleep(1);
|
||||
}
|
||||
// try
|
||||
// {
|
||||
// //进行三次握手
|
||||
// for (int i = 0; i < 3; i++)
|
||||
// {
|
||||
// waitReConnect = Connect(ip, port);
|
||||
// DateTime time = DateTime.Now;
|
||||
// while ((DateTime.Now - time).TotalSeconds < 5 && !waitReConnect)
|
||||
// {
|
||||
// Thread.Sleep(1);
|
||||
// }
|
||||
|
||||
if (waitReConnect == true)
|
||||
{
|
||||
Console.WriteLine("连接成功!");
|
||||
// if (waitReConnect == true)
|
||||
// {
|
||||
// Console.WriteLine("连接成功!");
|
||||
|
||||
Others.g_gdflReceive = true;
|
||||
// Others.g_gdflReceive = true;
|
||||
|
||||
lblConnectState.Text = "连接成功";
|
||||
return true;
|
||||
}
|
||||
// lblConnectState.Text = "连接成功";
|
||||
// return true;
|
||||
// }
|
||||
|
||||
if (Others.g_gdflReceive == true)
|
||||
{
|
||||
Console.WriteLine("连接中,无需再连接!");
|
||||
return true;
|
||||
}
|
||||
// if (Others.g_gdflReceive == true)
|
||||
// {
|
||||
// Console.WriteLine("连接中,无需再连接!");
|
||||
// return true;
|
||||
// }
|
||||
|
||||
Console.WriteLine(i + 1 + ":超时5s重连!");
|
||||
lblConnectState.Text = "超时重连";
|
||||
// Console.WriteLine(i + 1 + ":超时5s重连!");
|
||||
// lblConnectState.Text = "超时重连";
|
||||
|
||||
Others.g_gdflReceive = false;
|
||||
Others.g_socketSendGDFL = null;
|
||||
}
|
||||
Console.WriteLine("光电分离腔三次都没有超时重连成功!");
|
||||
lblConnectState.Text = "超时重连3次失败";
|
||||
Others.g_gdflReceive = false;
|
||||
// Others.g_gdflReceive = false;
|
||||
// Others.g_socketSendGDFL = null;
|
||||
// }
|
||||
// Console.WriteLine("光电分离腔三次都没有超时重连成功!");
|
||||
// lblConnectState.Text = "超时重连3次失败";
|
||||
// Others.g_gdflReceive = false;
|
||||
|
||||
string message = "无法与光电分离腔建立连接";
|
||||
reConnectTime++;
|
||||
// string message = "无法与光电分离腔建立连接";
|
||||
// reConnectTime++;
|
||||
|
||||
if (reConnectTime >= 5)
|
||||
{
|
||||
reConnectTime = 0;
|
||||
// if (reConnectTime >= 5)
|
||||
// {
|
||||
// reConnectTime = 0;
|
||||
|
||||
g_sqlRecordTime = DateTime.Now;
|
||||
int cycleTime = 0;
|
||||
// g_sqlRecordTime = DateTime.Now;
|
||||
// int cycleTime = 0;
|
||||
|
||||
while (cycleTime < 3)
|
||||
{
|
||||
string sqlId = IdHelper.GetId();
|
||||
int num = 0;
|
||||
// while (cycleTime < 3)
|
||||
// {
|
||||
// string sqlId = IdHelper.GetId();
|
||||
// int num = 0;
|
||||
|
||||
string sql = $"insert into tb_gdflstateinfo_data(id,record_time,equipment_type,equipment_id,version_number,error_code) " +
|
||||
$"values('{sqlId}','{g_sqlRecordTime}','{g_sqlTerminalEquipmentType}','{g_sqlTerminalEquipmentId}','{g_sqlVersionNumber}','{message}');";
|
||||
// string sql = $"insert into tb_gdflstateinfo_data(id,record_time,equipment_type,equipment_id,version_number,error_code) " +
|
||||
// $"values('{sqlId}','{g_sqlRecordTime}','{g_sqlTerminalEquipmentType}','{g_sqlTerminalEquipmentId}','{g_sqlVersionNumber}','{message}');";
|
||||
|
||||
try
|
||||
{
|
||||
num = MySQL.ExecuteSql(sql);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("LinkStateError:" + ex.ToString());
|
||||
EveryDayLog.WriteErrorGDFL("光电分离腔存储连接状态错误:" + ex.Message);
|
||||
}
|
||||
// try
|
||||
// {
|
||||
// num = MySQL.ExecuteSql(sql);
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// Console.WriteLine("LinkStateError:" + ex.ToString());
|
||||
// EveryDayLog.WriteErrorGDFL("光电分离腔存储连接状态错误:" + ex.Message);
|
||||
// }
|
||||
|
||||
if (num > 0)
|
||||
{
|
||||
Console.WriteLine("光电分离腔连接状态插入成功!" + DateTime.Now);
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("光电分离腔连接状态插入失败,重新进行插入!" + DateTime.Now);
|
||||
EveryDayLog.WriteErrorGDFL("光电分离腔连接状态插入失败,重新进行插入!");
|
||||
}
|
||||
// if (num > 0)
|
||||
// {
|
||||
// Console.WriteLine("光电分离腔连接状态插入成功!" + DateTime.Now);
|
||||
// break;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Console.WriteLine("光电分离腔连接状态插入失败,重新进行插入!" + DateTime.Now);
|
||||
// EveryDayLog.WriteErrorGDFL("光电分离腔连接状态插入失败,重新进行插入!");
|
||||
// }
|
||||
|
||||
cycleTime++;
|
||||
Thread.Sleep(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
EveryDayLog.WriteErrorGDFL("WaitReConnectError:" + ex.Message);
|
||||
}
|
||||
// cycleTime++;
|
||||
// Thread.Sleep(1);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// Console.WriteLine(ex.Message);
|
||||
// EveryDayLog.WriteErrorGDFL("WaitReConnectError:" + ex.Message);
|
||||
// }
|
||||
|
||||
return false;
|
||||
}
|
||||
// return false;
|
||||
//}
|
||||
|
||||
public void ConnectDispose()
|
||||
{
|
||||
if (Others.g_socketSendGDFL == null)
|
||||
{
|
||||
EveryDayLog.WriteGDFL("光电分离腔的通信连接已断开!");
|
||||
//public void ConnectDispose()
|
||||
//{
|
||||
// if (Others.g_socketSendGDFL == null)
|
||||
// {
|
||||
// EveryDayLog.WriteGDFL("光电分离腔的通信连接已断开!");
|
||||
|
||||
return;
|
||||
}
|
||||
// return;
|
||||
// }
|
||||
|
||||
if (Others.g_socketSendGDFL.Connected)
|
||||
{
|
||||
Others.g_socketSendGDFL.Close();
|
||||
Others.g_socketSendGDFL.Dispose();
|
||||
// if (Others.g_socketSendGDFL.Connected)
|
||||
// {
|
||||
// Others.g_socketSendGDFL.Close();
|
||||
// Others.g_socketSendGDFL.Dispose();
|
||||
|
||||
Others.g_gdflReceive = false;
|
||||
Others.g_socketSendGDFL = null;
|
||||
}
|
||||
// Others.g_gdflReceive = false;
|
||||
// Others.g_socketSendGDFL = null;
|
||||
// }
|
||||
|
||||
EveryDayLog.WriteGDFL("光电分离腔的通信连接已断开!");
|
||||
}
|
||||
// EveryDayLog.WriteGDFL("光电分离腔的通信连接已断开!");
|
||||
//}
|
||||
|
||||
private void ListenConnectClient()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
if (Others.g_gdflReceive == false || Others.g_socketSendGDFL == null || !Others.g_socketSendGDFL.Connected)
|
||||
{
|
||||
Others.g_gdflReceive = false;
|
||||
//private void ListenConnectClient()
|
||||
//{
|
||||
// while (true)
|
||||
// {
|
||||
// if (Others.g_gdflReceive == false || Others.g_socketSendGDFL == null || !Others.g_socketSendGDFL.Connected)
|
||||
// {
|
||||
// Others.g_gdflReceive = false;
|
||||
|
||||
bool result = WaitReConnect(g_ip, g_port);
|
||||
// bool result = WaitReConnect(g_ip, g_port);
|
||||
|
||||
Console.WriteLine("光电分离腔连接情况:" + result);
|
||||
// Console.WriteLine("光电分离腔连接情况:" + result);
|
||||
|
||||
if (result)
|
||||
{
|
||||
Others.g_gdflReceive = true;
|
||||
// if (result)
|
||||
// {
|
||||
// Others.g_gdflReceive = true;
|
||||
|
||||
CallInvokeUIUpdate("UpdatelblIP", "IP:" + g_ip);
|
||||
CallInvokeUIUpdate("UpdatelblState", "连接成功");
|
||||
// CallInvokeUIUpdate("UpdatelblIP", "IP:" + g_ip);
|
||||
// CallInvokeUIUpdate("UpdatelblState", "连接成功");
|
||||
|
||||
//timerCheckConnectState.Enabled = true;
|
||||
//timerCheckConnectState.Interval = 60 * 1000;
|
||||
//timerCheckConnectState.Stop();
|
||||
// //timerCheckConnectState.Enabled = true;
|
||||
// //timerCheckConnectState.Interval = 60 * 1000;
|
||||
// //timerCheckConnectState.Stop();
|
||||
|
||||
//开启一个新线程不停接收客户端的数据
|
||||
Thread trdReceive = new Thread(DataReceive);
|
||||
trdReceive.IsBackground = true;
|
||||
trdReceive.Start(Others.g_socketSendGDFL);
|
||||
}
|
||||
else
|
||||
{
|
||||
CallInvokeUIUpdate("UpdatelblState", "连接失败");
|
||||
Others.g_gdflReceive = false;
|
||||
}
|
||||
// //开启一个新线程不停接收客户端的数据
|
||||
// Thread trdReceive = new Thread(DataReceive);
|
||||
// trdReceive.IsBackground = true;
|
||||
// trdReceive.Start(Others.g_socketSendGDFL);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// CallInvokeUIUpdate("UpdatelblState", "连接失败");
|
||||
// Others.g_gdflReceive = false;
|
||||
// }
|
||||
|
||||
EveryDayLog.WriteGDFL("光电分离腔连接,连接状态:" + lblConnectState.Text);
|
||||
}
|
||||
else
|
||||
{
|
||||
Thread.Sleep(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
// EveryDayLog.WriteGDFL("光电分离腔连接,连接状态:" + lblConnectState.Text);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Thread.Sleep(1);
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
#endregion
|
||||
|
||||
|
||||
@ -1140,22 +1140,22 @@ namespace ZTTMS_Manage_yibayiyi_20230320
|
||||
Console.WriteLine("GDFLReceiveError:" + ex.Message);
|
||||
EveryDayLog.WriteErrorGDFL("GDFLReceiveError:" + ex.Message);
|
||||
|
||||
//try
|
||||
//{
|
||||
// Others.g_dicSocketGDFL[Others.g_ipGDFL].Shutdown(SocketShutdown.Both);
|
||||
//}
|
||||
//catch
|
||||
//{
|
||||
try
|
||||
{
|
||||
Others.g_dicSocketGDFL[Others.g_ipGDFL].Shutdown(SocketShutdown.Both);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
//}
|
||||
//finally
|
||||
//{
|
||||
// Others.g_dicSocketGDFL[Others.g_ipGDFL].Close(100);
|
||||
// Others.g_dicSocketGDFL[Others.g_ipGDFL].Dispose();
|
||||
//}
|
||||
}
|
||||
finally
|
||||
{
|
||||
Others.g_dicSocketGDFL[Others.g_ipGDFL].Close(100);
|
||||
Others.g_dicSocketGDFL[Others.g_ipGDFL].Dispose();
|
||||
}
|
||||
|
||||
//Console.WriteLine(Others.g_ipGDFL + "连接已断开!");
|
||||
//Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
Console.WriteLine(Others.g_ipGDFL + "连接已断开!");
|
||||
Others.g_dicSocketGDFL.Remove(Others.g_ipGDFL);
|
||||
|
||||
Others.g_gdflReceive = false;
|
||||
Others.g_socketSendGDFL = null;
|
||||
@ -1165,7 +1165,7 @@ namespace ZTTMS_Manage_yibayiyi_20230320
|
||||
GDFLPortStateForm.strState = "连接断开";
|
||||
GDFLPortStateForm.change();
|
||||
|
||||
ConnectDispose();
|
||||
//ConnectDispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user