none
Как в Silverlight5 организовать обмен данными с внешним USB-устройством? RRS feed

  • Вопрос

  • На net
    4.5. обмен данными прекрасно работает (реализован аналогично
    http://www.nullify.net/Article/189), так как FileStream
    имеет конструктор, принимающий указатель на файл IntPtr? <o:p></o:p>



    В Silverlight5 ()
    конструктора FileStream  с указателем на файл нет. При попытке же
    задать путь к файлу в конструкторе
    FileStream(String,
    FileMode, FileAccess, FileShare, Int32)
    строкой -"\\\\.\\hid#vid_...."
    - выдает ошибку "FileStream не открывает устройства Win32, такие как
    логические диски и ленточные накопители. Избегайте использования
    "\\.\" в пути.".
    27 февраля 2014 г. 4:37

Ответы

  • Добрый день.

    Скучно вам не будет. Делается это так:

    1. Пишите ActiveX компонент для работы с USB портом.

    2. Пишете на javascript интерфейс для работы с этим компонентом.

    3. Из Silverlight приложения вызываете методы javascript.

    • Предложено в качестве ответа YatajgaEditor 1 марта 2014 г. 16:23
    • Отменено предложение в качестве ответа kati_1976 2 марта 2014 г. 10:09
    • Предложено в качестве ответа YatajgaEditor 11 марта 2014 г. 19:00
    • Помечено в качестве ответа YatajgaEditor 13 марта 2014 г. 6:16
    27 февраля 2014 г. 5:57
    Отвечающий

Все ответы

  • Добрый день.

    Скучно вам не будет. Делается это так:

    1. Пишите ActiveX компонент для работы с USB портом.

    2. Пишете на javascript интерфейс для работы с этим компонентом.

    3. Из Silverlight приложения вызываете методы javascript.

    • Предложено в качестве ответа YatajgaEditor 1 марта 2014 г. 16:23
    • Отменено предложение в качестве ответа kati_1976 2 марта 2014 г. 10:09
    • Предложено в качестве ответа YatajgaEditor 11 марта 2014 г. 19:00
    • Помечено в качестве ответа YatajgaEditor 13 марта 2014 г. 6:16
    27 февраля 2014 г. 5:57
    Отвечающий
  • Алексей, спасибо. Однако, КОМПОНЕНТ уже написан и работает (но на net 4.5!). Вызвать его методы из Silverlight-приложения невозможно из-за ограничений платформы Silverlight -  из Silverlight приложения можно вызвать только написанные на Silverlight компоненты.

    Вот и пришлось переписать этот компонент, сделав родителем класс Silverlight - UserControl. Но здесь то и столкнулась с еще одним ограничением Silverlight - В Silverlight5 () конструктора FileStream  с указателем на файл нет. Есть конструктор с путем к файлу. Но и он не принимает - -"\\\\.\\hid#vid_....". 

    2 марта 2014 г. 10:23
  • Еще раз. Вы не поняли. Из Silverlight напрямую НИКАК нельзя работать с USB портом. Только так, как я описал в предыдущем посте.
    2 марта 2014 г. 15:51
    Отвечающий
  • Уважаемый пользователь, вам же уже ответили, что это не очень просто. Вам стоило сначала повнимательнее изучить ответ.

    Сделаем содержимое сообщества лучше, вместе!

    2 марта 2014 г. 19:47
    Модератор
  • Алексей, спасибо. Я поняла Ваше предложение. Но, как писала ранее, КОМПОНЕНТ уже реализован! (пусть и не ActiveX). Считаю неоправданно большими затраты времени на реализацию еще одного КОМПОНЕНТА. Считаю, что задача состоит в адаптации существующего компонента к работе с Silverlight. Именно в этом и нужна помощь.

    3 марта 2014 г. 8:00
  • Да не вопрос.

    1. Поставляете свой компонент в виде Windows сервиса или COM объекта.

    2. Пишите ActiveX компонент для работы с этим сервисом или COM объектом.

    3. Пишете на javascript интерфейс для работы с этим ActiveX компонентом.

    4. Из Silverlight приложения вызываете методы javascript.

    3 марта 2014 г. 8:03
    Отвечающий
  • Алексей, спасибо. Поняла Вас. Другие варианты (кроме как использование ActiveX и javascript ) обойти ограничение конструктора FileStream в Silverlight5 можете предложить?

    3 марта 2014 г. 9:19
  • Нет. Это ограничение технологии Silverlight.
    3 марта 2014 г. 11:02
    Отвечающий
  • Ок, спасибо. Буду иметь ввиду предложенные Вами варианты. Пока на них не могу остановиться - слишком дорогостоящие (ресурсоемкие). Может на другом уровне (не клиентском) что-то найду. Спасибо!

    3 марта 2014 г. 12:22