You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

164 lines
4.6 KiB
C#

3 weeks ago
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
3 weeks ago
using System.Threading;
3 weeks ago
using System.Threading.Tasks;
using NewLife.Log;
using TouchSocket.Core;
using TouchSocket.Sockets;
3 weeks ago
using Timer = System.Timers.Timer;
3 weeks ago
namespace NDSD_Screwdriver.Tool
{
public class QingTcpClient2
{
3 weeks ago
public TighteningResult gitResult { get; }
3 weeks ago
3 weeks ago
public int TighteningStatus => gitResult.TighteningStatus;
public int IsOk { get; set; } = -1;
3 weeks ago
public string updateTime { get; set; }
3 weeks ago
private int eable = -1;
TcpClient tcpClient = new TcpClient();
private Timer timer1 = null;
public QingTcpClient2(string str = "192.168.5.212:4545")
{
3 weeks ago
gitResult = new TighteningResult();
3 weeks ago
tcpClient.Connecting = (client, e) => EasyTask.CompletedTask;//即将连接到服务器此时已经创建socket但是还未建立tcp
tcpClient.Connected = (client, e) => EasyTask.CompletedTask;//成功连接到服务器
tcpClient.Setup(new TouchSocketConfig()
.SetRemoteIPHost(str)
.ConfigureContainer(a =>
{
a.AddConsoleLogger();//添加一个日志注入
}));
tcpClient.Received = (client, e) =>
{
//从服务器收到信息。但是一般byteBlock和requestInfo会根据适配器呈现不同的值。
var mes = e.ByteBlock.Span.ToString(Encoding.ASCII);
3 weeks ago
var sb = Sub(mes);
3 weeks ago
XTrace.WriteLine("控制器返回:"+mes);
switch (sb)
{
case "0061":
gitResult.msg = mes;
XTrace.WriteLine(gitResult.Timestamp.ToFullString());
XTrace.WriteLine(gitResult.TighteningStatus.ToString());
client.Send("00200062001 \0");
break;
}
3 weeks ago
// switch (sb)
// {
// case "0002":
// switch (eable)
// {
// case 1:
// client.Send("00200043 \0");
// break;
// case 0:
// client.Send("00200042 \0");
// break;
// }
// eable = -1;
// break;
// case "0043":
// client.Send("00300064001 0000000000\0");
// break;
//
// case "0065":
// IsOk = mes.Substring(96, 19).ToInt();
// updateTime = mes.Substring(95, 1);
// break;
// }
// XTrace.WriteLine($"客户端接收到信息:{mes}");
3 weeks ago
return EasyTask.CompletedTask;
};
tcpClient.Connect();
3 weeks ago
Begin();
3 weeks ago
Thread.Sleep(100);
3 weeks ago
Satus();
3 weeks ago
timer1 = new Timer();
timer1.Enabled = true;
timer1.Elapsed += timer1_Tick;
timer1.Interval = 500; //设置时间间隔毫秒为单位单位Ms
timer1.Start();
3 weeks ago
3 weeks ago
}
private string Sub(string str)
{
string mes = "";
var length = str.TrimStart().Length;
3 weeks ago
if (length >= 9)
3 weeks ago
{
3 weeks ago
mes = str.Substring(4, 4);
3 weeks ago
}
3 weeks ago
if (mes == "0005" && length >= 24)
3 weeks ago
{
3 weeks ago
mes = str.Substring(20, 4);
3 weeks ago
}
return mes;
}
private void timer1_Tick(object sender, EventArgs e)
{
tcpClient.Send("00209999 \0");
}
public void Begin()
{
3 weeks ago
3 weeks ago
tcpClient.Send("00200001 \0");
}
public void Enable()
{
3 weeks ago
// XTrace.WriteLine("枪发送使能");
3 weeks ago
tcpClient.Send("00200043 \0");
3 weeks ago
}
public void Close()
{
3 weeks ago
// XTrace.WriteLine("枪发送关闭");
3 weeks ago
tcpClient.Send("00200042 \0");
3 weeks ago
}
public void Satus()
{
3 weeks ago
3 weeks ago
tcpClient.Send("00200060001 \0");
}
public void OK()
{
tcpClient.Send("00200062001 \0");
3 weeks ago
}
}
}