我一直在寻找一种方法让我的 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 组件。

欢呼,乔纳斯

你仍然可以在浏览器中运行它并使用像

这样的包装器

http://interopcom.codeplex.com/ (由我撰写)

此致 保罗

本地计算机是指运行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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top