如何在asp.net MVC(串行通信)中显示要从控制器查看的数据

时间:2019-04-16 14:50:25

标签: c# asp.net-mvc serial-port

我正在尝试在asp.net MVC c#中使用Arduino和RFID阅读器构建登录系统。

我的目标是每次客户将其RFID标签点击到RFID阅读器时,从控制器更新我的视图。每当客户将其RFID标签点击到RFID阅读器时,我都希望更新视图以显示客户的信息。

现在,我可以使用下面的代码从Arduino读取标签ID,但是我不知道如何显示数据以供查看。我确实在Google中搜索了此问题,但没有得到asp.net的答案。

控制器

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO.Ports;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.Mvc;

namespace read_rfid_example.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {

            SerialPort mySerialPort = new SerialPort("COM3");

            mySerialPort.BaudRate = 9600;
            mySerialPort.Parity = Parity.None;
            mySerialPort.StopBits = StopBits.One;
            mySerialPort.DataBits = 8;
            mySerialPort.Handshake = Handshake.None;
            mySerialPort.RtsEnable = true;

            mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

            if(!mySerialPort.IsOpen)
                 mySerialPort.Open();


            return View();
        }

        private static void DataReceivedHandler(
                         object sender,
                         SerialDataReceivedEventArgs e)
        {
            SerialPort sp = (SerialPort)sender;
            string indata = sp.ReadExisting();
            Console.WriteLine("Data Received:");
            Console.Write(indata);

            Debug.WriteLine(indata); //  TAG ID: 03 0e 03 06 (output example and want to pass this data to view)
        }
      }
    }

简单视图

@{
    ViewBag.Title = "Index";
}

<h3>@ViewBag.TagId</h3>

我的问题和问题是,每当RFID阅读器检测到RFID标签时,如何更新视图中的标签?我需要这个问题的帮助。有人可以给我适当的方法来使它像实时的吗?

1 个答案:

答案 0 :(得分:0)

如果您想看到一些可能就像

private static void DataReceivedHandler(
                     object sender,
                     SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        string indata = sp.ReadExisting();
        Console.WriteLine("Data Received:");
        Console.Write(indata);
        Session["RfidCurrent"] = indata;
        Debug.WriteLine(indata); //  TAG ID: 03 0e 03 06 (output example and want to pass this data to view)
    }


    [HttpGet] 
    public ActionResult Index()
    {
        ViewBag.TagId = Session["RfidCurrent"]
        return View();
    }