首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从串口获取重量?

如何从串口获取重量?
EN

Stack Overflow用户
提问于 2012-07-10 23:07:50
回答 2查看 1.6K关注 0票数 0

我有一个WPF应用程序,其中有一个模块来称重负载。由于不同的称重桥之间的串口通信不同,所以我想使称重模块成为一个单独的dll。

我正在创建一个类库,在这个类库中我使用串行端口来称重负载。我需要将重量返回到主程序。

代码语言:javascript
复制
double GetWeights()
{

 spWeigh = new SerialPort("COM1", 2400, Parity.None, 8, StopBits.One);
            spWeigh.RtsEnable = false;
            spWeigh.DtrEnable = false;
            spWeigh.Handshake = Handshake.None;
            spWeigh.ReadTimeout = 10000;
            spWeigh.DataReceived +=spWeigh_DataReceived;

}

但是接收到的数据在不同的线程中。我如何在我的主程序中重新获得权重?

代码语言:javascript
复制
 void spWeigh_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
      // code here
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-10 23:16:52

您可以不向主程序订阅的库中添加一个事件,该事件由您的库引发,并传回所需的数据吗?

在您的库中:

代码语言:javascript
复制
class YourLibrary
{
    public delegate void RawDataEventHandler(object sender, RawDataEventArgs e);
    public event RawDataEventHandler RawDataReceived;

    void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        string ReceivedData = _serialPort.ReadExisting();
        if (RawDataReceived != null)
            RawDataReceived(this, new RawDataEventArgs(ReceivedData));
    }
}

class RawDataEventArgs : EventArgs
{
    public string Data { private set; get; }

    public RawDataEventArgs(string data)
    {
        Data = data;
    }
}

在你的主程序中:

代码语言:javascript
复制
class MainProgram
{
    YourLibrary library = new YourLibrary();
    library.RawDataReceived += new YourLibrary.RawDataEventHandler(library_RawDataReceived);

    void library_RawDataReceived(object sender, RawDataEventArgs e)
    {
        // Your code here - the data passed back is in e.Data
    }
}
票数 1
EN

Stack Overflow用户

发布于 2012-07-10 23:15:41

如果数据不需要很快(即每秒少于一次),您可以在一个线程中写入文本文件,然后在主线程中读取该文件

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

https://stackoverflow.com/questions/11416338

复制
相关文章

相似问题

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