<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=8489&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-10-15T21:07:56+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=8489&amp;mode</id>
<entry>
<author><name><![CDATA[RafPe]]></name></author>
<updated>2014-10-15T21:07:56+01:00</updated>
<published>2014-10-15T21:07:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=99216#p99216</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=99216#p99216"/>
<title type="html"><![CDATA[Re: BIBLIOTEKA - Cztnik linii papilarnych GT511C3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=99216#p99216"><![CDATA[
Dzieki! na pewno sprawdze <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> bo jak pisalem wczesniej ... sam sobie to chce wmontowac <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4344">RafPe</a> — 15 paź 2014, o 21:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman]]></name></author>
<updated>2014-10-15T20:37:23+01:00</updated>
<published>2014-10-15T20:37:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=99211#p99211</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=99211#p99211"/>
<title type="html"><![CDATA[Re: BIBLIOTEKA - Cztnik linii papilarnych GT511C3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=99211#p99211"><![CDATA[
linków nie mam, ale z tego co pamiętam na wstępie dzielili czytniki na kilka kategorii bezpieczeństwa, niektóre wykrywały puls i ciepło palca inne nie, niektóre dało się oszukać pobierając odcisk palca z klamki ! Ale dla &quot;uspokojenia&quot; dodam że i te bardziej zaawansowane udało im się oszukać <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /><br /><br />Może znajdzie się ktoś kto znajdzie na yt albo zalinkuje? Albo chociaż też pamięta ten odcinek?<br /><br />coś znalazłem, nawet kilka odcinków, raz sie udawało a raz nie, w najnowszych nawet drukowali odciski w 3d <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> szukaj &quot;fingerprint mythbusters&quot; &quot;fingerprint reader mythbusters&quot; wyniki różne - chyba zależą od dotacji producentów zamków <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5642">doman</a> — 15 paź 2014, o 20:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[RafPe]]></name></author>
<updated>2014-10-15T20:25:30+01:00</updated>
<published>2014-10-15T20:25:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=99208#p99208</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=99208#p99208"/>
<title type="html"><![CDATA[Re: BIBLIOTEKA - Cztnik linii papilarnych GT511C3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=99208#p99208"><![CDATA[
<div class="quotetitle">doman napisał(a):</div><div class="quotecontent"><br />Chyba nawet w ... pogromcach mitów to robili<br /></div> A masz moze jakies linki ? Bo rzeczywiscie ciekawe... <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4344">RafPe</a> — 15 paź 2014, o 20:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman]]></name></author>
<updated>2014-10-15T19:17:31+01:00</updated>
<published>2014-10-15T19:17:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=99193#p99193</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=99193#p99193"/>
<title type="html"><![CDATA[Re: BIBLIOTEKA - Cztnik linii papilarnych GT511C3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=99193#p99193"><![CDATA[
A teraz robi się poważnie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Podobno łatwiej jest oszukać takie czytniki niż otworzyć zamek klasyczny <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Chyba nawet w ... pogromcach mitów to robili <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5642">doman</a> — 15 paź 2014, o 19:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[RafPe]]></name></author>
<updated>2014-10-14T16:54:03+01:00</updated>
<published>2014-10-14T16:54:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98943#p98943</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98943#p98943"/>
<title type="html"><![CDATA[Re: BIBLIOTEKA - Cztnik linii papilarnych GT511C3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98943#p98943"><![CDATA[
Ogolnie moge zachwalac czytnik. Jak tylko w przyszlym tygodniu dojdzie pudelko to wrzuce foty dzialajcego otwierania drzwi <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Teraz jak zona zapomni kluczy nie bedzie musiala czekac 3 godz az wroce z pracy hahahaha <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4344">RafPe</a> — 14 paź 2014, o 16:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-10-14T06:08:46+01:00</updated>
<published>2014-10-14T06:08:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98859#p98859</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98859#p98859"/>
<title type="html"><![CDATA[Re: BIBLIOTEKA - Cztnik linii papilarnych GT511C3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98859#p98859"><![CDATA[
Pytam z ciekawości bo zdarza sié że markowe dedykowane czytniki mają 95% skuteczności więc to daje jakoś 5 błędnych odczytów na 100 :/<br /><br />Namazane ze smarta.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 14 paź 2014, o 06:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[RafPe]]></name></author>
<updated>2014-10-13T15:54:20+01:00</updated>
<published>2014-10-13T15:54:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98787#p98787</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98787#p98787"/>
<title type="html"><![CDATA[Re: BIBLIOTEKA - Cztnik linii papilarnych GT511C3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98787#p98787"><![CDATA[
Na chwile obecna uzywajac swojego algorytmu nie zawiesilem go <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> choc tak naprawde w main chcesz wlaczac sensor jak ktos podejdzie kolo niego. A nie zdarzyl mi sie jeszcze bledny odczyt<br /><br /><br />Sent from my iPhone using Tapatalk<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4344">RafPe</a> — 13 paź 2014, o 15:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-10-13T14:44:15+01:00</updated>
<published>2014-10-13T14:44:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98778#p98778</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98778#p98778"/>
<title type="html"><![CDATA[Re: BIBLIOTEKA - Cztnik linii papilarnych GT511C3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98778#p98778"><![CDATA[
Tak zgadza się jest to opłacalne w stosunku do kart itp bo palca nigdy nie zapomnisz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />A jak jest z działaniem czytnika ? <br />Zawiesza się ?<br />Jaki ma stosunek odczytanych dobrych do błędnych palców ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 13 paź 2014, o 14:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[RafPe]]></name></author>
<updated>2014-10-13T10:27:02+01:00</updated>
<published>2014-10-13T10:27:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98758#p98758</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98758#p98758"/>
<title type="html"><![CDATA[Re: BIBLIOTEKA - Cztnik linii papilarnych GT511C3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98758#p98758"><![CDATA[
Uwierz mi  chyba sie oplaca <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> mam juz wmontowany elektrozaczep i czekam tylko na obudowe do tego cacenka <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> a slowa &quot;sezamie otworz sie...&quot; nabiora nowego znaczenia przy uzyciu palucha <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4344">RafPe</a> — 13 paź 2014, o 10:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-10-13T10:25:31+01:00</updated>
<published>2014-10-13T10:25:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98756#p98756</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98756#p98756"/>
<title type="html"><![CDATA[Re: BIBLIOTEKA - Cztnik linii papilarnych GT511C3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=98756#p98756"><![CDATA[
Szkoda tylko że te ustrojstwo jest tak drogie ... <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> 46$ znalazłem najtaniej <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 13 paź 2014, o 10:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[RafPe]]></name></author>
<updated>2014-09-11T22:14:40+01:00</updated>
<published>2014-09-11T22:14:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=95190#p95190</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=95190#p95190"/>
<title type="html"><![CDATA[BIBLIOTEKA - Cztnik linii papilarnych GT511C3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8489&amp;p=95190#p95190"><![CDATA[
Witam wszystkich! <br /><br />Jak to ostatnio Mirek nam zaprezentowal mozliwosci &quot;wybebeszania&quot; Arduinojak sie okazuje moga przyniesc niebywale korzysci. Zafascynowany tym  postanowilem sprobowac swoich sil z tym wyzwaniem. <br />Na celownik poszedl czytnik lini papilarnych model GT511C3, ktory zakupilem kiedys jako &quot;arduin'owiec&quot; a pozniej lezal dlugo zapomniany kiedy przesiadlem sie na AVR. <br /><br /><a href="http://forum.atnel.pl/_obrazki/o/4344/3bda80f4ca72461e43693b339d37556c.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4344/3bda80f4ca72461e43693b339d37556c.jpg" alt="Obrazek" /></a><br /><br />Zaczalem od proby znaleznienia czegos co ktos juz napisal na AVR ale niesytety albo moje zdolnosci Google mnie zawiodly albo nie bylo nic co uznalbym za warte uwagi. <br /><br />Oto jak po wielkich starciach wyglada wersja 00000001alfa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br /><br />A teraz do informacji <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Biblioteka jest <strong>niekompletna</strong> a to z uwagi na to ze moze uda mi sie kogos zachecic do rozbudowy lub po prostu ilosc sugestii co do zmian kodu sprawi ze latwiej bedzie zmienic cos malego niz wielkiego kolosa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Biblioteka jest na podstawie nizej wymenionych zrodel i nie jestem autorem wszystkich funkcji (jako ze jestem tez poczatkujacy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ) dlatego moge nie byc w stanie odpowiedziec na niektore pytania dotyczace kodu zrodlowego.<br /><br /><strong>Zrodla informacji :</strong><br />Strona producenta <a href="http://www.adh-tech.com.tw/?9,gt-511c3-gt-511c31-(uart)"  class="postlink">http://www.adh-tech.com.tw/?9,gt-511c3-gt-511c31-(uart)</a><br />Biblioteka ze strony sparkfun <a href="https://github.com/sparkfun/Fingerprint_Scanner-TTL"  class="postlink">https://github.com/sparkfun/Fingerprint_Scanner-TTL</a><br /><br /><strong>Zalozenia :</strong><br />+ Starac sie budowac biblioteke w oparciu o powarzalne funkcje <br />+ Starac sie nie uzywac _delay_ budujac w ten sposob rozwiazanie ktore moze zostac wykorzystane do projektow wielozadaniowych <br /><br /><strong>Zrealizowane funkcje :</strong><br />+ Inicjalizacja komunikacji <br />+ Wlaczenie diody LED (wymagane do operacji na paluszkach <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> )<br />+ Sprawdzenie czy palec jest nacisniety<br />+ Zlapanie obrazu palca do RAM czytnika<br />+ Weryfikacja czy ID palca jest znany<br /><br /><strong>Komunikacja z urzadzeniem :</strong><br />Urzadzenie uzywa komunikacji binarnej wg protokolu zdefiniowanego w dokumentacji przy wykorzystaniu UART. Ja na potrzeby komunikacji stworzylem typ TUPACKET zdefiniowany w GT511C3.h <br /><br /><strong>Punkty do poprawy :</strong><br />Na chwile obecna pewnie duzo... samo moge powiedziec ze pewnie niektore funkcje mozna napisac w bardziej optymalny sposob lub mozna tez lepiej wykorzystac struktury ze wskaznikami. <br />Nie zwracam bledow chociaz biblioteka i sam protokol sa na to mozliwosc przygotowane. <br /><br /><strong>DIY :</strong><br />Aby biblioteka dzialala poprawnie musi byc skonfigurowana komunikacja UART. Nie zalaczylem naglowka / pliku zrodlowego jako ze korzystam z domyslnych funkcji sprawdzajacych stany rejestrow UART. <br />No i oczywiscie jesli ktos chce wyswietlac dane na LCD to ja korzystalem z biblioteki Mirka do LCD dostepnej w BB .<br /><br /><br />W wasze rece oddaje kod zrodlowy i jesli ktos ma pytania lub uwagi/propozycje do zmian w kodzie - piszcie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Prosze tylko o wyrozumialosc jako <em>poczatkujacy</em><br /><br /><strong>main.c</strong><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: Sep 11, 2014<br /> *      Author: ErPe<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;UART/UART.h&quot;<br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;GT511C3/GT511C3.h&quot;<br /><br />volatile uint16_t Timer1;// Programowe timery<br /><br />int main(void)<br />{<br /><br />/* Timer0 – inicjalizacja przerwania co 10ms :  Atmega32@16 MhZ */<br />TCCR0 |= (1&lt;&lt;WGM21);// tryb pracy CTC<br />TCCR0 |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);// preskaler = 1024<br />OCR0 = 155;// przerwanie porównania co 10ms (100Hz)<br />TIMSK |= (1&lt;&lt;OCIE0);// Odblokowanie przerwania CompareMatch<br /><br />/* LCD init */<br />DDRA |= (1&lt;&lt;PA7);<br />PORTA |= (1&lt;&lt;PA7);// Podswietlenie ekranu<br /><br />lcd_init();// Inicjalizacja ekranu<br /><br />/* UART init */<br />USART_Init(__UBRR);<br /><br />sei();// wlaczenie przerwan<br /><br />/* DEBUG */<br />DDRC |= ( 1 &lt;&lt; PC7 );<br /><br />Timer1=10;<br /><br />_delay_ms(100);// delay dodany po to by urzadzenie bylo gotowe do obslugi komend<br /><br />GT511C3_Open();// FPR - otwieramy komunikacje z urzadzeniem<br />GT511C3_Cmos_led( 1 );// FPR - podswietlamy LED<br /><br />uint8_t testowy;// testowa zmienna dla wyniku identyfikacji<br /><br />lcd_locate(0,0);<br />lcd_str_P( PSTR(&quot;dla ATNEL.PL&quot;));// Info dla forumowiczow<br /><br /><br />while(1)<br />{<br />if (!Timer1)<br />{<br /><br />if(GT511C3_isFingerPressed())// sprawdzamy czy palec byl nacisniety<br />{<br />GT511C3_capture_finger( 0 );// lapiemy obraz palca do RAM czytnika<br /><br />testowy = GT511C3_identification_1N();<br /><br />if (testowy  == 0)<br />{<br />lcd_locate(1,0);<br />lcd_str_P( PSTR(&quot;Hello RafPe&quot;));<br />}<br />else<br />{<br />lcd_locate(1,0);<br />lcd_str_P( PSTR(&quot;-----------&quot;));<br />}<br /><br />Timer1=5;<br />}<br /><br /><br />}<br /><br />}<br />}<br /><br />ISR (TIMER0_COMP_vect)<br />{<br />uint16_t n;<br /><br />n = Timer1;/* 100Hz Timer1 */<br />if (n) Timer1 = --n;<br />}[/syntax]<br /><br /><br /><strong>GT511C3.c</strong><br />[syntax=c]/*<br /> * GT511C3.c<br /> *<br /> *  Created on: Sep 11, 2014<br /> *      Author: ErPe<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;GT511C3.h&quot;<br />#include &quot;../UART/UART.h&quot;<br /><br />TUPACKET vPakiet;<br />TUPACKET * pPakiet;<br /><br />void gt_511C3_send_cmd ( TUPACKET * data )<br />{<br />char *wsk = (char*) data;// Wskaznik na nasz wskaznik<br />uint8_t i = 0;// Zmienna uzywana do &quot;przelecenia&quot; po naszym pakiecie do wyslania<br /><br />while( i &lt; sizeof( TUPACKET ) )// Dopoki nie wyslalisymy wielkosci calego pakietu<br />{<br />USART_Transmit ( wsk++ ) ;// wysylamy wartosc kolejnego elementu naszego pakietu<br />i++;// inkrementacja dopoki caly pakiet nie bedzie wyslany<br />}<br /><br />//uart_response_stat = response_awaiting;// Tutaj ustawiamy ze oczekujemy na pakiet<br />//timer1 = 1;// Ustawiamy nasz timer na 10ms<br />}<br /><br />TUPACKET  gt_511C3_rcv_response ( void )<br />{<br />TUPACKET  resp;<br /><br />while ( ( resp.bytes&#91;0&#93;=USART_Receive() ) != HEADER_CMD_RESP_CODE_1 ) {}<br /><br />for (uint8_t i=1; i &lt; PACKET_SIZE ; i++)<br />{<br />resp.bytes&#91; i &#93; = USART_Receive();<br />}<br /><br />return resp;<br /><br />}<br /><br />// Converts the int to bytes and puts them into the paramter array<br />void gt_511C3_get_ParameterFromInt(int i , TUPACKET pPacket)<br />{<br />pPacket.packet_param0 = (i &amp; 0x000000ff);<br />pPacket.packet_param1 = (i &amp; 0x0000ff00) &gt;&gt; 8;<br />pPacket.packet_param2 = (i &amp; 0x00ff0000) &gt;&gt; 16;<br />pPacket.packet_param3 = (i &amp; 0xff000000) &gt;&gt; 24;<br />}<br /><br />// Gets an int from the parameter bytes<br />uint8_t gt_511C3_get_IntFromParameter(TUPACKET pPacket)<br />{<br />uint8_t retval = 0;<br />// Ponizsze jak dobrze zauwazyol Mirek :) nie ma prawa bytu! Jako ze nie wykorzystujemy zwracanych<br />// parametrow w innych funkcjach mozemy pominac te parametry i zwracac to bezposrednio w funkcji<br />// ktora zwraca ID palca<br />//retval = (retval &lt;&lt; 8) + pPacket.packet_param3;<br />//retval = (retval &lt;&lt; 8) + pPacket.packet_param2;<br />//retval = (retval &lt;&lt; 8) + pPacket.packet_param1;<br />//retval = (retval &lt;&lt; 8) + pPacket.packet_param0;<br />return retval;<br />}<br /><br /><br />/* Funkcja odpowiedzialna za obliczanie sumy kontrolnej */<br />void Checksum(TUPACKET * pPacket )<br />{<br />uint16_t sChkSum = 0;// Zmienna w ktorej przechowywac bedziemy nasz checksum<br /><br />char *wsk = (char*) pPacket;// Wskaznik na nasz wskaznik<br />uint8_t i = 0;// Zmienna uzywana do &quot;przelecenia&quot; po naszej tablicy<br /><br />while( i &lt; (PACKET_SIZE-PACKET_SIZE_CHECKSUM))// Nie kalkulujemy wartosci checksum<br />{<br />sChkSum += *wsk++;// przypisujemy wartosc kolejnego elementu naszego pakietu<br />i++;// inkrementacja<br />}<br /><br /><br />pPacket -&gt; packet_ChkSum0 = (char) sChkSum     &amp; 0x00FF;// Kalkulujemy &quot;Low byte&quot;<br />pPacket -&gt; packet_ChkSum1 = (char)(sChkSum&gt;&gt;8) &amp; 0x00FF;// Kalkulujemy &quot;High byte&quot;<br /><br />}<br /><br />/* Funkcja odpowiedzialna za przygotowanie pakietu do wyslania */<br />TUPACKET * gt_511C3_cmd(char cmd , char p0 , char p1 , char p2 , char p3 , TUPACKET * cmd_packet)<br />{<br /><br /> cmd_packet -&gt; packet_header1 = HEADER_CMD_RESP_CODE_1;// Naglowek 1<br /> cmd_packet -&gt; packet_header2 = HEADER_CMD_RESP_CODE_2;// Naglowek 2<br /> cmd_packet -&gt;packet_deviceId1 = DEVICE_ID_1;// Device ID<br /> cmd_packet -&gt;packet_deviceId2 = DEVICE_ID_2;// Device ID<br /> cmd_packet -&gt;packet_param0 = p0;// Parameter 1<br /> cmd_packet -&gt;packet_param1 = p1;// Paramater 2<br /> cmd_packet -&gt;packet_param2 = p2;// Parameter 3<br /> cmd_packet -&gt;packet_param3 = p3;// Paramater 4<br /> cmd_packet -&gt;packet_cmd0 = cmd;// komenda<br /> cmd_packet -&gt;packet_cmd1 = VALUE_ZERO;// Przy obecnym hardware tu zawsze 0x00<br /><br /> Checksum( cmd_packet );// Funkcja wywolana do kalkulacji sumy kontrolnej<br /><br /> return cmd_packet;<br /><br />}<br /><br />/*<br /> * Funkcja odpowiedzialna za inicjalizacje urzadzenia i przygotowanie go do obslugi komend<br /> * Zwraca: true jesli OK / false jesli jest error<br /> */<br />uint8_t GT511C3_Open( void )<br />{<br />pPakiet = &amp;vPakiet;<br /><br />gt_511C3_send_cmd ( gt_511C3_cmd( CMD_OPEN , VALUE_ZERO , VALUE_ZERO , VALUE_ZERO , VALUE_ZERO , pPakiet) );<br /><br />return ( (gt_511C3_rcv_response().bytes&#91;8&#93;) == ACK ) ?  1 :  0;<br /><br />}<br /><br />/*<br /> * Funkcja odpowiedzialna za wlaczanie podswietlenia LED<br /> * Parameter : true - wlacza / false - wylacza<br /> * Zwraca: true jesli OK / false jesli jest error<br /> */<br />uint8_t GT511C3_Cmos_led (uint8_t state)<br />{<br />gt_511C3_send_cmd ( gt_511C3_cmd( CMD_CMOS_LED , state , VALUE_ZERO , VALUE_ZERO , VALUE_ZERO , pPakiet) );<br /><br />return ( (gt_511C3_rcv_response().bytes&#91;8&#93;) == ACK ) ?  1 :  0;<br />}<br /><br /><br />uint8_t GT511C3_isFingerPressed( void )<br />{<br />TUPACKET temp_resp;<br /><br />// Tworzymy pakiet do wyslania<br />gt_511C3_send_cmd ( gt_511C3_cmd( CMD_IS_FINGER_PRESSED , VALUE_ZERO , VALUE_ZERO , VALUE_ZERO , VALUE_ZERO , pPakiet) );<br /><br />temp_resp = gt_511C3_rcv_response();// Odbieramy odpowiedz<br /><br />return ( (temp_resp.bytes&#91;8&#93; == ACK) &amp;&amp; (temp_resp.packet_param0 == VALUE_ZERO) ) ?  1 :  0;<br />}<br /><br />/*<br /> * Funkcja odpowiedzialna za uchwycenie obrazu palca do pamieci RAM przed wykonaniem innych komend<br /> * Parametr: TRUE dla wysokiej jakosci (wolniej) , FALSE dla nizszej jakosci (szybciej)<br /> * Uzywac wysokiej jakosci dla enroll a nizszej dla weryfikacji / identyfikacji<br /> * Zwraca: TRUE jesli jest ok / FALSE jesli nie ma palca nacisnietego<br /> */<br />uint8_t GT511C3_capture_finger ( uint8_t highQuality )<br />{<br /><br />gt_511C3_send_cmd ( gt_511C3_cmd( CMD_CAPTURE_FINGER , highQuality , VALUE_ZERO , VALUE_ZERO , VALUE_ZERO , pPakiet) );<br /><br />return ( (gt_511C3_rcv_response().bytes&#91;8&#93;) == ACK ) ?  1 :  0;<br /><br />}<br /><br />/*<br /> * Sprawdza obecnie nacisniety palec wobec bazy danych zawierajacej odciski palcow<br /> * Zwraca int<br /> * 0-199: znaleziono zweryfikowany palec<br /> * &gt;200  : brak zidentyfikowanego palca<br /> */<br />uint8_t GT511C3_identification_1N ( void )<br />{<br />TUPACKET temp_resp;<br /><br />gt_511C3_send_cmd ( gt_511C3_cmd( CMD_IDENTIFY_1xN , VALUE_ZERO , VALUE_ZERO , VALUE_ZERO , VALUE_ZERO , pPakiet) );<br /><br />temp_resp = gt_511C3_rcv_response();// Odbieramy odpowiedz<br /><br />return ( temp_resp.packet_param0 &gt; 200 ) ?  200 :  temp_resp.packet_param0;<br /><br />}[/syntax]<br /><br /><br /><br /><strong>GT511C3.h</strong><br />[syntax=c]/*<br /> * GT511C3.h<br /> *<br /> *  Created on: Sep 11, 2014<br /> *      Author: ErPe<br /> */<br /><br />#ifndef GT511C3_H_<br />#define GT511C3_H_<br /><br />typedef enum// ENUM zawierajace nasze bledy ktore moga zostac zwrocone poprzez nasze urzadzenie<br />{<br />NO_ERROR= 0,<br />NACK_TIMEOUT= 1,<br />NACK_INVALID_BAUDRATE= 2,<br />NACK_INVALID_POS= 3,<br />NACK_IS_NOT_USED= 4,<br />NACK_IS_ALREADY_USED= 5,<br />NACK_COMM_ERR= 6,<br />NACK_VERIFY_FAILED= 7,<br />NACK_IDENTIFY_FAILED= 8,<br />NACK_DB_IS_FULL= 9,<br />NACK_DB_IS_EMPTY= 10,<br />NACK_TURN_ERR= 11,<br />NACK_BAD_FINGER= 12,<br />NACK_ENROLL_FAILED= 13,<br />NACK_IS_NOT_SUPPORTED= 14,<br />NACK_DEV_ERR= 15,<br />NACK_CAPTURE_CANCELED= 16,<br />NACK_INVALID_PARAM= 17,<br />NACK_FINGER_IS_NOT_PRESSED= 18<br />} ENUMERR;<br /><br />typedef union {<br />uint8_t    bytes&#91;12&#93;;<br />struct // STRUKTURA definiujaca jak wyglada pakiet dla urzadzenia (CMD OUT | RESPONSE IN )<br />{<br />uint8_t packet_header1;// Naglowek 1 - okresla czy to odpowiedz czy dane<br />uint8_t packet_header2;// Naglowek 2 - okresla czy to odpowiedz czy dane<br />uint8_tpacket_deviceId1;// ID urzedzenia - zawsze to samo w tej wersji<br />uint8_tpacket_deviceId2;// ID urzedzenia - zawsze to samo w tej wersji<br />uint8_tpacket_param0;// Parametr 1<br />uint8_tpacket_param1;// Parametr 2<br />uint8_tpacket_param2;// Parametr 3<br />uint8_tpacket_param3;// Parametr 4<br />uint8_tpacket_cmd0;// Komenda 1<br />uint8_tpacket_cmd1;// Komenda 2<br />uint8_t packet_ChkSum0;// CRC 1<br />uint8_t packet_ChkSum1;// CRC 2<br />} ;<br />} TUPACKET;<br /><br />#define PWR_PORTPORTC<br />#define PWR_PINPC7<br />#define PWR_ONPWR_PORT |= (1 &lt;&lt; PWR_PIN)<br />#define PWR_OFFPWR_PORT &amp;= ~(1 &lt;&lt; PWR_PIN)<br /><br /><br />#define NotSet 0x00// Default value for enum. Scanner will return error if sent this.<br />#define CMD_OPEN 0x01// Open Initialization<br />#define CMD_CLOSE 0x02// Close Termination<br />#define CMD_USB_INTERNAL_CHECK 0x03// UsbInternalCheck Check if the connected USB device is valid<br />#define CMD_CHANGE_BAUDRATE  0x04// ChangeBaudrate Change UART baud rate<br />#define CMD_SET_IAP_MODE 0x05// SetIAPMode Enter IAP Mode In this mode FW Upgrade is available<br />#define CMD_CMOS_LED 0x12// CmosLed Control CMOS LED<br />#define CMD_GET_ENROLL_COUNT  0x20// Get enrolled fingerprint count<br />#define CMD_CHECK_ENROLLED  0x21// Check whether the specified ID is already enrolled<br />#define CMD_ENROLL_START 0x22// Start an enrollment<br />#define CMD_ENROLL_1 0x23// Make 1st template for an enrollment<br />#define CMD_ENROLL_2 0x24// Make 2nd template for an enrollment<br />#define CMD_ENROLL_3 0x25// Make 3rd template for an enrollment merge three templates into one template save merged template to the database<br />#define CMD_IS_FINGER_PRESSED 0x26// Check if a finger is placed on the sensor<br />#define CMD_DELETE_ID 0x40// Delete the fingerprint with the specified ID<br />#define CMD_DELETE_ALL 0x41// Delete all fingerprints from the database<br />#define CMD_VERIFY_1x1 0x50// Verification of the capture fingerprint image with the specified ID<br />#define CMD_IDENTIFY_1xN 0x51// Identification of the capture fingerprint image with the database<br />#define CMD_VERIFY_TEMPLATE_1x1  0x52// Verification of a fingerprint template with the specified ID<br />#define CMD_IDENTIFY_TEMPLATE_1xN 0x53// Identification of a fingerprint template with the database<br />#define CMD_CAPTURE_FINGER 0x60// Capture a fingerprint image(256x256) from the sensor<br />#define CMD_MAKE_TEMPLATE 0x61// Make template for transmission<br />#define CMD_GET_IMAGE 0x62// Download the captured fingerprint image(256x256)<br />#define CMD_GET_RAW_IMAGE 0x63// Capture &amp; Download raw fingerprint image(320x240)<br />#define CMD_GET_TEMPLATE 0x70// Download the template of the specified ID<br />#define CMD_SET_TEMPLATE 0x71// Upload the template of the specified ID<br />#define CMD_GET_DB_START 0x72// Start database download obsolete<br />#define CMD_GET_DB_END 0x73// End database download obsolete<br />#define CMD_UPGRADE_FIRMWARE 0x80// Not supported<br />#define CMD_UPGRADE_ISO_CD_IMAGE  0x81// Not supported<br /><br />#define ACK 0x30// Acknowledge.<br />#define NACK 0x31// Non-acknowledge<br /><br />#define HEADER_CMD_RESP_CODE_1  0x55// Static byte to mark the beginning of a command packet-never changes<br />#define HEADER_CMD_RESP_CODE_2  0xAA// Static byte to mark the beginning of a command packet-never changes<br /><br />#define HEADER_DATA_START_CODE10x5A// Static byte to mark the beginning of a data<br />#define HEADER_DATA_START_CODE20xA5// Static byte to mark the beginning of a data<br /><br />#define DEVICE_ID_1   0x01// Device ID Byte 1 (lesser byte)-theoretically never changes<br />#define DEVICE_ID_2   0x00// Device ID Byte 2 (greater byte)<br /><br />#define PACKET_SIZE12// Rozmiar pakietu<br />#define PACKET_SIZE_HEADER2// Rozmiar naglowka<br />#define PACKET_SIZE_CHECKSUM2// Rozmiar sumy kontrolnej<br /><br />#define VALUE_ZERO 0x00<br />#define VALUE_NON_ZERO0x01<br /><br /><br />/************************************************ FUNKCJE EXPORTOWANE *******************************************/<br />uint8_t GT511C3_Open( void );<br />uint8_t GT511C3_Cmos_led (uint8_t state);<br />uint8_t GT511C3_isFingerPressed( void );<br />uint8_t GT511C3_capture_finger ( uint8_t highQuality );<br />uint8_t GT511C3_identification_1N ( void );<br /><br /><br /><br />#endif /* GT511C3_H_ */[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4344">RafPe</a> — 11 wrz 2014, o 22:14</p><hr />
]]></content>
</entry>
</feed>