2012-08-15 3 views
0

안녕하세요, 저는 PIC16F877A 마이크로 컨트롤러와 LCD 디스플레이를 가지고 있습니다. 나는 2 분마다 LCD 화면에 난수를 표시하는 PIC 컨트롤러를 만들었고 RS232 케이블을 통해 매 2 분마다 무작위로 생성 된 숫자를 노트북에 보냈다. ASP.NET 4 C#을 사용하여 웹 사이트를 만들고 있는데 그 번호를 읽고 기능을 수행하려고합니다. 다음 코드를 작성했지만 작동하지 않지만 내 랩톱 하이퍼 터미널에 임의의 숫자가 나타납니다. 이것을 달성하는 방법을 제안 해주십시오 - 2 분마다 해당 코드를 받아야합니다.직렬 포트 C# asp.net에서 입력 읽기?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.IO.Ports; 

public partial class Entercode : System.Web.UI.Page 
{ 
    static SerialPort mySerialPort = new SerialPort("COM46", 1200, Parity.None, 8,  StopBits.One); 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     mySerialPort.Open(); 
     String str = mySerialPort.ReadLine(); 
     mySerialPort.Close(); 

    } 
} 

답변

1

프로그램을 다시 구성하는 것이 좋습니다.

ASP.NET은 HTTP 기반이기 때문에 상태 비 저장되도록 설계되었습니다. ASP.NET 호스트 프로세스 (w3wp.exe)는 경고없이 강제 종료 및 재활용 될 수 있습니다. 안정성이 필요한 경우에는 IPC의 일부 양식을 통해 ASP.NET 응용 프로그램과 통신하는 전용 Windows 서비스 프로세스에서 SerialPort 통신을 수행해야합니다.

Page_Load를 사용하는 것은 엄청나게 부적절합니다. .Close 메서드는 .Dispose을 호출하는 것과 동일합니다.이 메서드는 SerialPort를 정적 멤버 (수명이 끝나는 시점)로 갖는 포인트를 무효화합니다.

ASP.NET 또는 IO 포트 프로그래밍에 익숙하지 않다는 생각을하게됩니다. 이 분야에서 기술을 연마 해보십시오 (즉, 명령 행 직렬 포트 프로그램을 먼저 개발 한 다음 직렬 포트를 사용하지 않는 간단한 ASP.NET 웹 응용 프로그램을 개발하십시오). 그런 다음 두 가지가 모두 강한 후에 결합하십시오. 지역.

+0

안녕하세요, 저는 두 언어에 처음입니다. 하지만 전자 제품을 사용하는 학생이므로 ASP.NET의 전체 장을 배울 필요가 없습니다. 이 코드를 일시적으로 내 응용 프로그램을 확인하고 싶습니다. 따라서이 대신에 어떤 코드를 사용해야하는지 제안 해주십시오. – chris

+1

그들은 언어가 아닙니다. C#은 언어이고, ASP.NET은 플랫폼입니다. 어쨌든 ASP.NET을 완전히 설치하고 콘솔 응용 프로그램을 개발하십시오. – Dai