1

asp.netアプリケーションからスキャナー、バーコードリーダー、カメラなどにアクセスするには、この奇妙な要件があります。これらはローカル リソースであるため、それができないことはわかっています。この問題に対する他の解決策があるかどうか疑問に思っていました。

ローカル システムで実行され、ポートを開いてリッスンし、必要なジョブを実行する Windows サービスを作成することを考えていました。JSまたは他のライブラリまたはactivexを使用して、asp.netページからローカルポートに何らかのメッセージを送信する方法があるかどうか疑問に思っていました.

あなたがまったく異なる解決策を持っているなら、私はすべての耳です。

4

2 に答える 2

2

小さなアプリ(Win / Mac / Linでうまく動作するため、TCL / TKオリジナルですが、モノラルが成長してからC#/。NETになりました)を作成することで、類似の問題(シリアルポートに接続されたチケットプリンター)を解決しました。

  • ユーザー/パスワードを取得します
  • Webリクエストでセッションを作成します。
  • ブラウザを開き、
  • URLのセッショントークンをアンカーとして指定する(http [s]://foo.bar/baz?x = y#sessiontoken)

このように、それは有線で送信されることはありませんが、クライアントのJSコードで利用できます。

ヘルパーアプリがブラウザーを起動した後、長いポーリングとセッショントークン(ブラウザーとヘルパーアプリに認識されている)を使用してWebサーバーと通信します。クライアント側のアプリとして、周辺機器と非常に自然に通信できます。

このように印刷された数千のチケットの数百...

編集: はい、私はこれがますます長くなることを知っています、しかし私は詳しく説明する必要があります(そして頼まれました)。

ActiveX / Silverlight /その他のルートを避けたい場合は、4人のプレーヤーが必要です。

  1. Webサーバー
  2. ブラウザ
  3. ヘルパーアプリケーション(「エージェント」)
  4. デバイス(チケットプリンター、バーコードスキャナーなど)

あなたの基本的な問題は、1。は4.と話す必要があるが、できないということです。したがって、2つの並列パスを選択します。ユーザー向けの通信はサーバーとブラウザー間で交換され、デバイス向けの通信はサーバーとエージェント間で交換され、後者はデバイスに中継します(もちろんその逆)。

エージェントは非常に単純なアプリケーションであり、OS機能を介してデバイスと通信し(もちろん、これがどのように行われるかはデバイスによって異なります)、HTTP要求を介してWebサーバーと通信します。

必要な情報の流れの方向に応じて、次のようになります。

  • デバイスからサーバーへの情報の流れを容易にするには、デバイス上のアクティビティでWebリクエストをトリガーするだけです。(入力デバイス、例:バーコードスキャナー)
  • サーバーからデバイスへの情報の流れを容易にするために、長いポーリングを使用します。(出力デバイス、例:チケットプリンター)
  • 両方向については、両方を実行します(サーバートリガー入力デバイス、カメラなど)

残りの問題は、ブラウザでの人間のアクションをデバイスのアクションと関連付ける方法です。つまり、サーバーは、ブラウザで選択したチケットを、次に長いポーリングを行うプリンタではなく、チケットプリンタに送信する方法を教えてください

これを解決するには、セッションIDを使用するのが自然な方法ですが、ブラウザとエージェントの両方が同じセッションIDを知っている必要があります。これを実現するには、一方から他方に通信する必要があります。ブラウザからエージェントに通信することはできないため(またはこの議論は議論の余地があります)、逆に通信する必要があります。URLのアンカーは、これを実現するための手段です。次のことを行います。

  • ユーザーは(ブラウザーではなく)エージェントを起動し、資格情報を入力します
  • エージェント呼び出しは、サーバーへのログインのWeb要求を送信し、セッショントークンを取得します(基本的な暗号化を使用するか、HTTPSを使用してください)
  • 次に、エージェントはブラウザを起動します(たとえば、を実行してcmd.exe /c start "http[s]://domain.tld/start.aspx?x=y#sessiontoken"
  • セッショントークンはアンカーであるため、ネットワーク経由では送信されませんが、ブラウザ側のコードで使用できます...ビンゴ!
  • これで、2つの並列パスが開きます。セッショントークンを認識している人間の要求用のブラウザと、エージェントが上記のモードに移行します。
于 2012-05-24T01:10:37.067 に答える
0

ActiveX を使用してそれを行うか、(少なくとも私の経験ではカメラ、マイク、スキャナー) のサポートが制限されている Silverlight (または Flash) を使用できます。

しかし、あなたがやろうとしていることに関連する何かについての以前の経験を考えると、ビルド済みの SDK を購入することをお勧めします。

イメージング:

http://www.viscomsoft.com/

バーコード:

http://www.tec-it.com/software/barcode-software/tbarcode/barcode-generator/Default.aspx

于 2012-05-24T00:57:13.967 に答える