ASP.net Web表单通过串口

时间:2013-03-30 14:59:16

标签: asp.net vb.net microcontroller

我对我的编码进行了一些更改并对其进行了测试。它仍然没有完美的工作,因此我希望在这里有一些指导。

Imports System
Imports System.Data
Imports System.Configuration
Imports System.Collections
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Imports System.IO.Ports

Partial Class Main
    Inherits System.Web.UI.Page

Protected Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Load

    Dim Serialport7 As New IO.Ports.SerialPort

    With Serialport7
        .PortName = "COM7"
        .BaudRate = 9600
        .Parity = Parity.None
        .DataBits = 8
        .StopBits = StopBits.One
    End With

    Try
        Serialport7.Open()
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try


    Dim ReceivedData As String

    ReceivedData = Serialport7.ReadLine()

    If ReceivedData.Substring(0, 1) = "T" Then

        TextBox1.Text = ReceivedData.Remove(0, 1)

    ElseIf ReceivedData.Substring(0, 1) = "H" Then

        TextBox2.Text = ReceivedData.Remove(0, 1)

    End If

    TextBox3.Text = System.DateTime.Now

    Serialport7.Close()

End Sub

End Class

我遇到的错误:

  • TextBox2未显示读数,只有TextBox1显示读数。

  • 网页表单不令人耳目一新,因此我的阅读材料不会更新。有什么方法可以自动更新Web表单吗?

赞赏所有指导。 谢谢。

1 个答案:

答案 0 :(得分:0)

您有一个简单的解决方案来刷新您的页面,因为您的服务器无法控制客户端Web浏览器,所以当新数据可用时它将不会刷新(不应该,这不是不可能,但它很复杂而且不是很安全)。

所以你可以做的是添加一段javascript代码来定期刷新页面。

最好的方法是添加一个javascript函数,该函数对web服务进行ajax调用,该服务将读取串行端口数据,然后将数据发送回客户端页面。 在那里,您可以更新文本框值。

要更新您的网页,您可以使用以下JavaScript代码:window.location.reload() 如果您需要定期更新,可以查看this SO question

要在webforms中添加Web服务并定期调用它,请查看以下链接: http://www.asp.net/web-forms/tutorials/aspnet-ajax/understanding-asp-net-ajax-web-services

http://api.jquery.com/

如果您不想定期刷新页面,只想在新数据可用时刷新您的值,请查看websockets(当我开始回答时忘记了它们)。

关于websockets的编辑 [另外,您应该考虑您的方法可以被许多不同的用户调用,也可以在不同的线程中调用。因此,您需要使串行端口读取线程安全,并将结果存储在某处,以避免向不同用户发送不同的数据。 <强> -

图片您有用户A更新您的页面,然后用户B更新它。 当用户A调用页面时,您已经从串口读取了一些数据,因此用户A和用户B将显示不同的数据。

如果数据为1, 2, 3, 4

在您当前的实施中,用户A会看到1,用户B会看到2