添加串口到web页面

本文关键字:页面 web 串口 添加 | 更新日期: 2023-09-27 18:05:20

是否可以在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);
    }
}

添加串口到web页面

把我的评论变成答案…

串口代码为服务器端代码。你不能用ASP.NET在客户端上这样做。

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

我的建议是继续使用你的WinForms应用程序中需要扫描仪的代码,并添加一个菜单,使你能够启动一个单独的ASP。. NET web应用程序,用于报表/数据访问。

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

也就是说,根据你连接到端口的设备,可能有一个更简单的选择。

我们的一个条形码扫描器附带的软件,只是获取条形码数据,因为它被扫描和粘贴到任何打开的文档有焦点。如果您在记事本中工作,则扫描的数据将粘贴到记事本中。如果你打开了一个web应用程序,并且光标在文本框中,数据就会直接粘贴到那里。

这是一个实现起来更简单的选择,但是对于用户来说很难,因为如果他们不是技术人员,他们会打电话给你,想知道为什么条形码会发出嘟嘟声,但却没有填充文本框。(答案将是"因为你的光标不在文本框中或者窗体没有焦点")

所以我回到第一条建议

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

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

我真的不确定也许Silverlight应用程序嵌入到你的网页也可以实现这一点…

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