2013-03-04 2 views
4

вот код, я пришел-с до сих пор:Чтение из SerialPort и отображение результата

protected void Page_Load(object sender, EventArgs e) 
{ 
    try { 
    serialPort1.PortName = "COM4"; 
    serialPort1.BaudRate = 9600; 
    serialPort1.Open(); 
    this.serialPort1.DataReceived += new  
     System.IO.Ports.SerialDataReceivedEventHandler(this.serialPort1_DataReceived); 
    Label1.Text = "Connected"; 
    UpdatePanel1.Update(); 
    } 
    catch (Exception ex) { 

    } 
} 

string x = ""; 
private void serialPort1_DataReceived(object sender, 
     System.IO.Ports.SerialDataReceivedEventArgs e){ 

    x = serialPort1.ReadExisting(); 
    TextBox1.Text = x; 
    UpdatePanel1.Update(); 
} 

проблемы после того, как код работает текстовое поле остается пустым ... (Im использование AJAX панель обновления, чтобы обновить текст текстового поля). Дело в том, что когда я устанавливал точки останова во время отладки, данные, полученные от последовательного порта, находятся в переменной и устанавливаются как новый текст текстового поля, но когда код не заканчивается, ничего не отображается .... I Я уверен, что обновленная панель работает, потому что я ее протестировал.

PS Последовательный порт подключен к считывателю rfid и пытается читать теги. Я успешно закодировал приложение в виде окна, чтобы сделать то, что хочу, но мне нужно перенести его в ASP.NET.

+0

Зачем вам нужно перенести это на ASP.NET? – Rawling

+0

@ Rawling хорошо, что приложение для окон, созданное мной, было на самом деле просто своего рода практикой/тестированием. Приказ Im, который работает, должен быть в asp. Теперь я думаю, учитывая ответ Кнагиса, чтобы использовать сервис, чтобы каким-то образом общаться между приложением windowsform, которое считывает данные rfid через последовательный порт, и приложение asp.net обрабатывает информацию, прочитанную ... am i i на верном пути здесь ребята? – user2127755

+0

, с которым вы работаете? требуется ли последовательная связь? – BrOSs

ответ

1

Чтение данных из последовательного порта в приложении ASP.NET будет работать только в том случае, если считыватель подключен к серверу (не машина, на которой запущен браузер). Кажется, он работает только потому, что вы его тестируете локально.

Объект serialPort1 будет уничтожен после завершения первоначальной визуализации страницы. Страница ASP.NET работает только до тех пор, пока страница не будет отображаться. Затем он разрушен. Следующий запрос снова воссоздает все объекты. Таким образом, последовательный порт будет открываться снова и снова каждый раз, когда браузер переходит на сервер.

UpdatePanel только изменяет классические запросы браузера в AJAX - он не меняет работу ASP.NET-сервера. Это все еще действия запроса-ответа, вызванные браузером клиента. В вашем случае UpdatePanel придется запросить сервер по таймеру.

Лучше всего создать элемент управления ActiveX на основе кода Windows Forms и внедрить его на свой веб-сайт.

Смежные вопросы