SilverlightをローカルコンピューターのCOMポートに接続する
-
03-07-2019 - |
質問
SilverlightアプリケーションがローカルコンピューターのCOMポートと通信する方法を探しています。誰かが、SilverlightをローカルコンピューターのCOMポートに正常に接続できるようにしましたか?その場合は、ドキュメントを参照してください。
解決
これは、Silverlightでは実行できません。
標準の.NETデスクトップアプリを使用するだけではどうですか?ウェブ上に簡単にデプロイする必要がある場合は、Click-Onceを使用してデプロイするだけです。
他のヒント
コンピューターリソースにはアクセスできませんが、ソケットと通信できます。そのため、ユーザーにポートでリッスンし、COMポートと通信するアプリケーションをインストールさせることができます。
なぜCOMポートと通信しようとしているのですか? Webカメラのサポートを探している場合は、Flashを使用してWebカメラの入力を取得するJonasのハックをご覧ください。 http://jonas.follesoe.no/WebcamInSilverlight2MacGyverStyle.aspx
これを行うには、Silverlightコントロールから、インターンがCOMポートにアクセスできるローカルソケットへのソケット接続を開きます
Silverlight 4では、COM(ActiveX)と通信できます。シリアルポートとの通信をサポートするCOMライブラリとの通信方法に関するブログ記事を書きました。
http://tech-michael.blogspot .com / 2009/12 / silverlight-talking-to-arduino.html
言及されているActiveXperts-objectは商用であることに注意してください。
連中はうまくまとめていると思います-Silverlightはサンドボックス内にあり、COMポートや他のローカルリソースにアクセスできません。
それでは、代替案について考え始めましょう:
- ClickOnceと完全な.NETアプリケーションを使用する-展開と更新が簡単になり、.NETフレームワークの全機能を利用できます。
- 追加のアクセス許可を要求するXBAP(Browser Deployed WPF)を使用します。ブラウザ内に存在しますが、.NET 3.0 / 3.5がインストールされたWindowsマシンでのみ実行されます
- GPSデバイスと通信してAPIを公開するActiveXコントロールを記述します。次に、JavaScriptを使用してこのAPIを使用し、SilverlightのJavaScriptコードとやり取りします。これにより、ブラウザ内にGPSアプリケーションが作成されますが、ユーザーは追加のGPS ActiveXコンポーネントをインストールする必要があります。
乾杯、 ジョナス
ローカルコンピューターとは、silverlightクライアントアプリが実行されているコンピューターのことですか? Silverlightはセキュリティサンドボックスで実行され、そのようなハードウェアリソースに接続できるかどうかは疑わしいです。
ジョン、
実際に、SilverlightからGPSを読み取ろうとしています。試してみたい面白いコンセプトがありますが、インストールフットプリントをゼロにしようとしていました。
WindowsおよびMacでアプリケーションを実行したい場合はどうしますか? Silverlightは両方で実行されるため、優れたソリューションです。 WPFアプリやActiveXコントロールなどを記述する必要がある場合、これは再びWindowsにのみバインドします。
Silverlight 5をローカルComm Portおよび他のローカルリソースに接続できますが、SilverlightアプリケーションがWindows(Macではなく)で実行され、OOB(out-of-browser)またはin- Internet Explorerのブラウザ。
これを行うには、 classic COMオートメーションコンポーネントを作成し、完全信頼でアプリケーションを実行します。 Silverlight 5アプリケーションをブラウザー内で完全に信頼して実行できるように設定できるレジストリキーがありますが、アプリケーションに署名し、公開キーをローカルコンピューター上の信頼できる発行元にインポートする必要があります。
完了したら、SilverlightはAutomactionFactoryをサポートし、ローカルに登録されたcomオートメーションオブジェクトにアクセスできます。この機能は広範囲に使用しています。それは非常に強力です。この場合、SerialPortオブジェクトへのアクセスを提供するCOMコンポーネントを作成し、使用可能なすべてのポートのリストを返すメソッドを提供しました。
If AutomationFactory.IsAvailable Then
SilPort = AutomationFactory.CreateObject("SilverPort.Ports")
Dim AllPorts() As String
AllPorts = SilPort.GetPortNames()
...
End If