从串行端口 C# asp.net 读取输入



您好,我有一个PIC16F877A微控制器和液晶显示器。我使PIC控制器每2分钟在LCD屏幕上显示随机数,并且它还通过RS232电缆每2分钟将这些随机生成的数字发送到我的笔记本电脑。我正在使用 ASP.NET 4 C#创建一个网站,我想在其中读取这些数字并执行功能。我已经编写了以下编码,但它不起作用,但我在我的笔记本电脑超级终端中收到这些随机数。请建议我如何实现这一目标 - 我必须每 2 分钟收到一次这些代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO.Ports;
public partial class Entercode : System.Web.UI.Page
{
    static SerialPort mySerialPort = new SerialPort("COM46", 1200, Parity.None, 8,     StopBits.One);
    protected void Page_Load(object sender, EventArgs e)
    {
        mySerialPort.Open();
        String str = mySerialPort.ReadLine();
        mySerialPort.Close();
    }
}

我建议重新构建你的程序。

ASP.NET 被设计为无状态的(因为它基于HTTP)。 ASP.NET 主机进程 (w3wp.exe) 可以随意终止和回收,而不会发出警告。如果您需要可靠性,则应在专用的Windows服务进程中执行串行端口通信,该进程通过某种形式的IPC与您的 ASP.NET 应用程序进行通信。

使用Page_Load是非常不合适的,更不用说非常不安全的线程了。.Close方法等效于调用 .Dispose ,这违背了将 SerialPort 作为静态成员(在其生命周期结束时)的观点。

我知道您不熟悉 ASP.NET 或IO端口编程。我建议你分别磨练你在这些领域的技能(即先开发一个命令行串行端口程序,然后开发一个不使用串行端口的简单 ASP.NET Web 应用程序),然后在你这两个领域都很强之后将它们结合起来。

最新更新