0

I have written a program in which i am reading data from Serial Port. After Reading the data, i am Displaying the status of it in a textbox named "lblStatus". But after reading from the port everytime, the text in the textbox is not getting updated.

Here is my aspx file code.

<%@ 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>

Here is my .cs file for it.

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;
}


}

After the appropriate operation I am appending text to string variable "result" and then assigning it to lblStatus.Text. But the Text is not updating in the Browser. Please, Help me Update the Text in the TextBox.

1 Answers1

0

Your status message is inside an update panel with UpdateMode set to conditional. This means the update panel will only refresh if a control inside it causes a post back, or a defined trigger causes it to refresh. You can define the trigger by adding the following after the closing (or before the opening) ContentTemplate tag, but still keeping it inside the asp:UpdatePanel tags : <Triggers> asp:AsyncPostBackTrigger ControlID="btnStart" /> </Triggers>

Steven Brookes
  • 834
  • 6
  • 27