0

こんにちは、PIC16F877A マイクロコントローラーと LCD ディスプレイを持っています。2分ごとにLCD画面に乱数を表示するPICコントローラーを作成し、RS232ケーブルを介して2分ごとにランダムに生成された番号をラップトップに送信します。ASP.NET 4 C# を使用して、これらの数値を読み取って関数を実行する Web サイトを作成しています。次のコーディングを作成しましたが、機能しませんが、ラップトップのハイパーターミナルでこれらの乱数を受信して​​います。これを達成する方法を教えてください - 私はこれらのコードを 2 分ごとに受信する必要があります。

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();

    }
}
4

1 に答える 1

1

プログラムを再構築することをお勧めします。

ASP.NET はステートレスになるように設計されています (HTTP ベースのため)。ASP.NET ホスト プロセス (w3wp.exe) は、警告なしで任意に終了およびリサイクルできます。信頼性が必要な場合は、何らかの形式の IPC を介して ASP.NET アプリケーションと通信する専用の Windows サービス プロセスで SerialPort 通信を実行する必要があります。

Page_Load の使用は非常に不適切であり、スレッドセーフではないことは言うまでもありません。この.Closeメソッドは を呼び出す.Disposeのと同じです。これは、SerialPort を静的メンバーとして持つという点を無効にします (その有効期間が終了するため)。

ASP.NET または IO ポートのプログラミングに慣れていないことがわかりました。これらの分野のスキルを個別に磨くことをお勧めします (つまり、最初にコマンドライン シリアル ポート プログラムを開発し、次にシリアル ポートを使用しない単純な ASP.NET Web アプリケーションを開発します)。エリア。

于 2012-08-15T21:33:37.880 に答える