Question

Je cherchais haut et bas un moyen de faire en sorte que mon application silverlight communique avec le port COM de mon ordinateur local. Quelqu'un at-il déjà réussi à faire connecter Silverlight au port COM de votre ordinateur local? Si tel est le cas, pouvez-vous m'indiquer la documentation?

Était-ce utile?

La solution

Cela ne peut pas être fait avec Silverlight.

Pourquoi ne pas utiliser simplement une application de bureau .NET standard? Si vous avez besoin de déployer facilement sur le Web, utilisez simplement Click-Once pour le déploiement.

Autres conseils

Il n’ya pas d’accès aux ressources de l’ordinateur, mais vous pouvez communiquer avec des sockets. Il est donc possible que vos utilisateurs installent une application qui écoute sur un port et communique avec un port COM.

Pourquoi essayez-vous de communiquer avec un port COM? Si vous recherchez un support par webcam, jetez un coup d'œil au piratage de Jonas qui utilise Flash pour obtenir les données de la webcam: http://jonas.follesoe.no/WebcamInSilverlight2MacGyverStyle.aspx

Vous pouvez le faire en ouvrant une connexion socket à partir de votre contrôle Silverlight vers un socket local auquel les utilisateurs internes ont accès au port COM

Silverlight 4 vous permet de communiquer avec COM (ActiveX). J'ai écrit un article de blog sur la communication avec une bibliothèque COM prenant en charge la communication avec le port série.

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

Notez que l'objet ActiveXperts mentionné est commercial.

Je pense que les gars l'ont bien résumé: Silverlight est dans un bac à sable étroit et vous n'aurez pas accès au port COM ou à d'autres ressources locales.

Commençons donc à réfléchir à des alternatives:

  • Utilisez ClickOnce et une application .NET complète - Facilite le déploiement et les modifications, et vous aurez toute la puissance du framework .NET.
  • Utilisez un XBAP (WPF déployé par le navigateur) qui demande des autorisations supplémentaires. Vivrait dans le navigateur, mais ne fonctionnerait que sur des machines Windows avec .NET 3.0 / 3.5 installé
  • Ecrivez un contrôle ActiveX qui communique avec le périphérique GPS et expose une API. Utilisez ensuite JavaScript pour utiliser cette API et interagir avec le code JavaScript de Silverlight. Cela vous donnerait une application GPS intégrée au navigateur, mais vos utilisateurs devraient installer un composant GPS ActiveX supplémentaire.

Salut, Jonas

Vous pouvez toujours l'exécuter en dehors du navigateur et utiliser un wrapper comme

http://interopcom.codeplex.com/ (écrit par moi)

Cordialement, Paul

Par ordinateur local, voulez-vous dire l'ordinateur sur lequel l'application client Silverlight est en cours d'exécution? Silverlight s'exécute dans un sandbox de sécurité et il est douteux que vous puissiez vous connecter à des ressources matérielles de cette manière.

Jon,

J'essaie actuellement de lire mon GPS depuis Silverlight. J'ai un concept intéressant que je voulais expérimenter, mais j'essayais de choisir une installation zéro.

Et si vous voulez que votre application s'exécute sous Windows et Mac? Silverlight est une bonne solution car il fonctionne sur les deux. Si vous devez écrire une application WPF ou un contrôle ActiveX, etc., cela ne vous liera plus à Windows.

Vous pouvez connecter Silverlight 5 au port de communication local ainsi qu’à toute autre ressource locale, mais uniquement lorsque l’application Silverlight est exécutée sous Windows (pas Mac) et lorsqu’il est exécuté en mode hors-navigateur ou in navigateur dans Internet Explorer.

Pour ce faire, créez un composant d’automatisation COM classique et exécutez l’application avec Full Trust. Vous pouvez définir une clé de registre pour permettre aux applications Silverlight 5 de fonctionner avec une confiance totale dans le navigateur, mais l'application doit être signée et la clé publique doit être importée vers des éditeurs approuvés sur l'ordinateur local.

Une fois terminé, Silverlight prend en charge AutomactionFactory, ce qui vous permet d’accéder aux objets d’automatisation com enregistrés localement. Nous utilisons abondamment cette fonctionnalité. c'est très puissant. Dans ce cas, nous avons créé un composant COM qui donne accès à l'objet SerialPort et lui avons donné une méthode pour renvoyer une liste de tous les ports disponibles.

If AutomationFactory.IsAvailable Then
      SilPort = AutomationFactory.CreateObject("SilverPort.Ports")
      Dim AllPorts() As String
      AllPorts = SilPort.GetPortNames()
      ...
End If
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top