使用C#从Mettler Toledo秤设备读取数据

我正在使用C#代码从Mettler Toledo秤设备读取数据。

这是我的完整代码:

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.ToString()); } } private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) { this.Invoke(new EventHandler(DoUpdate)); } private void DoUpdate(object s, EventArgs e) { Thread.Sleep(30); string data = port.ReadExisting() + port.ReadExisting(); try { richTextBox1.Text = data.Trim().Remove(0, 3); } catch (Exception f) { MessageBox.Show(f.Message.ToString()); } } 

它工作正常,并在名为richTextBox1的标签中显示结果,但有时它会出现以下错误:

索引和计数必须引用带有字符串参数名称:Count的位置

怎么了? 我该如何解决?

似乎问题是由Remove()方法引起的,在Trim()之后数据中剩下少于3个字符。

尝试:

  private void DoUpdate(object s, EventArgs e) { Thread.Sleep(30); string 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()); } } 

这应该有助于解决这个问题。