Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

weryfikacja kodu pastylek iButton DS1990A

KrzysiekTG
-
-
Posty:8
Rejestracja:4 sie 2004, o 22:40
Lokalizacja:Taarn. Góry
weryfikacja kodu pastylek iButton DS1990A

Postautor: KrzysiekTG » 6 wrz 2005, o 13:17

Zmierzam zbudować zamek na iButtonie DS1990A.
Poniżej zamieszczam projekt programu w Basom nad którym właśnie pracuję.
Program ten ma za zadanie zapisywać przy pierwszym uruchomieniu oraz przy zwarciu zworki w pamięci eeprom kontrolera 10 numerów ID pastylek iButton np DS1990A.
I do tego moment wszystko ok program działa.
Problem natomiast mam z odczytaniem i porównaniem danych numer ID w pamięci z numerem ID odczytanym z iButton-a.
Proszę szanownych kolegów o pomoc (podprogram Autoryzacja)

$regfile = "2313DEF.dat"
$crystal = 4000000
$baud = 19200

Config 1wire = Portb.0

Dim Eepromadres As Byte
Dim Tempvalue As Byte
Dim R As Byte
Dim I As Byte
Dim Register_number(8) As Byte
Dim Button_number As Byte
Dim Temp As Byte
Dim Blokada As Bit

Declare Sub Rejestracja
Declare Sub Pauza
Declare Sub Autoryzacja


Readeeprom Tempvalue , 127
If Tempvalue <> 1 Then
Call Rejestracja
End If
Set Portd.5
If Pind.5 = 0 Then
Call Rejestracja
End If

'Glowna petla programu

Do
If Err = 0 Then
Call Autoryzacja
End If
Call Pauza
If Blokada = 1 Then
Print "PASTYLKA OK!"
Blokada = 0
End If


Loop

'PODPROGRAMY

Sub Rejestracja

Eepromadres = 1

Do
Register_number(1) = 1wsearchfirst()
If Err = 0 Then
For Temp = 1 To 8
Writeeeprom Register_number(temp) , Eepromadres
Incr Eepromadres
Print "pastylka" ; Eepromadres
Next Temp
End If
If Eepromadres > 80 Then
For R = 1 To 4
Next R
For R = 1 To 4
Next R
Exit Do
End If
Call Pauza
Loop

Tempvalue = 1
Writeeeprom Tempvalue , 127
End Sub

Sub Autoryzacja
Blokada = 0
1wreset
1wwrite &H33
For I = 1 To 8
Register_number(i) = 1wread()
Next I
Eepromadres = 1
For R = 1 To 10
For I = 1 To 8
Readeeprom Button_number , Eepromadres
If Button_number = Register_number(i) Then
Blokada = 1
Else
Blokada = 0
End If
Incr Eepromadres
Next I
Next R
End Sub

Sub Pauza
Waitms 250
End Sub

a_antoniak
-
-
Posty:651
Rejestracja:13 sty 2005, o 18:38
Lokalizacja:Krasnystaw
Kontaktowanie:

Postautor: a_antoniak » 6 wrz 2005, o 16:01

Moja rada: nie zamieszczaj na forum więcej niż 20 linijek kodu bo i tak nikt tego nie przeczyta.

radzio
Moderator
Moderator
Posty:967
Rejestracja:13 maja 2003, o 10:33
Lokalizacja:Sosnowiec
Kontaktowanie:

Postautor: radzio » 6 wrz 2005, o 16:29

I dodatkowo ujmuj kod we właściwe tagi... poprawi to czytelność....

KrzysiekTG
-
-
Posty:8
Rejestracja:4 sie 2004, o 22:40
Lokalizacja:Taarn. Góry

Postautor: KrzysiekTG » 6 wrz 2005, o 16:48

Nie oczekiwałem tego typu porad :(

Awatar użytkownika
ACeK
-
-
Posty:1522
Rejestracja:30 mar 2003, o 19:35
Lokalizacja:Kielce

Postautor: ACeK » 6 wrz 2005, o 17:28

:) Hi skad dzis takie bojowe nastroje :o peace :wink:
:D

radzio
Moderator
Moderator
Posty:967
Rejestracja:13 maja 2003, o 10:33
Lokalizacja:Sosnowiec
Kontaktowanie:

Postautor: radzio » 6 wrz 2005, o 17:39

Nie oczekiwałem tego typu porad :(
Niestety Bascoma nie znam aż tak dobrze :D Najchętniej wypowiadam się w kwestii asembler/C
Hi skad dzis takie bojowe nastroje peace
Niestety tak zaprezentowany kod trudno się czyta i nie wiadomo gdzie kończy się treść,gdzie zaczyna się kod i gdzie on się kończy. Po coś te tagi zostały stworzone -> aby poprawić czytelność wypowiedzi i ułatwić zadanie ludziom czytającym posty.[/quote]

a_antoniak
-
-
Posty:651
Rejestracja:13 sty 2005, o 18:38
Lokalizacja:Krasnystaw
Kontaktowanie:

Postautor: a_antoniak » 6 wrz 2005, o 18:53

Nie bojowe tylko takie posty na tyle trudno się czyta że i tak niewiele osób jest w stanie pomóc. A swoją drogą - na czym właściwie polega problem w proc. Autoryzacja?

Awatar użytkownika
ACeK
-
-
Posty:1522
Rejestracja:30 mar 2003, o 19:35
Lokalizacja:Kielce

Postautor: ACeK » 6 wrz 2005, o 19:28

:) To moze uzywac myszke ze scroll wheel (nothing personal) :wink:
:D

radzio
Moderator
Moderator
Posty:967
Rejestracja:13 maja 2003, o 10:33
Lokalizacja:Sosnowiec
Kontaktowanie:

Postautor: radzio » 6 wrz 2005, o 20:09

Tu bardziej chodzi o ogarnięcie wzrokiem całego kodu... I kółko w myszce niewiele tu pomoże (kod będzie się poruszał, a powinien być w pełni statyczny, coby sie skupić na meritum problemu a nie na śledzeniu literek latających po ekranie). W wielu podręcznikach programowania zalecają, żeby procedura nie wychodziła poza ekran, właśnie ze względu na trudności w analizie kodu :-)

Natomiast wracając do meritum :D problemu : nie badzo wiadomo co jest problemem w tym kodzie (zupełny brak komentarzy) ale ja bym to zrealizował w ten sposób, że w przypadku niezgodności fragmentu numeru ustawiana jest jakaś flaga (bez jej zerowania tak jak obecnie - moze się zdarzyć że ostatnie porównanie będzie pozytywne przy poprzednich negatywnych a program zareaguje jak na właściwą pastylkę)
chodzi mi o ten fragment :

Kod: Zaznacz cały

If Button_number = Register_number(i) Then Blokada = 1 Else Blokada = 0 End If

KrzysiekTG
-
-
Posty:8
Rejestracja:4 sie 2004, o 22:40
Lokalizacja:Taarn. Góry

Postautor: KrzysiekTG » 7 wrz 2005, o 12:46

Problem polega na tym że układ rozpoznaje pastylke wczytaną jako pierwszą pozostałych dziewięciu zapisanych w eepromie nie bierze pod uwagę.

Awatar użytkownika
M@rek
-
-
Posty:118
Rejestracja:5 lip 2005, o 09:37
Lokalizacja:~`!@#$%^&*()_-+=
Kontaktowanie:

Postautor: M@rek » 7 wrz 2005, o 14:00

To daj 10 zmiennych w eeprom i 11 zmiennych w ram tak że po resecie wczytuje te 10 z eeprom do ram a jak znajdzie pastylke to też ją wczytuje do ram (ijaczej się nie da) i porównuje ją z każdą po kolei

Kod: Zaznacz cały

zamek alias ... ' to wyjście co trzeba if zmienna01 = zmienna11 then zamek = 1 * * * if zmienna10 = zmienna11 then zamek = 1 return
proste :mrgreen: .

McKEE
-
-
Posty:186
Rejestracja:7 cze 2004, o 10:02
Lokalizacja:Gniewkowo_Toruń

Postautor: McKEE » 8 wrz 2005, o 03:59

Odpowiedzi na twoje pytania znajdziesz w projektach AVT5038(EP10/01) Immobilizer z zabezpieczeniem przed porwaniem samochodu - to wyglada podobnie do twojego projektu procek 2313 , mozliwosc rejestracji 5 kluczy, drugi to projekt AVT3006 EdW 02/01 zamek szyfrowy z pastylkami dallas , procek 2051 , mozliwosc rejestracji 10 pastylek , wytnij z kodu potzredbna procedure i gotowe.


>>>wszystko juz bylo<< :D

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 30 gości