private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
if (Clos_flag) return;
try
{
Listening = true;
if (serialPort.IsOpen)
{
this.txt_weight.Invoke(new MethodInvoker(delegate
{
//txt_weight.Text = serialPort.ReadLine();
serialPort.NewLine = "\r";
string weight = serialPort.ReadLine();
if (weight.IndexOf(")") > 0)
{
weight = weight.Substring(3, 8);
// txt_weight.Text = weight.Substring(0, weight.LastIndexOf("0") + 1);
}
}));
}
}
catch (Exception eg)
{
MessageBox.Show(eg.ToString());
}
finally
{
Listening = false;
}
}
我应该更改以删除图片中的第一个零,上面是我使用的代码。我试图将子字符串更改为(2,8)但仍然无效。 一旦用户点击“打开串口”按钮,我就可以从称重机获得价值
答案 0 :(得分:1)
更改此行:
string weight = serialPort.ReadLine();
到此:
string weight = serialPort.ReadLine().TrimStart('0').Trim();
在将值加载到声明的变量之前,它会做什么是readline,修剪前0,然后修剪外部(start amd end)空格
答案 1 :(得分:1)
这似乎可能是由很多因素引起的。
查看代码时,应该删除前导零,因为你已经将前两个字符串输出。
我看到你的函数serialPort_DataReceived从你端口的设备读取数据,所以我假设你的屏幕截图来自输出设备。
尝试和硬编码
weight = "12345";
如果问题仍然存在,则不是由代码引起的,而是由您的设备引起的。
希望这会有所帮助〜