My Main просто подключается через TCP к удаленному хосту и считывает поток, чтобы определить вес.
Код: Выделить всё
public static void Main(String[] args)
{
TcpClient tcpClient = Connect.ConnectionSetup(IPAddress.Parse(ipAddress), portNumber);
NetworkStream netStream = tcpClient.GetStream();
while (true)
{
var receivedString = String.Empty;
var timestamp = DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss.fff");
var response = Response.Read(netStream, receivedString);
Console.WriteLine($"{timestamp} - {response}");
Thread.Sleep(500);
}
}
Код: Выделить всё
private static string command = "READ\r\n";
public static string Read(NetworkStream netStream, string receivedString)
{
byte[] commandBuffer;
byte[] readingBuffer;
commandBuffer = Encoding.UTF8.GetBytes(command);
netStream.Write(commandBuffer, 0, commandBuffer.Length);
if (netStream.DataAvailable)
{
readingBuffer = new byte[256];
var response = netStream.Read(readingBuffer, 0, readingBuffer.Length);
receivedString += Encoding.ASCII.GetString(readingBuffer, 0, response);
}
return receivedString;
}
Зная, что строка, полученная от весов, строится следующим образом:
Код: Выделить всё
ST,NT, 0,kg
Код: Выделить всё
public static string DoubleWeighing (NetworkStream netStream, string receivedString)
{
var firstResponse = Read(netStream, receivedString).Trim();
string[] splittedFirstResponse = firstResponse.Split(',');
var firstWeight = Convert.ToDouble(splittedFirstResponse[2]);
DateTime firstWeightTime = DateTime.Now;
var secondResponse = Read(netStream, receivedString).Trim();
string[] splittedSecondResponse = secondResponse.Split(',');
var secondWeight = Convert.ToDouble(splittedSecondResponse[2]);
DateTime secondWeightTime = DateTime.Now;
TimeSpan timeDifference = secondWeightTime - firstWeightTime;
if (secondWeight != firstWeight && secondWeight != 0 && timeDifference.TotalSeconds
Подробнее здесь: [url]https://stackoverflow.com/questions/78998177/read-weight-from-a-weighing-scale-is-it-possibile-to-sum-2-consecutive-weighing[/url]