Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

STM32F3 USB CDC VCOM z C# Windows

Piotrus_999 15 Maj 2017 11:58 657 6
  • #1 15 Maj 2017 11:58
    Piotrus_999
    Poziom 39  

    Witam!

    Mam opóźnienia w trakcie transmisji (a raczej do rozpoczęcia transmisji części pakietów).
    STM32F3 USB CDC VCOM z C# Windows

    Czy może koledzy mają jakiś pomysł skąd się one biorą? Czy to może jakiś wredny timeout windowsów czekających na dane do wysłania?

  • #2 15 Maj 2017 13:57
    excray
    Poziom 38  

    Piotrus_999 napisał:
    Czy to może jakiś wredny timeout windowsów czekających na dane do wysłania?

    Tak może być. Mam podobne doświadczenia w materii wysyłania i odbierania danych RSowych w windowsie.

  • #3 15 Maj 2017 14:43
    Piotrus_999
    Poziom 39  

    Zastanawiam się nad jakimś rozwiązaniem "bezsterownikowym". Może zrobię z niego Mass storage? I strumień danych stanie się plikiem.

    Dodano po 33 [minuty]:

    PS - Ktoś mnie zgłosił do moderatora że to niby zły dział. To niech doradzi gdzie pytać o takie tematy?

  • Pomocny post
    #4 15 Maj 2017 15:35
    excray
    Poziom 38  

    Można spróbować nadać procesowi wyższy priorytet w menedżerze zadań. Generalnie nie testowałem takiej opcji, bo zdecydowałem się takie testy na czas odpowiedzi w transmisji RS232, przeprowadzać za pomocą dodatkowego mikrokontrolera.

  • #5 15 Maj 2017 16:51
    Piotrus_999
    Poziom 39  

    excray napisał:
    przeprowadzać za pomocą dodatkowego mikrokontrolera.
    uC wysyła strumień danych. A właśnie chce uniknąć grzebania w windowsach, bo oczywiście napisałem swój "custom" klasę USB gdzie problemów nie ma, ale to wymaga właśnie instalowania sterownika, czego staram się uniknac

  • Pomocny post
    #6 15 Maj 2017 16:59
    michcior
    Poziom 28  

    Ogólnie wiadomo, że Windows-owy drajwer do VCOM-a to łagodnie mówiąc szajs. Powstał jako element drajwera do modemu przez USB i tak już pozostał. Z jakiegoś powodu wszystkie wirtualne com-y USB go nie używają (FTDI/Prolific). Dodatkowo, co prawda jak przez mgłę, ale pamiętam że sporo lat temu pracowałem przy projekcie gdzie był właśnie VCOM po USB, osoby które to robiły generowały sporo WTF, i to właśnie coś jakby twój problem było, podobno dość znany "feature".

    Alternatywa bez-drajwerowa to raczej HID, chyba że trzeba sporo danych pompować.

    Gdybyś chciał zrobić "mass storage" to generalnie trochę więcej zachodu będzie ale na mikrokontrolerze to raczej jest proste. Raz to robiłem i pamiętam że to jest prosty protokół żywcem wzięty ze SCSI i dziś pewnie pełno gotowców. To co jest problemem, to dostęp do przestrzeni dysku. W linuksie oczywiście banał, plik: /dev/sd* (albo inaczej). W Windowsie musiałbyś emulować FAT albo dostać się do przestrzeni dysku. Mało kto o tym wie ale jest tak samo jak w linuksie, można otworzyć, czytać czy zapisywać dyska jak piki i to od pierwszego sektora. To jest taki specjalny identyfikator pliku : https://support.microsoft.com/en-us/help/100027/info-direct-drive-access-under-win32

    Gdybyś jednak miał możliwość zainstalowania drajwera tylko nie chciał go pisać, to polecam gorąco "libusb". To biblioteka dająca pełny dostęp do urządzenia USB z poziomu aplikacji. Można absolutnie wszystko.

  • #7 15 Maj 2017 17:11
    Piotrus_999
    Poziom 39  

    michcior napisał:
    libusb
    oczywiscie używam :). Dzięki za rady. Właśnie pod koniec tygodnia pomajstruje sobie z MSC.

    HID odpada właśnie z powodu prędkości. Chciałbym osiągnąć z 10 Mb efektywnie na FS

Szybka odpowiedź lub zadaj pytanie
Dziękuję Ci. Ta wiadomość oczekuje na moderatora.
 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME