将串口添加到网页

时间:2011-08-12 20:24:17

标签: c# .net visual-studio serial-port

是否可以将串行端口控件添加到Web应用程序。我已尝试以编程方式创建一个,但我遇到了端口保持打开的问题。我不知道如何解决这个问题,除非通过某种方式在网页上添加串口控件。关于如何完成这项任务的任何想法?提前谢谢。

以下是我目前的代码:

public partial class LoadCellTest : System.Web.UI.Page
{ 
SerialPort serialPort1 = new SerialPort("COM3",9600,Parity.None,8,StopBits.One);

 protected void Page_Load(object sender, EventArgs e)
{

    serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
    serialPort1.ErrorReceived += new SerialErrorReceivedEventHandler(serialPort1_ErrorReceived);

}

delegate void SerialDataReceivedDelegate(object sender, SerialDataReceivedEventArgs e);
delegate void SerialErrorReceivedDelegate(object sender, SerialErrorReceivedEventArgs e);


protected void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
   TextBox1.Text = (serialPort1.ReadExisting());
   if (serialPort1.ReadExisting().Length == 0)
   {
       ListBox1.Items.Insert(0, TextBox1.Text);
       TextBox1.Text = "";
   }
}
protected void button1_Click(object sender, EventArgs e)
{
    try
    {
        if (serialPort1.IsOpen)
        {
            serialPort1.Close();
            button1.Text = "Start";
        }
        else
        {
            serialPort1.Open();
            button1.Text = "Stop";
        }
    }
    catch (IOException ex)
    {
        MessageBox.Show(ex.Message);
    }
}

2 个答案:

答案 0 :(得分:3)

您的代码只是访问服务器的串口,因为它在服务器上运行...

如果您确实需要从Web应用程序访问客户端上的串行端口,那么您将需要使用一些直接在客户端上运行的技术...这可能是嵌入到您的网页中的ActiveX控件...

我真的不确定嵌入到您网页中的Silverlight应用程序是否也可以实现这一目标......

请注意,在网页中这样做可能是一个安全问题!

答案 1 :(得分:3)

将我的评论转化为答案......

串口代码是服务器端代码。你无法在客户端上使用ASP.NET。

创建ActiveX或其他胖客户端控件是一项工作,并不是一个好主意。

我的建议是继续使用WinForms应用程序来获取需要扫描程序的代码,并为其添加一个菜单,以便为报告/数据访问启动单独的ASP.NET Web应用程序。

如果您想让用户更加“无缝”,您可以添加一个带有WebBrowser控件的表单来加载您的报表/数据访问站点。对他们而言,它只是“应用程序的一部分”。

这意味着,根据您连接到端口的设备,可能会有一个更简单的选项。

我们的一款条码扫描仪附带的软件只需扫描条形码数据,并将其粘贴到任何打开的文档中。如果您在记事本中工作,扫描的数据将粘贴到记事本中。如果您打开了一个Web应用程序,并且光标位于文本框中,则数据只会粘贴在那里。

这是一个更简单的选项来实现,但它对用户来说更难,因为如果他们不是技术人员,他们会打电话给你,想知道为什么条形码会发出哔哔但不填充文本框。 (答案是“因为你的光标不在文本框中,或者表格没有焦点”)

所以我回到推荐#1。