Witam,
Czy ktoś mógł by rzucić okiem na kod, coś nie może zadziałać.
Na sprzętowym działa ok przerobiony pod programowy uart już nie za bardzo
Czy ktoś mógł by rzucić okiem na kod, coś nie może zadziałać.
Na sprzętowym działa ok przerobiony pod programowy uart już nie za bardzo
Dim Dlugosc As String * 11
Dim Szerokosc As String * 11
Dim Satelity As String * 2
Dim Godziny As String * 2
Dim Minuty As String * 2
Dim Sekundy As String * 2
Dim Run As Byte
Dim Gprmc As Byte
Dim Cntr As Byte
Dim Tudr As Byte
Dim Ok As Bit
Run = 1 : Reset Ok
Open "comd.2:9600,8,n,1" For Input As #1
Config Timer1 = Timer , Prescale = 1024
Enable Timer1
On Timer1
Enable Interrupts
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.7 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portc.4 , Rs = Portc.5
Cls
Do
While Ok = 0 : Wend 'czekaj na wczytanie danych
Reset Ok
Locate 1 , 1
Lcd Szerokosc
Locate 2 , 1
Lcd Dlugosc
Cursor Off
Loop
End
Przerwanie_uart:
If Run <> 0 Then
Run = Inkey(#1) Xor 36 'jeśli w udr jest asc("$"), to run=0
If Run = 0 Then
Cntr = 0 'licznik=0 po wczytaniu "$"
Szerokosc = ""
Dlugosc = ""
End If
Else
Select Case Cntr
Case 0 To 4
Tudr = Lookup(cntr , Gga) 'odczyt GGA
Run = Inkey(#1) Xor Tudr 'powrot do znaku $
Case 7 To 8 'znaki selekcja
Godziny = Godziny + Chr(run)
Case 8 To 9 'znaki selekcja
Minuty = Minuty + Chr(run)
Case 10 To 11 'znaki selekcja
Sekundy = Sekundy + Chr(run)
Case 17 To 27 'znaki selekcja
Szerokosc = Szerokosc + Chr(run)
Case 30 To 40 'znaki selekcja
Dlugosc = Dlugosc + Chr(run)
Case 46
Set Ok : Run = 1 'odebrano dane,czekaj na kolejny znak "$"
Case Else
Tudr = Run
End Select
Incr Cntr
End If
Return
Gga:
Data 71 , 80 , 71 , 71 , 65 'GPGGA
'$GPGGA,105357.000,5106.5487,N,01703.5382,E,1,3,3.68,107.4,M,42.6,M,,*50
'$GPGGA,105358.000,5106.5490,N,01703.5371,E,1,3,3.69,107.4,M,42.6,M,,*54
'$GPGGA,105359.000,5106.5483,N,01703.5363,E,1,3,3.69,107.4,M,42.6,M,,*54
'$GPGGA,105400.000,5106.5480,N,01703.5363,E,1,3,3.69,107.4,M,42.6,M,,*5C