Как отобразить данные последовательного порта в 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 или нет.