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: #4
RE: Bascom
Myślę że i na C przyjdzie czas tym bardziej że C jest mi lepiej znane. Natomiast na początek by poznać budowę procesora i złapać o co tam chodzi, to bascom jest wystarczający. Minusem jest niewątpliwie mało oszczędny kod wynikowy.

Czy z tego urodzi się projekt? zobaczymy...

Wracając do tematu monitora aprs, urządzenie to podstawowa aplikacja procesora AT90S2313 lub ATTiny2313, składająca się z jednego portu szeregowego plus obsługę wyświetlacza.
Dzisiaj przepisałem cały kod od nowa. Zamiast ośmiu zmiennych do przechowywania znaków stacji i typów trakerów. zastosowałem dwie zmienne tablicowe i pętle do wyświetlania ich zawartości.

Poniżej 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

Config Lcdbus = 4
Config Lcd = 20 * 4

$crystal = 4000000
$baud = 9600
$hwstack = 16
$swstack = 0
$framesize = 15

Dim Na As String * 15
Dim Znak(4) As String * 9
Dim Traker(4) As String * 4
Dim Whereis As Byte
Dim A As Byte

Enable Interrupts
Cursor Off
'-----------------------------------------------------------------
Cls
Locate 1 , 1
Lcd "APRS MONITOR.v.0.04a"
Locate 2 , 1
Lcd "-------SQ9MDD-------"
Wait 5
Locate 4 , 1
Lcd "waiting for data..."
'-----------------------------------------------------------------
Do
  Echo Off
  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) > 13 Then
         Whereis = Instr(na , ">" )
         Whereis = Whereis + 1
         Traker(1) = Mid(na , Whereis , 4)
         Whereis = Whereis - 3
         Znak(1) = Mid(na , 2 , Whereis)

         Cls                                                'czysc wyswietlacz

         For A = 1 To 4 Step 1                              'petelka do wyswietlania zakow z tablicy
            Locate A , 1                                    'ustawiam kursor
            Lcd Znak(a)                                     'i drukuje znak jaki wpadł do bufora
            Locate A , 11
               If Traker(a) = "APU1" Then                   'uiview 16
                  Lcd Lookupstr(0 , Trakerki)
               Elseif Traker(a) = "APU2" Then               'uiview 32
                  Lcd Lookupstr(1 , Trakerki)
               Elseif Traker(a) = "URQU" Then               'vx8
                  Lcd Lookupstr(2 , Trakerki)
               Elseif Traker(a) = "APK1" Then               'tmd700
                  Lcd Lookupstr(3 , Trakerki)
               Elseif Traker(a) = "APNU" Then               'uidigi
                  Lcd Lookupstr(4 , Trakerki)
               Elseif Traker(a) = "APN3" Or Traker(a) = "APNX" Then       'tnc-x
                  Lcd Lookupstr(5 , Trakerki)
               Elseif Traker(a) = "APND" Then               'digined
                  Lcd Lookupstr(6 , Trakerki)
               Else
                  Lcd Traker(a)
               End If
         Next A

            Znak(4) = Znak(3)                               'a tutaj przesuwanie zmienych z komorki do komorki co petelke
            Znak(3) = Znak(2)
            Znak(2) = Znak(1)

            Traker(4) = Traker(3)                           'a tutaj przesuwanie zmienych z komorki do komorki co petelke
            Traker(3) = Traker(2)
            Traker(2) = Traker(1)

      End If

  End If

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

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

Trakerki:
Data "UiView 16"                                            '0 APU1
Data "UiView 32"                                            '1 APU2
Data "VX-8R"                                                '2 URQU
Data "TM-D700"                                              '3 APK1
Data "UiDigi"                                               '4 APNU
Data "TNC-X"                                                '5 APN3 APNX                                               '
Data "Digi_NED"                                             '6 APND

...przede wszystkim nie zakłócać...
10-08-2010 21:28
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