Conectando Silverlight para a porta COM computadores locais
-
03-07-2019 - |
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.
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