Member 12922418 Ответов: 1

Не удается отобразить полученные данные в текстовом поле из последовательного порта в веб-приложении C#


Всем Привет,

Я могу подключиться к последовательному порту и получить данные из последовательного порта через обработчик событий Data Received.

Я попытался отобразить полученные данные в текстовом поле, которое находится в моей веб-форме.

Моя проблема в окнах(VB.Net) у нас есть методы invoke, но в веб-приложении у нас нет ничего подобного для отображения данных в текстовом поле пользовательского интерфейса WebForm изнутри обработчика событий Data received.

Любая помощь в этом вопросе будет очень признательна.

Мне это нужно как можно скорее.

Спасибо и с уважением
Раджеш.С

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

public void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
    SerialPort sp = (SerialPort)sender;
    Textbox1.text = sp.ReadExisting();
}

When I read a Barcode from a Barcode device DataRecivednt Handler is called and the above code get the data from the Serial Port through the device (Sp.ReadExisting) and gets it assigned to the TextBox, But when the DataRecieved Event handler finishes its execution,it comes to the Web Form, but we are not able to see the value in the Textbox

Richard MacCutchan

Вы не можете сделать это в веб-форме, так как код последовательного чтения выполняется на стороне сервера, а текстовое поле находится на стороне клиента.

1 Ответов

Рейтинг:
1

Dave Kreskowiak

МММ ... удачи тебе с этим. Учитывая, что HTTP не может передавать контент клиенту, я не вижу, как вы собираетесь передавать эти текстовые данные с веб-сервера клиенту.

Вы ведь знаете, как работают браузеры и веб-серверы, не так ли? HTTP делает что-то только тогда, когда браузер запрашивает страницу с сервера, а затем сервер отправляет ответ с запрошенной страницей. Это называется моделью "запрос / ответ". Веб-сервер не может ничего отправить клиенту (браузеру) без запроса от клиента.

Помните, что ASP.NET код, который вы пишете на C#, работает только на веб-сервере, а не на клиенте.

Вам придется использовать что-то вроде SignalR для отправки данных клиенту (браузерам) вне конвейера HTTP "запрос/ответ". Ваш серверный код обычно накапливает блок данных из последовательного порта, а затем отправляет этот блок данных через SignalR или что-то подобное клиентам.

Вы не можете просто установить значение текстового поля из обработчика приема.

О, и используя код, который у вас уже есть, ваше последовательное устройство должно быть подключено к серверу, а не к клиенту. Ты уверен, что хочешь именно этого? Если вы хотите, чтобы последовательное устройство было подключено к клиенту, вы не можете использовать код C# для использования последовательного порта. Вам придется использовать библиотеку javascript, например jUART (Google it).