Непоследовательность чтения данных взвешивания из COMPORT в С#C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Непоследовательность чтения данных взвешивания из COMPORT в С#

Сообщение Anonymous »

Я пытаюсь создать приложение C# для чтения данных с весов (HLWagen IT1000). При использовании порта RS232 приложение смогло обнаружить и отобразить данные взвешивания. Вот мой код.

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

      private void Weighing_Load(object sender, EventArgs e)
{

string[] availablePorts = SerialPort.GetPortNames();
if (!availablePorts.Contains(comPort))
{
MessageBox.Show("Make sure the printer is connected to COM1.", "Serial
Port Not Found", MessageBoxButtons.OK, MessageBoxIcon.Warning);
Application.Exit();
return;

}

// Close and dispose of any existing serial port
if (_serialPort != null && _serialPort.IsOpen)
{
_serialPort.Close();
}
if (_serialPort != null)
{
_serialPort.Dispose();
}

// Create and configure a new SerialPort object
_serialPort = new SerialPort(comPort, BaudRate, Parity.None, 8,StopBits.One);
_serialPort.DataReceived += SerialPortOnDataReceived;

try
{
_serialPort.Open(); // Open the serial port

}
catch (Exception ex)
{
MessageBox.Show("Error opening the serial port: " + ex.Message, "Serial
Port Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}
private void SerialPortOnDataReceived(object sender,
SerialDataReceivedEventArgs serialDataReceivedEventArgs)
{
if (InvokeRequired)     // { SerialPortOnDataReceived(sender,
serialDataReceivedEventArgs); }));     //= str.Length)
{
// Handle the error here, such as by logging the error or displaying
a message to the user
return;
}

int endIndex = str.IndexOf("k", startIndex);
if (endIndex < 0 || endIndex > str.Length)
{
// Handle the error here, such as by logging the error or displaying
a message to the user
return;
}

string weightStr = str.Substring(startIndex, endIndex - startIndex);

//test display
//MessageBox.Show(weightStr);

// Trim the "k" character from the weight measurement
weightStr = weightStr.TrimEnd('k');

// Display the weight measurement and "S S"  tag in the label
weight_label.Text = $"{weightStr} kg";
weightStr = str.Substring(startIndex, endIndex - startIndex - 1);
current_weight =weightStr;
current_weight = float.Parse(weightStr);

using (StreamWriter writer = new StreamWriter("log_weight.txt", true))
{
writer.WriteLine(weightStr);
writer.Flush();
}

}
}
и вот результат:

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

S D      2.535 kg
S D      2.535 kg
S S      2.534 kg
S S      2.534 kg
S S      2.534 kg
S S      2.534 kg
S S      2.534 kg
S S      2.534 kg
S S      2.534 kg
S S      2.534 kg
S S      2.534 kg
S S      2.534 kg
S S      2.534 kg
S S      2.534 kg
S S      2.534 kg
S S      2.534 kg
S S      2.534 kg
S S      2.534 kg
S S      2.534 kg
S D      2.575 kg
S D      2.555 kg
но когда я использовал преобразователь RS-232 USB в последовательный преобразователь, используя тот же код, данные не были согласованными:

S S 2.570 кг
S D 2,565 кг
S D 2,535 кг

S D
2.
535 кг

S D
2,540
кг

S
D
2,550 кг

S
D
2,5
50 кг

S
D 2.
595 кг

S
D 2.
610 кг

S
D 2.
620 кг

S
D
2,625 кг

S
D 2,6
30 кг

S
D
2,630 кг
г

S
D 2,6
25 кг

S
D 2.
620 кг
S
D 2.
600 кг

S
D 2
.615 кг

S
D
2,575 кг
г

S
D 2
,565 кг

S D
2,555
кг

S
D
2,545
кг

S
D 2
.535 кг

S D
2.535
кг

S
D 2.
535 кг

S
D 2.
535 кг

S D
2,54
5 кг

S
D 2.
560 кг

S
D
2,555 кг
г

S
D 2.
555 кг

S
D
2,550 кг

S D
2,550
кг

S
D 2,5
50 кг

S
D 2,5
45 кг

S
D 2,4
75 кг

S
D
2,45
5 кг

S
D 2
.490 кг

S D
2,4
50 кг

S
D
2,355 кг

S
D 1.
615 кг

S
D 1.
425 кг

S
D 1.
405 кг

S
D 1
.410 кг

Мне нужна помощь, как обрабатывать такие данные, спасибо!


Подробнее здесь: https://stackoverflow.com/questions/784 ... in-c-sharp
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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