logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[PC] - W czym tworzyć niewielkie aplikacje do komunikacji przez port szeregowy?

Tomasz Gumny 04 Paź 2012 18:16 3135 15
REKLAMA
  • #1 11377160
    Tomasz Gumny
    Poziom 28  
    Posty: 890
    Pomógł: 102
    Ocena: 34
    Dość regularnie potrzebuję programów, które komunikują się z tworzonymi lub remontowanymi urządzeniami przez port szeregowy (232, 485). Zwykle udawało się to obsłużyć terminalem lub programikiem wyproszonym u znajomego magika od Delphi. Zadaniem takiego programu jest zwykle odebranie jakiejś porcji danych oraz zapisanie jej na dysku. Opcjonalnie przydałoby się wyświetlanie danych w postaci tekstowej lub graficznej po uprzednim przemieleniu.
    Przykładem może być:
    -miernik lamp AVT-5229;
    -regulator temperatury AVT-5305;
    -charakterograf do lamp elektronowych:
    ===========================================================
    Title: 6p3s
    -----------------------------------------------------------
    Iamax(0-409.5mA) <0.1> = 200
    Pamax(0-200.0W) <0.1> = 20
    Pg2max(0-20.0W) <0.1> = 4
    Ug1(0-81.9[;0-81.9;0-81.9]V) <0.0>[;<0.0>;<0.0>] = 14
    Ua(0-409[;0-409;0-409]V) <0>[;<0>;<0>] = 0;180;10
    Ug2(0-409V or Ua) <0> = 180
    Interval(1-900s) <1> =
    Uh(0-25.5V) <6.3> =
    0:00s    6.3V / 0.922A    Wait for heating or press <ENTER>
    ----+-----+-----+------+-------+------+-------+-----+------
     Nr  Uh[V] Ih[A] Ug2[V] Ig2[mA] Ug1[V] Ig1[mA] Ua[V] Ia[mA]
    ----+-----+-----+------+-------+------+-------+-----+------
       1  6.3  0.923  181    21.00  -14.0    0.00    0     1.96
       2  6.3  0.922  181     9.62  -14.0    0.00    9    20.55
       3  6.3  0.920  181     3.49  -14.0    0.00   19    30.10
       4  6.3  0.922  181     3.75  -14.0    0.00   29    30.10
       5  6.3  0.925  181     4.17  -14.0    0.00   39    29.78
       6  6.3  0.921  181     4.34  -14.0    0.00   49    29.97
       7  6.3  0.925  181     4.34  -14.0    0.00   59    30.03
       8  6.3  0.926  181     4.19  -14.0    0.00   70    30.32
       9  6.3  0.924  181     3.84  -14.0    0.00   80    31.03
      10  6.3  0.924  181     3.33  -14.0    0.00   90    31.82
      11  6.3  0.923  181     2.91  -14.0    0.00  100    32.42
      12  6.3  0.926  181     2.46  -14.0    0.00  110    33.05
      13  6.3  0.922  181     2.25  -14.0    0.00  120    33.59
      14  6.3  0.927  181     1.98  -14.0    0.00  130    33.94
      15  6.3  0.922  181     1.83  -14.0    0.00  140    34.27
      16  6.3  0.922  181     1.70  -14.0    0.00  150    34.58
      17  6.3  0.922  181     1.64  -14.0    0.00  160    34.92
      18  6.3  0.921  181     1.59  -14.0    0.00  170    35.05
      19  6.3  0.923  181     1.51  -14.0    0.00  180    35.21
    ----+-----+-----+------+-------+------+-------+-----+------
    Note: OK
    Chciałbym móc tworzyć takie programiki na PC samodzielnie. Swoją karierę na PC zakończyłem na TurboPascalu w okolicach wersji 5. Od tego czasu programuję w asemblerze i C, ale tylko mikrokontrolery różnych rodzin.
    Jakie środowisko:
    1. umożliwia tworzenie małych, kompletnych aplikacji, nie wymagających instalowania w systemie Windows;
    2. ma dostępne biblioteki do obsługi portów szeregowych;
    3. działa na komputerach z nowymi wersjami Windows;
    4. jest darmowe lub dostępne w akceptowalnych przez żonę ;) cenach;
    5. można się go nauczyć przez najbliższy weekend. :)
    Dodam, że programy wolałbym pisać niż rysować lub wypełniać tabelki.
  • REKLAMA
  • Pomocny post
    #2 11377385
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Myślę, że wszystkie te wymagania spełni platforma .NET 4.0 i środowisko Visual Studio 2010 Express (celowo nie polecam najnowszej wersji 4.5 i 2012, przeznaczone bardziej na Windows 8).

    W punktach:
    1. Programy możesz pisać zarówno w wersji konsolowej jak i okienkowej. Do uruchomienia wymagają co prawda zainstalowania .NET Framework, który jest jednak oferowany również w "odchudzonej" wersji klienckiej.
    2. Posiada standardowo rozbudowaną klasę SerialPort do obsługi portu szeregowego właśnie.
    3. Działa na każdym komputerze na którym da się zainstalować .NET Framework, w tym na tych z najnowszymi Windowsami.
    4. Wersja Express jest całkowicie darmowa, również do zastosowań komercyjnych.
    5. Przez weekend nikt się jeszcze programowania nie nauczył ;), ale masz do wyboru środowisko dla języka C#, Visual Basic bądź C++. Ten ostatni raczej odradzam bo ma składnie bardziej skomplikowaną i mniej czytelną od dwóch pierwszych,skoro znasz C to składnia C# powinna Ci podpasować.
    Do tego dochodzi dobra dokumentacja bibliotek i ich funkcji na MSDN, przykład dla wspomnianego Serial Portu czy dużo materiałów, przykładów i gotowców na sieci. Aplikacje okienkowe możesz pisać w dużej mierze wspomagany wizualnym designerem, gdzie komponenty przeciągasz myszą na formę i odpowiednio je konfigurujesz. Może do ładnego pisania kodu droga daleka, ale właśnie takie proste programiki z całym kodem pod zdarzeniem kliknięcia przycisku można sobie dosyć szybko "wyklikać".

    Z serial portem od razu dodam że jest taki motyw na który chyba każdy kto go używał natknął się na początku, mianowicie zdarzenie odbioru jest dokonywane w osobnym wątku, i nie możesz w nim bezpośrednio ustawiać wartości komponentów na formie (textboxów, labeli etc.), bo dostaniesz komunikat o "cross thread exception". Sposoby na obejście (np. z użyciem tzw. delegata) znajdziesz m.in. na tym forum, ale to jak już się wgryziesz :).
  • REKLAMA
  • #3 11377468
    Defice
    Poziom 25  
    Posty: 698
    Pomógł: 101
    Ocena: 15
    Jeśli dobrze popatrzysz na forum było tu już sporo programów do komunikacji przez port szeregowy, pisanych głównie w C#.

    Co do szczegółów to chyba kolega marcinj12 napisał wystarczająco.
  • REKLAMA
  • #4 11377536
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #5 11377538
    Tomasz Gumny
    Poziom 28  
    Posty: 890
    Pomógł: 102
    Ocena: 34
    Dzięki! Zatem zasysam Visual Studio 2010 i sprawdzę jak daleko zajadę samodzielnie.
    Tak z ciekawości: co to jest ów niezbędny .NET 4.0 Framework?
  • #6 11377567
    Konto nie istnieje
    Poziom 1  
  • #7 11377570
    Defice
    Poziom 25  
    Posty: 698
    Pomógł: 101
    Ocena: 15
    Framework dostarcza narzędzia do pracy, jest niezbędny do pracy w Visual Studio. Innymi słowy to zbiór bibliotek klas. Wersja 4.0 to po prostu najnowsze wydanie.
  • #8 11377571
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Tomasz Gumny napisał:
    Tak z ciekawości: co to jest ów niezbędny .NET 4.0 Framework?
    Jest to zestaw wszystkich zbędnych i niezbędnych :) bibliotek oraz narzędzi z których korzysta program (np. do zarządzania pamięcią) oraz, co niemniej istotne, środowisko uruchomieniowe aplikacji napisanych w nim właśnie.
    Kod programu, który generuje Visual Studio, nie jest kodem maszynowym pod konkretny procesor, a jedynie tzw. językiem pośrednim tłumaczonym, a raczej kompilowanym na kod konkretnego procesora "w locie" przez środowisko uruchomieniowe zawarte w pakiecie .NET framework.
  • #10 11384373
    Tomasz Gumny
    Poziom 28  
    Posty: 890
    Pomógł: 102
    Ocena: 34
    Jak mogę w C# zrobić ściśle określoną pauzę między końcem jednego bloku wysyłanego przez port szeregowy i początkiem kolejnego? Najlepiej bez zmniejszania WriteBufferSize.
  • #12 11389488
    Tomasz Gumny
    Poziom 28  
    Posty: 890
    Pomógł: 102
    Ocena: 34
    marcinj12 napisał:
    [...] Przez weekend nikt się jeszcze programowania nie nauczył ;)
    Wiem - najgorzej było wyświetlić w okienku "Hello World", teraz jest już z górki. ;)
    [PC] - W czym tworzyć niewielkie aplikacje do komunikacji przez port szeregowy?
    Na razie program tylko sprawdza dostępne w systemie porty szeregowe, umożliwia wybranie jednego z nich a po naciśnięciu jednego z przycisków ustawia parametry transmisji i wysyła blok danych. Nadal kiepsko idzie mi odliczanie czasu między blokami danych, a chcę to opanować, bo to jedna z bardziej potrzebnych mi rzeczy.
  • #14 11390383
    Tomasz Gumny
    Poziom 28  
    Posty: 890
    Pomógł: 102
    Ocena: 34
    Próbuję zrobić tylko zapis i odczyt programów (bloków G-kod) na PC, żeby zastąpić Datasette w wiekowym sterowniku CNC. Na razie bez zagłębiania się w strukturę danych, bo dokumentacji żadnej nie ma. Jeśli struktura będzie czytelna, to chciałbym umożliwić pisanie i edycję programów na PC, bo na CNC to koszmar.
  • #15 11448349
    Tomasz Gumny
    Poziom 28  
    Posty: 890
    Pomógł: 102
    Ocena: 34
    Czy .NET musi być zainstalowany na każdym komputerze, na którym chcę uruchomić program napisany w C#, czy jest jakaś możliwość dołączenia potrzebnych bibliotek do wykonywalnego pliku?
  • #16 11448496
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Tomasz Gumny napisał:
    Czy .NET musi być zainstalowany na każdym komputerze, na którym chcę uruchomić program napisany w C#, czy jest jakaś możliwość dołączenia potrzebnych bibliotek do wykonywalnego pliku?
    Musi być zainstalowany. Ta sama wersja, do której była skompilowana aplikacja.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownicy forum dyskutują o tworzeniu aplikacji do komunikacji przez port szeregowy (RS-232, RS-485) z wykorzystaniem platformy .NET 4.0 oraz Visual Studio 2010 Express. Podkreślają, że .NET Framework oferuje klasę SerialPort do obsługi portów szeregowych, a aplikacje mogą być pisane w C# lub Visual Basic. Wskazują na możliwość zapisu danych do plików oraz ich wizualizacji. Pojawiają się pytania dotyczące implementacji pauz między blokami danych oraz wymagań dotyczących instalacji .NET na komputerach docelowych. Użytkownicy dzielą się doświadczeniami związanymi z programowaniem i tworzeniem prostych interfejsów do komunikacji z urządzeniami, takimi jak mierniki i regulatory.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA