トップ回答者
シリアル通信

質問
-
ASP.NETにて、シリアル通信にて機器へコマンドを送信して、機器から送られてくるデータを受信しております。
シリアル通信の流れは、CreateFileにてCOMポートを開き、WriteFileにてコマンドを送信し、ReadFileにてデータを受信しております。
開発パソコンがASPサーバーで、クライアントも同一パソコンにて動作確認をしておりましたので、大きな勘違いをしておりました。
勘違いとは開発パソコンのUSBポートに機器を接続し、上記のシリアル通信を実行しておりました。それでクライアントの環境においても、正常に動作していると思っておりましたが、現在のプログラムでは、サーバーに接続した機器へシリアル通信するプログラムとなっており、クライアントパソコンへ接続した機器へシリアル通信は行なえていない事に気付きました。
ASP.NETにて、クライアントのCOMポートを開き、コマンド送信及び受信する事は可能なのでしょうか?当方の開発環境はFrameWork1.1です。VBにて開発しております。
アドバイスの方、よろしくお願い致します。
回答
-
> こんな環境をASP.NETで出来ないのでしょうか?
クライアントとなるマシンのセキュリティ設定等をいじれるのであればできないことはないと思います。
ただ、その場合ASP.NETでつくるというより、ASP.NETからActiveX等を呼び出して使う、という形になるでしょう。> 確か国土交通省のコアシステムはJAVAを使っておりました。
電子入札のシステムだったらセキュリティいじってましたよね、たしか。
あと、ブラウザのバージョンに制限があるとかいろいろクライアント側に課す制限ありませんでしたっけ?
そういった限定条件のもとでならつくれると思います。 -
サーバー側の資源を直接参照できないとは、
C:とか、D:\temp\work1.txtとか
そういった参照ができないという意味です。
厳密にいうと、ネットワーク接続したクライアント側のドライブ
(サーバの何とかドライブとネットワーク接続している)X:とかは利用できます。
あくまで、クライアント上のドライブとして扱われる資源しか参照できません。
ただし、このやり方も、セキュリティと運用のからみで問題がいろいろあり、
お勧めはしませんが。
(例えば、クライアントにログインしているユーザーで、ネットワーク接続できるか
等)電子入札コアシステムの例はわかりませんが、
ActiveXを利用する場合、
上記ネットワークドライブでサーバ資源を利用するか
サーバ上にCOM+等で作成したアプリケーションを動作させて
それと通信するかその他の方法(私は思いつきませんがあるかもしれません)
により、
サーバ上の資源を利用します。
すべての返信
-
うーん、どっとねっとふぁんさんのコメントも付いていることですし、こういう回答していいかどうか迷いますが…。
超強引に行くならば、Terminal Service使えばクライアントのCOMポートがリダイレクトされます。「リモートデスクトップ接続」の「ローカルリソース」というタブです。ここで「シリアルポート」にチェックを入れておけば、サーバ側で禁止されていない限り、クライアントのCOMポートに接続された機器ががあたかもサーバにあるように動きます。
ただ、これは「できるよ」ということだけで、それがシステムに本当によいことなのかどうかまでは責任を持てません。
-
> こんな環境をASP.NETで出来ないのでしょうか?
クライアントとなるマシンのセキュリティ設定等をいじれるのであればできないことはないと思います。
ただ、その場合ASP.NETでつくるというより、ASP.NETからActiveX等を呼び出して使う、という形になるでしょう。> 確か国土交通省のコアシステムはJAVAを使っておりました。
電子入札のシステムだったらセキュリティいじってましたよね、たしか。
あと、ブラウザのバージョンに制限があるとかいろいろクライアント側に課す制限ありませんでしたっけ?
そういった限定条件のもとでならつくれると思います。 -
よくある勘違いですよね。(困ったことに)
残念ながら、ASP.NETからはどうあがいてもクライアントの資源は参照できません
セキュリティの問題は、他の方が列挙されていますのであえて述べませんが、
VBScriptで、OpenしてCOMポートを参照できます。
(IEのセキュリティ設定を低くする必要がありますし、
これをすると、VBScriptから、format c:もできてしまいそうなので
どうかな?とは思いますが)また、ActiveXを作成して呼び出す方法もあります。
(ただし、今度は、サーバ側の資源を直接参照することはできません。
COM+とかを使うとできなくはないですが。)
-
サーバー側の資源を直接参照できないとは、
C:とか、D:\temp\work1.txtとか
そういった参照ができないという意味です。
厳密にいうと、ネットワーク接続したクライアント側のドライブ
(サーバの何とかドライブとネットワーク接続している)X:とかは利用できます。
あくまで、クライアント上のドライブとして扱われる資源しか参照できません。
ただし、このやり方も、セキュリティと運用のからみで問題がいろいろあり、
お勧めはしませんが。
(例えば、クライアントにログインしているユーザーで、ネットワーク接続できるか
等)電子入札コアシステムの例はわかりませんが、
ActiveXを利用する場合、
上記ネットワークドライブでサーバ資源を利用するか
サーバ上にCOM+等で作成したアプリケーションを動作させて
それと通信するかその他の方法(私は思いつきませんがあるかもしれません)
により、
サーバ上の資源を利用します。