Как преобразовать данные, полученные из последовательного порта
У меня есть машина для измерения с металлической полосой, из которой я импортирую данные в приложение C #, используя порт RS232.Ситуация выглядит так:
на машине нет документации, поэтому, поиграв с кучей комбинаций скоростей передачи, стоповых битов и четности, мне удалось импортировать правильное значение с машины, нозначение извлекается так: 11+myvalue
или 11-myvalue
, где знак (+
или -
) правильный, мое значение верное, за исключением того, что оно должно быть float
.
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 7;
mySerialPort.Handshake = Handshake.None;
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
mySerialPort.Open();
MessageBox.Show("Connection was successfully established.");
}
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
indata = sp.ReadExisting();
this.Invoke(new EventHandler(displaydata_event));
}
Пример правильных значений: должно быть: +5.23
или -12.52
, но я получаю: 11+523
или 11-1252
Как мне избавиться от этого "11
" и получить правильныезначение.