我正在使用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
的位置
有什么问题?我该如何解决?
答案 0 :(得分:0)
似乎问题是由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());
}
}
这应该有助于弄明白。