Я пишу небольшое приложение, которое клиент будет использовать для считывания данных со шкалы.
Проблема, с которой я сталкиваюсь, заключается в том, что существует ОГРОМНАЯ задержка с момента, когда весы действительно имеют вес, и онотображение в программном обеспечении.С гипертерминалом это точно и быстро, с кодом ниже после того, как он был запущен в течение приблизительно минуты, мне нужно подождать около 40 секунд для обновления счетчика.
Шкала установлена на скорость 19200 BAUD и не можетупадет ниже или пропустит показания.
Я использую SerialDataReceivedEventHandler, но я не уверен, что это самый быстрый из возможных способов.
ниже мой код, есть ли в любом случае, я могу ускорить это?
и я не могу позволить себе пропустить какие-либо показания
Как мне установить буфер или ускорить его, или я должен читать в байтах вместо использования readline?
Я попытался удалить все форматирование изстрока и просто записать ее в текстовый файл, к сожалению, это только сделало его медленнее.
private void StartReadBtn_Click(object sender, EventArgs e)
{
port = new SerialPort(ComLbl.Text, Convert.ToInt32(BaudLbl.Text), Parity.None, 8, StopBits.One);
try
{
port.Open();
}
catch
{
port.Close();
port.Open();
}
port.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
}
//Event Handler to read com port data
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
try
{
sp.Open();
}
catch
{
}
CommData = sp.ReadLine();
if (readingcount < 7)
{
readingcount++;
}
else
{
OldCom = Convert.ToInt32(oldData);
try
{
NewCom = Convert.ToDecimal(CommData.Substring(5, 5));
}
catch
{
//incase a string is caught with incorrect characters
}
label1.Invoke(new Action(() => label1.Text =CommData));
}
}
Мне нужно, чтобы это было достаточно отзывчивым, чтобы я мог фактически читать данные в программное обеспечение в реальном времени, а несекунд позади шкалы.Если я посмотрю на Гипертерминал, то масштаб передает около 60 строк данных каждую секунду, и мне нужно иметь возможность поймать их всех, жить