Pregunta

He estado buscando alto y bajo para encontrar una manera de hacer que mi aplicación Silverlight se comunique con el puerto COM de mi computadora local. ¿Alguien ha logrado que Silverlight se conecte con éxito al puerto COM de su computadora local? Si es así, ¿puede indicarme la documentación?

¿Fue útil?

Solución

Esto no se puede hacer con Silverlight.

¿Por qué no usar una aplicación de escritorio .NET estándar? Si necesita una implementación sencilla a través de la web, solo use Click-Once para la implementación.

Otros consejos

No hay acceso a los recursos de la computadora, pero puedes comunicarte con sockets. Por lo tanto, es posible que los usuarios instalen una aplicación que escuche en un puerto y se comunique con un puerto COM.

¿Por qué intentas comunicarte con un puerto COM? Si está buscando soporte para la cámara web, eche un vistazo al truco de Jonas que usa Flash para obtener la entrada de la cámara web: http://jonas.follesoe.no/WebcamInSilverlight2MacGyverStyle.aspx

Puede hacer esto abriendo una conexión socket de su control de Silverlight a un socket local que el interno tenga acceso al puerto COM

Silverlight 4 le permite comunicarse con COM (ActiveX). He escrito un artículo de blog sobre cómo comunicarme con una biblioteca COM que admite la comunicación con el puerto serie.

http: //tech-michael.blogspot .com / 2009/12 / silverlight-talking-to-arduino.html

Tenga en cuenta que el objeto ActiveXperts mencionado es comercial.

Creo que los muchachos lo han resumido muy bien: Silverlight está en un espacio limitado y no tendrás acceso al puerto COM ni a otros recursos locales.

Comencemos a pensar en alternativas:

  • Use ClickOnce y una aplicación .NET completa: le brinda una fácil implementación y actualizaciones, y tendrá todo el poder del marco .NET.
  • Use un XBAP (Browser Deployed WPF) que solicite algunos permisos adicionales. Viviría dentro del navegador, pero solo se ejecutaría en máquinas Windows con .NET 3.0 / 3.5 instalado
  • Escriba un control ActiveX que se comunique con el dispositivo GPS y exponga una API. Luego use JavaScript para consumir esta API e interactúe con el código JavaScript de Silverlight. Esto le daría una aplicación de GPS en el navegador, pero sus usuarios tendrían que instalar un componente ActiveX GPS adicional.

Saludos, Jonas

Todavía puedes ejecutarlo desde el navegador y utilizar un contenedor como

http://interopcom.codeplex.com/ (escrito por mí)

Saludos, Paul

Por computadora local, ¿te refieres a la computadora en la que se ejecuta la aplicación de cliente de Silverlight? Silverlight se ejecuta en un entorno limitado de seguridad, y es dudoso que pueda conectarse a recursos de hardware como tal.

Jon,

En realidad estoy tratando de leer mi GPS de Silverlight. Tengo un concepto interesante que quería probar, pero estaba intentando no tener una huella de instalación cero.

¿Qué sucede si desea que su aplicación se ejecute en Windows y Mac? Silverlight es una buena solución ya que se ejecuta en ambos. Si tiene que escribir una aplicación WPF o un control ActiveX, etc., esto lo vinculará solo con Windows nuevamente.

Puede conectar Silverlight 5 al puerto de comunicaciones local, así como a cualquier otro recurso local, pero solo con la aplicación Silverlight se ejecuta en Windows (no en Mac) y cuando se ejecuta OOB (fuera del navegador) o en navegador en Internet Explorer.

La forma en que se hace esto es creando un componente de automatización COM clásico y ejecutando la aplicación con Full Trust. Puede configurar una clave de registro para permitir que las aplicaciones de Silverlight 5 puedan ejecutarse con total confianza en el navegador, pero la aplicación debe estar firmada y la clave pública debe importarse a los editores de confianza en la máquina local.

Una vez hecho esto, Silverlight admite AutomactionFactory, lo que le permite acceder a objetos de automatización COM registrados localmente. Utilizamos esta función ampliamente; Es muy potente. En este caso, creamos un componente COM que le da acceso al objeto SerialPort y le dimos un método para devolver una lista de todos los puertos disponibles.

If AutomationFactory.IsAvailable Then
      SilPort = AutomationFactory.CreateObject("SilverPort.Ports")
      Dim AllPorts() As String
      AllPorts = SilPort.GetPortNames()
      ...
End If
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top