jnsanchezg Ответов: 0

Как отобразить данные последовательного порта в ASP.NET


Здравствуйте, я пытаюсь добавить результат COM-порта устройства в HTML-представление, используя ASP.NET фреймворк, этот код предназначен для тестирования:

У меня есть глобальная переменная под названием result.

У меня есть метод приема данных последовательного порта(этот метод запускается, когда устройство отображает данные):
void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        int dataLength = _serialPort.BytesToRead;
        byte[] data = new byte[dataLength];
        int nbrDataRead = _serialPort.Read(data, 0, dataLength);
        if (nbrDataRead == 0)
            return;

        result = Encoding.ASCII.GetString(data);

        _serialPort.Close();

        DisplayData(result);
    }


и у меня есть свой метод результата действия, этот метод возвращает представление:

public ActionResult DisplayData(string text)
{
  _serialPort = new SerialPort("COM1", 2400, Parity.Even, 7, StopBits.One);
  _serialPort.Close();
  // Subscribe to event and open serial port for data
  _serialPort.DataReceived += new 
  SerialDataReceivedEventHandler(_serialPort_DataReceived);
  _serialPort.Open();
  ViewBag.Message = text;
  return View();
}

Я хочу отобразить текст из метода _serialPort_DataReceived, но не знаю, как это сделать.

Я на правильном пути?

Заранее спасибо за помощь

Что я уже пробовал:

Я пробовал с этим кодом, но когда _serialPort_DataReceived переходит к DisplayData (), он идет с текущими данными, но не возвращает представление.

F-ES Sitecore

Две вещи...сначала ваш .net-код работает на сервере, он не имеет доступа к клиентскому оборудованию, поэтому это только выглядит так, как будто он работает при разработке на вашем локальном компьютере, поскольку клиент и сервер-это одна и та же машина. Когда вы опубликуете этот сайт, он перестанет работать.

Второе asp.net это запрос\ответ technology...it отправляет html-код в браузер в ответ на запрос из браузера. Однако он не может передавать содержимое на клиент, поэтому у вас не может быть кода, запущенного из какого-то события, вызванного записью данных на стороне сервера на клиент.

В основном вы используете неправильную технологию, вы не заставите ее работать. Вместо этого посмотрите на разработку приложения Windows forms.

jnsanchezg

Спасибо за ваш ответ, у меня есть другой проект, и я использую ApiController, у меня есть IHttpActionResult, который возвращает данные с устройства, которое возвращает вес, я могу поймать эти данные и вернуть их в формате json: {"result": "12 kg" }, я могу это сделать, потому что оборудование всегда возвращает значение, является постоянным, и я не использую функцию _serialPort_DataReceived, но у меня есть другое устройство, оно возвращает данные, только когда я нажимаю кнопку, для этого второго устройства я использую _serialPort_DataReceived функция, и когда я отлаживаю это приложение, когда я нажимаю кнопку устройства, он автоматически переходит к методу _serialPort_DataReceived, он поставляется с данными, хорошо, проблема в том, что я не знаю, как отображать эти данные в данных результата json.

Karthik_Mahalingam

использовать  Ответить  кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.

j snooze

Таким образом, проблема не в том, что данные не выталкиваются на вашу страницу, а в том, что вы хотите получить наш результат в формате json? почему не вместо actionresult вместо того, чтобы вернуть JsonResult?...Я не уверен, нужен ли вам для этого пакет newtonsoft nuget или нет.

0 Ответов