[英]Text is not Appending to TextBox after reading data from serial Port
我編寫了一個程序,在其中我從串行端口讀取數據。 讀取數據后,我正在名為“ lblStatus”的文本框中顯示其狀態。 但是每次從端口讀取后,文本框中的文本都不會更新。
這是我的aspx文件代碼。
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="AddRFID.aspx.cs" Inherits="AddRFID" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div id="wrapper">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Add RFID</h1>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
Add RFID
</div>
<div class="panel-body">
<div class="row">
<div class="col-lg-6">
<div class="panel-body">
<form id="Form1" runat="server">
<asp:Button ID="btnStart" runat="server" Text="Start" OnClick="btnStart_Click"/>
<asp:Panel ID="Panel1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ChildrenAsTriggers="false" OnPreRender="UpdatePanel1_PreRender" UpdateMode="Conditional" ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtStatus" CssClass="form-control" runat="server" Rows="20" Height="200px" ></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="Button2" runat="server" Text="Read" OnClick="Button2_Click" />
</asp:Panel>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</asp:Content>
這是我的.cs文件。
public partial class AddRFID : System.Web.UI.Page
{
RFIDImplementation ri;
public string rfid_no;
public SerialPort port;
public static string withoutLast, result;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Panel1.Visible = false;
txtStatus.TextMode = TextBoxMode.MultiLine;
}
}
protected void submit_Click(object sender, EventArgs e)
{
}
protected void btnStart_Click(object sender, EventArgs e)
{
Panel1.Visible = true;
port = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);
SerialPortProgram();
}
private void SerialPortProgram()
{
Console.WriteLine("Incoming Data:");
// Attach a method to be called when there
// is data waiting in the port's buffer
port.DataReceived += new
SerialDataReceivedEventHandler(port_DataReceived);
// Begin communications
try
{
port.Open();
result += "Port Open \n";
}
catch (UnauthorizedAccessException uae)
{
result += "Access Denied to Port \n";
}
catch (InvalidOperationException ioe)
{
result += "Port Already Open \n";
}
catch (IOException io)
{
result += "RFID not Attached \n";
}
}
private void port_DataReceived(object sender,
SerialDataReceivedEventArgs e)
{
// Show all the incoming data in the port's buffer
string s = port.ReadLine();
withoutLast = s.Substring(0, s.Length - 4);
ShowData(withoutLast);
}
private void ShowData(String withoutLast)
{
RFIDLogic rl = new RFIDLogic();
RFID r = new RFID();
r.R_No = withoutLast;
r.O_ID = Convert.ToInt32(null);
r.R_Status = false;
if (rl.CheckExistingRno(r) == 0)
{
rl.Insert(r);
result = result + "RFID Added \n";
}
else
{
result = result + "RFID Already Exist \n";
}
}
protected void UpdatePanel1_PreRender(object sender, EventArgs e)
{
txtStatus.Text = result;
}
protected void UpdatePanel1_Load(object sender, EventArgs e)
{
txtStatus.Text = result;
}
}
經過適當的操作后,我將文本附加到字符串變量“結果”,然后將其分配給lblStatus.Text。 但是文本不會在瀏覽器中更新。 請幫我更新文本框中的文本。
您的狀態消息位於將UpdateMode設置為有條件的更新面板中。 這意味着更新面板僅在其內部的控件導致回發或定義的觸發器導致其刷新時才會刷新。 您可以通過在關閉(或在打開之前)ContentTemplate標記之后添加以下內容來定義觸發器,但仍將其保留在asp:UpdatePanel標記內: <Triggers> asp:AsyncPostBackTrigger ControlID="btnStart" /> </Triggers>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.