【问题标题】:i have a problem with my c# weighting scale program我的 C# 体重秤程序有问题
【发布时间】:2023-02-25 17:09:21
【问题描述】:

我制作了一个 c# windows 窗体应用程序,它通过 rs-232 串行从体重秤接收重量 沟通。所以基本上,当我按下按钮 1 时,我应该将重量放入标签 1 中。 除了当我第二次按下按钮 1 时发生异常错误。它说该端口已打开或已被使用。我该怎么办?




using System.IO.Ports;

namespace loaded
{
    public partial class Form1 : Form
    {
        SerialPort rs;
        string Data;
        private delegate void setlbtext(string text, Label lb);
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            rs= new SerialPort();
            rs.BaudRate = 9600;
            rs.Parity = Parity.None;
            rs.DataBits = 8;
            rs.PortName = "COM7";

            rs.DataReceived += new SerialDataReceivedEventHandler(Rsrecivedata);
        }

        private void Rsrecivedata (object sender, SerialDataReceivedEventArgs eventArgs)
        {
            Data = rs.ReadLine();
            updatalabel(Data, label1);
        }

        private void updatalabel (string value, Label lb)
        {
            if (lb.InvokeRequired)
            {
                lb.Invoke(new setlbtext(updatalabel), value, lb);
            }
            else
            {
                lb.Text = value;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            rs.Open();
        }
    }
}

【问题讨论】:

  • 按下进入Button 获得焦点时,键将单击它。这表明您点击了Button 两次,因此您尝试打开SerialPort 两次,因此您当然会收到该消息。你为什么要按进入首先?也许你应该禁用 Button 直到你关闭 SerialPort,这样你就不能点击它超过一次。
  • 我的意思是当我点击按钮时不按回车键
  • 您可能应该编辑您的问题并提供真实的信息,因为就问题误导我们并不是获得帮助的好方法。
  • 它是在您第一次单击 Button 时发生还是直到第二次才发生?
  • 第二次,第一次没有任何反应。它不会从体重秤上读取重量

标签: c#


【解决方案1】:

每次单击该按钮时,您都在尝试打开串行连接。但是在第一次点击后,那个端口已经打开,你会得到一个异常。 如何解决这个问题:

  • Form1_Load 方法中打开 Com 端口。

  • Rsrecivedata 中,您可以立即更新标签(因此不需要按钮),或者您可以在字符串字段中缓冲接收到的值(并从 button1_Click 中的该字段更新标签。

  • 确保在关闭表单时关闭串口(使用Closingevent?)。否则该端口将保持打开状态,您将在下次加载表单时遇到异常。

【讨论】:

  • 事情是当我按下按钮时,一旦没有任何反应,我的意思是它不会从体重秤上读取重量
  • 但是你能帮我回答一下吗?因为我是 c# 的新手。
  • 我应该怎么办?
猜你喜欢
  • 2017-01-24
  • 2017-05-27
  • 1970-01-01
  • 2022-01-18
  • 2021-10-04
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多