首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数字称重DLL文件C#同步更新重量

从数字称重DLL文件C#同步更新重量
EN

Stack Overflow用户
提问于 2015-05-21 04:49:28
回答 1查看 416关注 0票数 0

我已经建立了一个软件,可以从电子秤中检索重量,并将其输出到WinForms的标签中。每次天平中的重量发生变化时,标签中的重量也会自动更新。我成功地做到了。

这是我的代码:

代码语言:javascript
复制
public partial class Form1 : Form
    {
        private SerialPort port = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);

        public Form1()
        {
            InitializeComponent();

            port.DtrEnable = true;
            port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            port.Open();
        }

        private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
                this.Invoke(new EventHandler(DoUpdate));
            }
            catch (Exception ex)
            {

            }
        }

        private void DoUpdate(object s, EventArgs e)
        {
            try
            {
                label1.Text = port.ReadLine();
            }
            catch (Exception ex)
            {
                label1.Text = ex.ToString();
            }
        }
    }

现在,我的老板要求我在一个.DLL文件(类库)中实现这段代码。他只是想添加一个引用,调用这个类,它会返回权重,也会自动更新。他只想在Page Load上进行一个简单的调用,如下面的示例:

代码语言:javascript
复制
Scale sc = new Scale();
label1.text = sc.weight();

我可以成功地返回权重,但它不会通过类库自动更新,这是我在类库(.DLL文件)中使用的代码:

代码语言:javascript
复制
public class Scale
    {
        SerialPort port;

        public string weight()
        {
            try
            {
                port = new SerialPort(com, 9600, Parity.None, 8, StopBits.One);

                if (port.IsOpen == false)
                {
                    port.Open();
                }

                port.DtrEnable = true;

                return port.ReadLine();;
            }
            catch(Exception ex)
            {
                return "";
            }
        }
    }

我希望我被解释清楚了。对代码有什么帮助吗?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-05-21 05:35:30

您似乎已经在WinForms应用程序中的port.DataReceiver上绑定了一个事件,但是您的类库不支持相同的事件。类库只将字符串返回给调用代码一次。

我猜有一些方法可以在类库中引发事件,但我猜调用代码需要侦听事件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30360114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档