我已经建立了一个软件,可以从电子秤中检索重量,并将其输出到WinForms的标签中。每次天平中的重量发生变化时,标签中的重量也会自动更新。我成功地做到了。
这是我的代码:
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上进行一个简单的调用,如下面的示例:
Scale sc = new Scale();
label1.text = sc.weight();我可以成功地返回权重,但它不会通过类库自动更新,这是我在类库(.DLL文件)中使用的代码:
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 "";
}
}
}我希望我被解释清楚了。对代码有什么帮助吗?提前谢谢。
发布于 2015-05-21 05:35:30
您似乎已经在WinForms应用程序中的port.DataReceiver上绑定了一个事件,但是您的类库不支持相同的事件。类库只将字符串返回给调用代码一次。
我猜有一些方法可以在类库中引发事件,但我猜调用代码需要侦听事件。
https://stackoverflow.com/questions/30360114
复制相似问题