gpt4 book ai didi

c# - 在 C# 中使用串行端口从称重机获取重量

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:19 25 4
gpt4 key购买 nike

我正在开发使用 C#.Net 从称重桥机获取重量的应用程序。我尝试了很多方法但是,没有从称重桥机读取正确的数据格式重量。我得到像 这样的输出?x ????????x?x?x??x???x??x???x???x? 连续从串口获取,我想从地磅上称重我的代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.IO;

namespace SerialPortTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

String a = "";

private void button1_Click(object sender, EventArgs e)
{
serialPort1 = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);

if (serialPort1.IsOpen == false)
{
serialPort1.Open();
}
timer1.Start();
button1.Enabled = false;
button2.Enabled = true;
}

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
a = a + serialPort1.ReadExisting();
}

private void timer1_Tick(object sender, EventArgs e)
{
if (a.Length != 0)
{
textBox1.AppendText(a);
a = "";
}
}

private void button2_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen == true)
{
serialPort1.Close();
button2.Enabled = false;
button1.Enabled = true;
}
}

private void Form1_Load(object sender, EventArgs e)
{
if (serialPort1.IsOpen == true)
{
button1.Enabled = false;
button2.Enabled = true;
}
else
{
button1.Enabled = true;
button2.Enabled = false;
}
}
}
}

我的代码是将串口数据中的文本附加到文本框,但是它只显示为 ?xxx?xxxx?xxxx?

任何人都可以帮助我如何使用 c# 从串口获取权重

感谢阅读我的文章!

最佳答案

您正在使用 ReadExisting(),该方法试图将端口接收到的字节转换为字符串。如果转换失败,您会得到一个问号。默认编码是 ASCII,128 到 255 之间的字节值不是 ASCII 字符,因此会产生一个 ?

几个可能的原因,大致按可能性排序:

  • 使用错误的波特率,尤其是猜测的太高。
  • 设备可能正在发送二进制数据,而不是字符串。这需要使用 Read() 而不是 ReadExisting 并解码二进制数据。
  • 屏蔽不够好的长电缆拾取了电噪声。通过断开桥接端的电缆,很容易排除可能的原因。如果那停止了数据,那么它就不可能是噪音。

请务必通读手册。如果您没有或无法理解设备,请联系设备供应商。

关于c# - 在 C# 中使用串行端口从称重机获取重量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12278366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com