Odpowiedz 
 
Ocena wątku:
  • 4 Głosów - 5 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Monitor ramek APRS
SQ9MDD Offline
Rysiek
****

Liczba postów: 380
Dołączył: 01-02-2009
Post: #1
Copyleft Monitor ramek APRS
Witam, po miesiącach obijania się w temacie hobby (praca mnie zaabsorbowała), postanowiłem powalczyć z programowaniem AVR-ów w Bascomie.
To moje pierwsze podejście do programowania AVR, napisałem monitor ramek do ARPS. Urządzenie ma za zadanie wyświetlać na panelu lcd 20x4 ramki które wyrzuca MiniTNC za pomocą łącza szeregowego.
Jako środowisko testowe użyłem kitu AVT 3500 i procesora 2313. Oczywiście 2kb miejsca na procesorze i kod w baskomie to straszna bieda. Ale na początek wystarcza.

Może koledzy podzielą się jakimiś ciekawymi programami (własnego autorstwa). Gdzie na przykładzie będzie można się czegoś nauczyć.

Środowisko testowe na zdjęciu.


A tutaj kod.

Kod:
'      SQ9MDD <rlabus@luxmat.com> 2010
'
'      This program is free software; you can redistribute it and/or modify
'      it under the terms of the GNU General Public License as published by
'      the Free Software Foundation; either version 2 of the License, or
'      (at your option) any later version.
'
'      This program is distributed in the hope that it will be useful,
'      but WITHOUT ANY WARRANTY; without even the implied warranty of
'      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
'      GNU General Public License for more details.
'
'      You should have received a copy of the GNU General Public License
'      along with this program; if not, write to the Free Software
'      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
'      MA 02110-1301, USA.
Config Serialin = Buffered , Size = 15

Dim Na As String * 15
Dim Nb As String * 9
Dim Nc As String * 9
Dim Nd As String * 9
Dim Ma As String * 7
Dim Mb As String * 7
Dim Mc As String * 7
Dim Md As String * 7
Dim Whereis As Integer
Dim Zstart As Bit
Enable Interrupts
Cursor Off
'-----------------------------------------------------------------
Cls
Locate 1 , 1
Lcd "APRS MONITOR.v.0.02a"
Locate 2 , 1
Lcd "-------SQ9MDD-------"
Wait 5
Locate 4 , 1
Lcd "waiting for data..."
'-----------------------------------------------------------------
Do

  If Ischarwaiting() = 1 Then                               'jesli bufor nie jest pusty

    Input Na Noecho                                         'wczytuje dane z bufora znak stacji

                                                          ' jesli bufor dluzszy niz 14 znakow to!
      If Len(na) > 14 And Zstart = 1 Then
         Whereis = Instr(na , ">" )                         ' tutaj sprawdzam gdzie jest znak ">"
         Whereis = Whereis + 1                              'gmeranie kursorem na prawo i lewo
         Ma = Mid(na , Whereis , 4)                         'co ramke sprodukowalo wyciagam tu
         Whereis = Whereis - 3                              'wywalam jakies smieci z poczatku stringa nie wiem jak sie tam znalazly
         Na = Mid(na , 2 , Whereis)                         ' a tutaj wycinam caly znak bo wiem gdzie jest >
                                                               'obsluga typu trakera
         If Ma = "APK1" Then
            Ma = "TM-D700"
         Elseif Ma = "APND" Then
            Ma = "DIGINed"
         Elseif Ma = "APNU" Then
            Ma = "UIDigi"
         Elseif Ma = "APOT" Then
            Ma = "OT"
         Elseif Ma = "APNX" Then
            Ma = "TNC-X"
         Elseif Ma = "APU2" Then
            Ma = "UiView"
         Elseif Ma = "URQU" Then
            Ma = "VX-8"
         Elseif Ma = "APJI" Then
            Ma = "jAPRSI"
         Elseif Ma = "APJS" Then
            Ma = "javAPR"
         Elseif Ma = "APZW" Then
            Ma = "MAP27"
         Elseif Ma = "APN3" Then
            Ma = "KPC-3"
         Elseif Ma = "APK0" Then
            Ma = "TH-D7"
         Elseif Ma = "APTT" Then
            Ma = "TT.v.1"
         End If

         If Nb <> Na And Nb <> Na And Nc <> Na And Nd <> Na Then       ' jesli string dla drugiej lini inny niz dla pierwszej dodaj na szczyt listy zabezpieczenie przed wyswietlaniem tych samych powtorzonych ramek
            Cls                                             'czysc wyswietlacz
            Locate 1 , 1                                    'kursr do gory
            Lcd Na
               Locate 1 , 11                                'przesuwamy kursor o 6 znakow prze koniec lcd w pierwszym wierszu
               Lcd Ma                                       'Wyswietl Biezacy Znak Stacji
            Locate 2 , 1                                    'ustawianie kursora
            Lcd Nb ;
               Locate 2 , 11
               Lcd Mb    
            Locate 3 , 1
            Lcd Nc
               Locate 3 , 11
               Lcd Mc
            Locate 4 , 1
            Lcd Nd
               Locate 4 , 11
               Lcd Md

            Nd = Nc
            Nc = Nb
            Nb = Na

            Md = Mc
            Mc = Mb
            Mb = Ma
                                                   'przepisz biezacy znak do drogiej zmiennej
          End If
      End If
      Zstart = 1
  End If

Waitms 5                                                    '1,5msec potrzebuje wyswietlacz na realizacje $home
Loop

'-----------------------------------------------------------------
End


Załączone pliki Miniatury
İmage

...przede wszystkim nie zakłócać...
09-08-2010 12:30
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
Monitor ramek APRS - SQ9MDD - 09-08-2010 12:30
RE: Monitor ramek APRS - SQ6OXK - 26-03-2011, 20:20
RE: Monitor ramek APRS - SQ9MDD - 26-03-2011, 22:58
RE: Bascom - SP5FCS - 09-08-2010, 21:51
RE: Bascom - HM_DIPOL - 10-08-2010, 16:14
RE: Bascom - SQ9MDD - 10-08-2010, 21:28
RE: Bascom - HM_DIPOL - 12-08-2010, 15:17
RE: Bascom - SQ9MDD - 12-08-2010, 18:45
RE: Bascom - SQ6ADE - 12-08-2010, 22:40
RE: Bascom - SQ6ADE - 13-08-2010, 11:50
RE: Bascom - HM_DIPOL - 13-08-2010, 14:16
RE: Bascom - SQ9MDD - 13-08-2010, 14:57
RE: Bascom - SQ6ADE - 13-08-2010, 17:27

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości