Подключение Silverlight к COM-порту локальных компьютеров

StackOverflow https://stackoverflow.com/questions/227174

  •  03-07-2019
  •  | 
  •  

Вопрос

Я долго искал способ заставить мое приложение silverlight подключаться к COM-порту на моем локальном компьютере.Смог ли кто-нибудь заставить Silverlight успешно подключиться к COM-порту вашего локального компьютера?Если да, то не могли бы вы указать мне на документацию?

Это было полезно?

Решение

Этого нельзя сделать с помощью Silverlight.

Почему бы просто не использовать стандартное настольное приложение .NET? Если вам нужно легко развернуть через Интернет, просто используйте Click-Once для развертывания.

Другие советы

Нет доступа к ресурсам компьютера, но вы можете общаться с сокетами. Таким образом, пользователи могут установить приложение, которое прослушивает порт и взаимодействует с COM-портом.

Почему вы пытаетесь связаться с COM-портом? Если вы ищете поддержку веб-камеры, посмотрите на взлом Jonas, который использует Flash для получения информации с веб-камеры: http://jonas.follesoe.no/WebcamInSilverlight2MacGyverStyle.aspx

Вы можете сделать это, открыв соединение сокет от своего элемента управления Silverlight до локального сокета, который имеет доступ к порту COM

Silverlight 4 позволяет вам общаться с COM (ActiveX). Я написал статью в блоге о том, как связаться с библиотекой COM, которая поддерживает связь с последовательным портом.

http: //tech-michael.blogspot .com / 2009/12 / Silverlight-говорящей к arduino.html

Обратите внимание, что упомянутый объект ActiveXperts является коммерческим.

Я думаю, ребята хорошо подвели итог - Silverlight находится в закрытой песочнице, и вы не получите доступа к COM-порту или другим локальным ресурсам.

Итак, давайте начнем думать об альтернативах:

  • Используйте ClickOnce и полноценное .СЕТЕВОЕ приложение - обеспечивает простое развертывание и УДП, а также вы будете пользоваться всеми возможностями .NET Framework.
  • Используйте XBAP (WPF, развернутый браузером), который запрашивает некоторые дополнительные разрешения.Будет работать внутри браузера, но работать только на компьютерах с Windows с установленным .NET 3.0 / 3.5
  • Напишите элемент управления ActiveX, который взаимодействует с устройством GPS и предоставляет API.Затем используйте JavaScript для использования этого API и взаимодействия с JavaScript-кодом из Silverlight.Это дало бы вам встроенное в браузер приложение GPS, но вашим пользователям пришлось бы установить дополнительный компонент ActiveX GPS.

Твое здоровье, Джонас

Вы все еще можете запустить его из браузера и использовать оболочку, например

http://interopcom.codeplex.com/ (написано мной)

С уважением, Пол

Под локальным компьютером вы подразумеваете компьютер, на котором запущено клиентское приложение silverlight? Silverlight работает в изолированной программной среде безопасности, и сомнительно, что вы можете подключиться к аппаратным ресурсам следующим образом.

Джон,

На самом деле я пытаюсь считать свой GPS с Silverlight.У меня есть интересная концепция, которую я хотел опробовать, но я пытался добиться нулевого объема установки.

Что если вы хотите, чтобы ваше приложение работало на Windows и Mac? Silverlight - хорошее решение, поскольку оно работает на обоих. Если вам нужно написать приложение WPF или элемент управления ActiveX и т. Д., Это только снова приведет вас к Windows.

Вы можете подключить Silverlight 5 к локальному порту связи, а также к любому другому локальному ресурсу, но только с приложением 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