将 Silverlight 连接到本地计算机的 COM 端口
-
03-07-2019 - |
题
我一直在寻找一种方法让我的 silverlight 应用程序与本地计算机上的 COM 端口进行通信。有没有人能够让 Silverlight 成功连接到本地计算机的 COM 端口?如果是这样,你能指出我的文档吗?
解决方案
使用Silverlight无法做到这一点。
为什么不使用标准的.NET桌面应用程序?如果您需要通过Web轻松部署,只需使用Click-Once进行部署。
其他提示
无法访问计算机资源,但您可以与套接字通信。因此,您的用户可以安装一个侦听端口并与COM端口通信的应用程序。
为什么要尝试与COM端口通信?如果您正在寻找网络摄像头支持,请查看使用Flash获取网络摄像头输入的Jonas的hack: http://jonas.follesoe.no/WebcamInSilverlight2MacGyverStyle.aspx
您可以通过从Silverlight控件打开套接字连接到本地插槽,该实体具有COM端口访问权限
Silverlight 4使您可以与COM(ActiveX)通信。我写了一篇关于如何与支持与串口通信的COM库进行通信的博客文章。
http://tech-michael.blogspot .COM / 2009/12 / Silverlight的谈话到arduino.html
请注意,提到的ActiveXperts-object是商业用途。
我认为这些人总结得很好 - Silverlight 位于一个严格的沙箱中,您将无法访问 COM 端口或其他本地资源。
那么让我们开始考虑替代方案:
- 使用 ClickOnce 和完整的 .NET 应用程序 - 让您轻松部署和更新,并且您将拥有 .NET 框架的全部功能。
- 使用请求一些额外权限的 XBAP(浏览器部署的 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端口以及任何其他本地资源,但只有Silverlight应用程序在Windows(而非Mac)下运行,并且在运行OOB(浏览器外)或在 - Internet Explorer中的浏览器。
这样做的方法是创建一个经典 COM自动化组件,并使用完全信任运行该应用程序。您可以设置一个注册表项,以允许Silverlight 5应用程序能够在浏览器中以完全信任的方式运行,但必须对应用程序进行签名,并且必须将公钥导入本地计算机上的受信任发布者。
完成后,Silverlight支持AutomactionFactory,允许您访问本地注册的com自动化对象。我们广泛使用这个功能;它非常强大。在这种情况下,我们创建了一个COM组件,可以访问SerialPort对象,并为其提供了一个返回所有可用端口列表的方法。
If AutomationFactory.IsAvailable Then
SilPort = AutomationFactory.CreateObject("SilverPort.Ports")
Dim AllPorts() As String
AllPorts = SilPort.GetPortNames()
...
End If