logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

AVR komunikacja z serwerem bazodanowym SQL

dan_mad 26 Paź 2009 14:28 4088 11
  • #1 7176935
    dan_mad
    Poziom 10  
    Witam

    Mam zbudowany układ na bazie AT162 który komunikuje się przez Ethernet (tu wszystko działa) i myślałem o takim rozwiązaniu żeby zamiast połączenia z komputerem na którym jest programik który zapewnia Mi komunikację z układem tak jak mam teraz, łączyć się bezpośrednio z serwerem bazodanowym (np.PostgreSQL bo taki mam zainstalowany) i na tej zasadzie pobierać i przesyłać dane. Czy jest to możliwe i co wtedy pojawia się na sokecie serwera bazy danych i co trzeba na niego wrzucać od strony układu? Nic nie mogłem znaleźć na ten temat ale i nie bardzo wiedziałem jak szukać takiego tematu w sieci (avr + sql - tak szukałem w goglach).
  • #2 7176978
    arnoldziq
    VIP Zasłużony dla elektroda
    Musiałbyś zaimplementować obsługę klienta SQL dla ATMEGA.
    Bardzo ambitne zadanie, nie dawno ktoś poszukiwał takiego rozwiązania na elektrodzie, i chyba dał sobie spokój.
    BTW: Co to za dane, że ATMEGA musi je przetwarzać i musisz je zapisywać/czytać na serwer SQL ?
  • #3 7177019
    Konto nie istnieje
    Konto nie istnieje  
  • #4 7177039
    gothye
    Poziom 33  
    hmm co prawda jest to możliwe , ale najpierw ...
    musisz zaimplementować obsługe TCP/ip oraz samo połączenie do SQL dla avr
    obsługe języka SQL ...
    nie jestem pewien ale będziesz mógł tylko zadawać pytania do SQL typu UPDATE,DELETE lub INSERT , z SELECT możesz miec problem ze względu na możwilości samego uC ,gdybyś napisał coś wiecej o projekcie może udało by się określić coś wiecej w tym kierunku
  • #5 7177254
    dan_mad
    Poziom 10  
    Do arnoldziq:
    To układ do kontrolowania przejścia (kontrola dostępu), a jeśli chodzi o implementację klienta SQL na Atmela :-/ to faktycznie może być ciężko. Czy ten temat o którym wspominasz to nie AVR połączenie z MySQL ?

    Do albertb:
    Mój programik na PC właśnie wykorzystuje tą bibliotekę o której wspominasz (libpq), ale faktycznie zajrzę do źródeł biblioteki, zobaczę jak to wygląda (ale nie nastawiam się na to...).

    Do gothye:
    Samo połączenie TCP/IP to w zasadzie mam, myślałem sobie dokładnie tak jak piszesz że łącze się z soketem po adresie serwera i przesyłam sobie np.INSERT (poprzez ASCII) itp. ale to by było chyba zbyt piękne żeby było prawdziwe :-)

    PS: wpadłem na taki pomysł żeby z drugiego komputera zadawać polecenia SQL do serwera bazodanowego i jednocześnie podglądać co pojawia się na porcie programikiem do tego (chyba sniffer, gdzieś mam coś takiego na dysku), to trochę na piechotę ale może to będzie jakieś rozwiązanie...
  • #6 7177301
    arnoldziq
    VIP Zasłużony dla elektroda
    dan_mad napisał:
    To układ do kontrolowania przejścia (kontrola dostępu)

    Więc tak na prawdę to ATMEGA bardziej potrzebuje wysyłać dane do serwera SQL , niż z niego czytać ?
    Możesz sprawę załatwić dość prostą formą PHP lub w PERLu połączoną do tego serwera. I wysyłać z ATMEGI tylko zapytanie HTTP. Coś jak :
    http://www.mojastrona.pl/loguj.php?czas=20091101T1245&operacja=wejscie&przepustka=3344556
    Dużo łatwiej będzie zbudować protokół HTTP niż połączenie z SQL.
  • #7 7177318
    gothye
    Poziom 33  
    Również opracowuje system kontroli dostępu ,z tym że kontrolery oparte o uC AVR komunikują się za pomocą magistrali CAN z serwerem na linux .Jako program pośredniczący jest serwer napisany w C ,co znacznie bezpieczniejsze i wydajniesze w porównaniu do implemetacji TCP/IP na AVR ,po zatym powiązanie z sobą grup dostępu ,stref ,harmonogramów oraz wielu innych zmiennych przez sam serwer jest napewno dużo szybciej wykonywane niż przez sam 8 bitowy uC ;)
  • #9 7177531
    dan_mad
    Poziom 10  
    Do arnoldziq:
    Potrzebuję też komunikacji w drugą stronę (potwierdzenia komunikatów, uprawnienia itp.), mniej więcej kojarzę o co chodzi w sposobie komunikacji jaki proponujesz (przez HTTP) ale pośredni sposób komunikacji z bazą danych to już mam teraz.

    Do gothye:
    U mnie komunikacja może się odbywać również przez RS-485 (u Ciebie CAN), tak jak odpowiedziałem albertowi, jest program serwera napisany w C (+libpq), a te całe powiązania o których wspominasz obsługuje baza danych (+ ew. skrypty w PL/SQL), tak że AVR w żaden sposób nie jest "przeciążony" robotą ;-)
  • #10 10125201
    tomsonj88
    Poziom 10  
    Podczepię się pod temat.
    Potrzebuję, aby sygnały z AVR-a (dotyczące temperatur) były zapisywane do bazy danych w MySQL-u. Ale nie wiem jak to zrealizować. Stworzenie zapytania do bazy to nie problem ale nie wiem jak się z nią połączyć? Z tego co czytałem to ktoś proponował przez PHP-a, ale nie wiem jak to zrobić. Przeglądnąłem inne pokrewne tematy na forum i nic. jeśli chodzi o sprzęt to Atmega128 (MMnet02 z Propoxu).
    Proszę o pomoc.
  • #11 10151878
    djkomprez
    Poziom 21  
    Sprawę można dość prosto załatwić jak kolega pisał wyżej, wystarczy z poziomu atmegi
    wywołać stronę na serwerze (plik php) z odpowiednimi parametrami do przesłania np:

    Kod: PHP
    Zaloguj się, aby zobaczyć kod


    gdzie plik php wywoła już procedury zapisu do bazy na serwerze.
    Służą do tego metody GET ale to już odsyłam do dokumentacji php
REKLAMA