Pergunta

Fui à procura alta e baixa para uma maneira de obter o meu aplicativo do silverlight falar com a porta COM no meu computador local. Tem alguém aí fora sido capaz de obter Silverlight se conectar com êxito à porta COM de seu computador local? Se assim você pode apontar-me a documentação.

Foi útil?

Solução

Isto não pode ser feito com o Silverlight.

Por que não usar um aplicativo de desktop .NET padrão? Se você precisa implantar facilmente através da web, basta usar Clique-Once para implantação.

Outras dicas

Não há nenhum acesso aos recursos do computador, mas você pode se comunicar com soquetes. Portanto, é possível ter seus usuários instalar uma aplicação que escuta em uma porta e se comunica com uma porta COM.

Por que você está tentando se comunicar com uma porta COM? Se você está procurando suporte a webcam, dê uma olhada corte de Jonas, que usa o Flash para obter a entrada da webcam: http://jonas.follesoe.no/WebcamInSilverlight2MacGyverStyle.aspx

Você pode fazer isso abrindo um tomada conexão do seu controle do Silverlight para um socket local estagiário que têm o acesso à porta COM

Silverlight 4 permite communciate com COM (ActiveX). Eu escrevi um artigo no blog sobre como se comunicar com uma biblioteca COM que suporta a comunicação com a porta serial.

http: //tech-michael.blogspot .com / 2009/12 / Silverlight-falar-à-arduino.html

Note que o ActiveXperts-objeto mencionado é comercial.

Eu acho que os caras têm resumiu muito bem -. Silverlight está em uma sandbox apertado e você não terá acesso ao porto COM ou outros recursos locais

Então, vamos começar a pensar em alternativas:

  • Use ClickOnce e uma plena aplicação .NET -. Dá-lhe fácil implantação e udpates, e você terá toda a potência do .NET framework
  • Use um XBAP (Navegador Implantado WPF) que solicita algumas permissões adicionais. Viveria dentro do navegador, mas apenas executar em máquinas Windows com .NET 3.0 / 3.5 instalado
  • Escrever um controle ActiveX que fala com o dispositivo GPS e expor uma API. Em seguida, use JavaScript para consumir essa API e interagir com o código JavaScript do Silverlight. Isto lhe daria uma aplicação de GPS no navegador, mas os usuários teriam que instalar um componente ActiveX GPS adicional.

Cheers, Jonas

Você ainda pode executá-lo fora do navegador e utilizar um invólucro como

http://interopcom.codeplex.com/ (escrito por mim)

Saudações, Paul

Por computador local que você quer dizer ao computador o aplicativo cliente do Silverlight está sendo executado em? runs Silverlight em uma proteção de segurança, e é duvidoso que você pode se conectar a recursos de hardware como tal.

Jon,

Na verdade, estou tentando ler o meu GPS do Silverlight. Eu tenho um conceito interessante que eu queria experimentar, mas eu estava tentando ir para um zero instalar pegada.

E se você quiser que seu aplicativo para ser executado no Windows e Mac? Silverlight é uma boa solução, uma vez que é executado em ambos. Se você tem que escrever um aplicativo WPF ou um controle ActiveX, etc., isso vai ligar você a apenas Windows novamente.

Você pode conectar Silverlight 5 para a porta Comm local, bem como qualquer outro recurso local, mas apenas com a aplicação Silverlight está sendo executado no Windows (não Mac) e quando executando o OOB (out-of-browser) ou in- navegador no Internet Explorer.

A forma como isso é feito é através da criação de um clássico componente de automação COM, e executar o aplicativo com confiança total. Há uma chave de registro pode ser configurado para permitir que o Silverlight 5 aplicações para ser capaz de executar com confiança total no navegador, mas o pedido deve ser assinado e a chave pública deve ser importado para editores confiáveis ??na máquina local.

Uma vez feito isso, o Silverlight suporta AutomactionFactory, permitindo-lhe acesso localmente objetos de automação COM registrados. Nós usamos esse recurso extensivamente; é muito poderoso. Neste caso, criamos um componente COM que dá acesso ao objeto SerialPort, e deu-lhe um método para retornar uma lista de todas as portas disponíveis.

If AutomationFactory.IsAvailable Then
      SilPort = AutomationFactory.CreateObject("SilverPort.Ports")
      Dim AllPorts() As String
      AllPorts = SilPort.GetPortNames()
      ...
End If
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top