Witam,
Mam do zrobienia projekt dekoder morse'a
Założyłem sobie tak, że czas trwania sygnału (np. na woltomierzu) decyduje jaki znak przyszedł (kropka czy kreska), następnie kropki i kreski dekoduje na litery. Zamiana znaków na litery nie jest problemem. Problemem natomiast jest klasyfikowanie jak długo trwał sygnał wysoki oraz jak długo trwał niski. Jako że w chwili obecnej nie mam dostępu do tego woltomierza, chciałbym to zrobić aby sygnałem był chociażby jakiś pasek, lub nawet przełącznik typu boolean na front panelu. Ale jak zabrać się za pomiar czasu trwania danego stanu? Próbowałem z dwiema pętlami if, i przekazywaniu wartości Tick Count do drugiej pętli w chwili skończenia tej pierwszej, ale czasami wysyła wynik z pierwszego obiegu pętli a czasami z ostatniego. Czy mógłbym liczyć na jakąś pomoc jak to zrobić?
pozdrawiam
Obliczanie czasu trwania sygnału
Re: Obliczanie czasu trwania sygnału
A może coś takiego na Eventach?
Możesz dodać kolejkę, która wysyłała by z pętli generatora do pętli dekodera czasy trwania poszczególnych stanów i skladała z tego znaki.
Możesz dodać kolejkę, która wysyłała by z pętli generatora do pętli dekodera czasy trwania poszczególnych stanów i skladała z tego znaki.
- Załączniki
-
- MorseGen.vi
- (9.91 KiB) Pobrany 302 razy
Obliczanie czasu trwania sygnału
Dzięki!, o to chodziło,
Jednakże mam pytanko co do kolejek i samego dekodera. Dekoder aktualnie czyta ciąg znaków wpisany przed jego uruchomieniem i zamienia (za pomocą bloku Search and Replace String) na litery. Rozumiem że sam dekoder również trzeba umieścić w innym case structure który bierze porcje kropek i kresek z kolejki w przypadku gdy "cisza" trwa więcej niż 3 kropki? Poza tym nie wiem jak zrobić by wyświetlać wszystkie odebrane litery a nie tylko ostatnią (jeszcze do tego nie doszedłem ale pytam na zapas). Wybaczcie być może za banalne pytanie ale jestem naprawdę newbie
Jednakże mam pytanko co do kolejek i samego dekodera. Dekoder aktualnie czyta ciąg znaków wpisany przed jego uruchomieniem i zamienia (za pomocą bloku Search and Replace String) na litery. Rozumiem że sam dekoder również trzeba umieścić w innym case structure który bierze porcje kropek i kresek z kolejki w przypadku gdy "cisza" trwa więcej niż 3 kropki? Poza tym nie wiem jak zrobić by wyświetlać wszystkie odebrane litery a nie tylko ostatnią (jeszcze do tego nie doszedłem ale pytam na zapas). Wybaczcie być może za banalne pytanie ale jestem naprawdę newbie
Obliczanie czasu trwania sygnału
Ja bym zrobił osobny wątek dla dekodera - pętla While z odbiorem czasów z kolejki. Tu bym sprawdzał na podstawie czasów, jaki to znak, i wrzucałbym do stringa za pomoca bloczka concatenate string. Zobacz jak wygląda architektura programu z uzyciem Eventów i kolejek, z menu File -> New... ->VI -> From Template -> Frameworks -> Producer/Consumer Design Pattern (Events). W pętle Producer wrzucasz generator Morse'a, a w pętlę Consument dekoder.
Re: Obliczanie czasu trwania sygnału
Ostatecznie zrobiłem inaczej, ale dzięki kolego za pomoc, teraz tylko muszę czekać na dostęp do laboratorium i napisać odczyt z woltomierza.
Pozdrawiam
Pozdrawiam