Lecture de données à partir d’un périphérique de balance Mettler Toledo à l’aide de C #

Je lis des données d’un périphérique Mettler Toledo en utilisant le code C #.

Voici mon code complet:

private SerialPort port = new SerialPort("COM1", 4800, Parity.None, 8, StopBits.One); public Inwardsfrm() { InitializeComponent(); port.DtrEnable = true; port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); } private void Inwardsfrm_Load(object sender, EventArgs e) { if (port.IsOpen == false) try { port.Open(); } catch (Exception oex) { MessageBox.Show(oex.ToSsortingng()); } } private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) { this.Invoke(new EventHandler(DoUpdate)); } private void DoUpdate(object s, EventArgs e) { Thread.Sleep(30); ssortingng data = port.ReadExisting() + port.ReadExisting(); try { richTextBox1.Text = data.Trim().Remove(0, 3); } catch (Exception f) { MessageBox.Show(f.Message.ToSsortingng()); } } 

Cela fonctionne très bien et affiche le résultat dans une étiquette nommée richTextBox1 , mais donne parfois l’erreur suivante:

Index et count doivent faire référence à location avec la chaîne Parameter Name: Count

Qu’est-ce qui ne va pas? Comment puis-je le réparer?

Il semble que le problème soit causé par la méthode Remove (), il rest moins de 3 caractères dans les données après Trim ().

essayer:

  private void DoUpdate(object s, EventArgs e) { Thread.Sleep(30); ssortingng data = port.ReadExisting() + port.ReadExisting(); if(data.Trim().Count() < 3) MessageBox.Show("data = " + data); else try { richTextBox1.Text = data.Trim().Remove(0, 3); } catch (Exception f) { MessageBox.Show(f.Message.ToString()); } } 

Cela devrait aider à comprendre.