Считайте вес с весов: можно ли суммировать 2 последовательных взвешивания?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Считайте вес с весов: можно ли суммировать 2 последовательных взвешивания?

Сообщение Anonymous »

У меня проблема со считыванием веса с весов.
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);
}
}
Метод Read записывает команду READ и считывает из потока, чтобы вернуть вес в виде строки. Он устроен следующим образом

Код: Выделить всё

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
Я попробовал этот метод двойного взвешивания, чтобы определить общий вес по результатам двух взвешиваний, но он не работает. Этот метод выполняет два чтения: улавливает первый ответ и извлекает вес, улавливает второй и делает то же самое. Если разница во времени между ними составляет менее 60 секунд, это означает, что было проведено второе взвешивание. Таким образом, он суммирует два веса и заменяет вес во втором ответе новым весом, чтобы вернуть строку. Если двойного взвешивания не было, возвращается просто первый ответ.

Код: Выделить всё

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]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»