簡體   English   中英

在客戶端加載頁面后,C#偵聽串行端口並根據需要進行操作

[英]C# listening to serial port and proceed as needed , after page loaded on client side

我正在開發一個與使用串行端口的設備通訊的C#/ Asp.net應用程序。

首先,我有一個執行以下操作的按鈕:

Response.Redirect("Zxx.aspx?ValtoSibs=" + Strvals);

基本上,這會將我重定向到我打開串行端口,寫入int然后想要讀取從設備獲得的任何輸入的頁面,例如,如果我單擊設備上的某個鍵,我想在應用程序中讀取它,然后按照我的意願進行。

這是在Zxx.aspx上運行的代碼

 protected void Page_LoadComplete(object sender, EventArgs e)

        {
            string ValtoSibs = Request.QueryString["ValtoSibs"];
            SIBS.SIBS ComTPA = new SIBS.SIBS();
            ComTPA.IniciaTPA();
            ComTPA.SendPaymentCmd(Int32.Parse(ValtoSibs));




                if (ComTPA.ComTPA.ReadExisting().Contains("M001909"))

                {
                    ComTPA.ComTPA.DiscardInBuffer();
                    ComTPA.ComTPA.DiscardOutBuffer();
                    ComTPA.CloseTPA();
                    Response.Redirect("Erro.aspx");

                }
        }

在上面的塊中,我不知道是否在設備上按下了任何按鈕,因為我需要一個while循環來封裝該塊:

  if (ComTPA.ComTPA.ReadExisting().Contains("M001909"))

                {
                    ComTPA.ComTPA.DiscardInBuffer();
                    ComTPA.ComTPA.DiscardOutBuffer();
                    ComTPA.CloseTPA();
                    Response.Redirect("Erro.aspx");

                }

問題是,當我嘗試放置一會兒循環時,頁面無法加載zxx.aspx不會加載,當我按下設備上的任何鍵(例如發送密碼的鍵)時,它將鎖定在無限循環BUT上M001909 string ,它根據需要起作用,關閉端口並重定向頁面。

我的主要問題是,我需要進入Zxx.aspx頁面, 頁面已經在客戶端完全加載,然后在后面運行while循環,以便我可以偵聽設備上發送的命令。

找到了解決方案,

我創建了一個新的DataReceived Handler,並在其中調用了一個函數,該函數執行以下操作並將參數ReadExisting():

if (ComTPA.ComTPA.ReadExisting().Contains("M001909"))

                {
                    ComTPA.ComTPA.DiscardInBuffer();
                    ComTPA.ComTPA.DiscardOutBuffer();
                    ComTPA.CloseTPA();
                    Response.Redirect("Erro.aspx");

                }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM