0

我对我的编码进行了一些更改并对其进行了测试。它仍然无法正常工作,因此我希望在这里得到一些指导。

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 表单没有刷新,因此我的读数没有更新。有什么办法可以自动更新 Web 表单?

感谢所有指导。谢谢。

4

1 回答 1

0

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

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

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

要更新您的页面,您可以使用此 javascript 代码:window.location.reload() 如果您需要定期更新它,您可以查看这个 SO question

要在 web 表单中添加 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

于 2013-03-30T16:16:50.823 回答