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

Połączenie z bazą MySQL w Nut/OS

ludas 25 Wrz 2009 21:46 3541 25
  • #1 7057894
    ludas
    Poziom 13  
    Witam,
    czy ktoś z Kolegów próbował połączyć się z bazą danych MySQL za pośrednictwem systemu Nut/OS?

    Pracuję na zestawie EVBnet01 + MMnet01 + Ethernut 4.8.3. Próby wykorzystania MySQL C API,
    którego wcześniej używałem w Borland C++ Builderze, nie udają się - ciągłe błędy kompilacji...
    Korzystam z WinAVR, do którego folderu powinienem skopiować plik libmysql.dll oraz pozostałe biblioteki?

    Będę wdzięczny za wszelkie linki/materiały/wskazówki.
  • #2 7058182
    gothye
    Poziom 33  
    libmysql.dll to komponent dla Delphi ,WinAVR nie posiada bibliotek do połaczenia z Mysql
  • #3 7062207
    ludas
    Poziom 13  
    Dziękuję za odpowiedź.
    Niestety nie mogę się z tym zgodzić - libmysql.dll to nie jest komponent lecz biblioteka, można ją wykorzystywać w Delphi, ale została stworzona na potrzeby MySQL C API.
    Na pewno da się jej użyć w Dev C++ oraz Borland C++ Builder... Mam jednak wątpliwości czy Nut/OS obsługuje biblioteki dll.

    Znalazłem na forum temat dotyczący połączenia AVR z MySQLem (AVR połączenie z MySQL), niestety nie wynika z niego zbyt wiele, choć można wnioskować że autorowi udało się zrealizować ten pomysł.
  • #4 7062215
    Freddie Chopin
    Specjalista - Mikrokontrolery
    ludas napisał:
    Niestety nie mogę się z tym zgodzić - libmysql.dll to nie jest komponent lecz biblioteka, można ją wykorzystywać w Delphi, ale została stworzona na potrzeby MySQL C API.
    Na pewno da się jej użyć w Dev C++ oraz Borland C++ Builder... Mam jednak wątpliwości czy Nut/OS obsługuje biblioteki dll.

    ehh... .dll to biblioteka dynamiczna systemu Windows, można sobie ją wykorzystać jak chcesz, a nie tylko do Delphi, tylko do Borlanda czy cokolwiek... Teraz jak już to wiesz, to odpowiedz sobie sam na pytanie, czy Nut/OS obsługuje biblioteki dynamiczne systemu Windows.

    4\/3!!
  • #5 7062260
    ludas
    Poziom 13  
    Cytat:
    Teraz jak już to wiesz, to odpowiedz sobie sam na pytanie

    Dziękuję za błyskotliwą uwagę. Moje pytanie może faktycznie było nieprzemyślane.

    Ale wracając do tematu głównego - wraz z biblioteką libmysql.dll udostępniony jest plik libmysql.lib zakładam, że da się go wykorzystać w WinAVR, może ktoś jest mi w stanie powiedzieć jak to zrobić?
    A może jest inny sposób połączenia Nut/OS z serwerem MySQL?
  • #6 7062297
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Tego pliku również nie wykorzystasz, bo jest to skompilowany kod na architekturę komputera PC.

    Jedyne wyjście jakie masz, to napisać komunikację samemu (lub znaleźć gotowy projekt na AVR albo inny mikrokontroler i go przeportować).

    4\/3!!
  • #7 7062342
    ludas
    Poziom 13  
    Freddie Chopin napisał:
    Jedyne wyjście jakie masz, to napisać komunikację samemu (lub znaleźć gotowy projekt na AVR albo inny mikrokontroler i go przeportować).

    Wydaje mi się, że pisanie komunikacji od podstaw przerasta moje możliwości/umiejętności... Projektów na AVRy już szukałem - niestety bezskutecznie.
    Do tej pory nie wpadłem jednak na pomysł, żeby poszukać projektów na inne uC, pójdę tym tropem.
  • #8 7062772
    kedzi1
    Poziom 18  
    Witam kolegę.
    Wykorzystanie skompilowanych bibliotek to rzeczywiście nie najlepszy pomysł, ale... wykorzystanie źródeł to już co innego. Wystarczy zalogować się na www.mysql.com i pobrać sobie źródełka w C. Jednak nie przyjdzie ich nam kompilować na AVR'ka, za to są nieocenionym źródłem wiedzy. Po drobnych przeróbkach wykorzystasz np. procedurę hashowania hasła przy pomocy SHA. Raczej ciężko było by pisać to od nowa.
    Do tego masz wszystko elegancko opisane tu:
    MySQL_Internals_ClientServer_Protocol

    Innym źródłem wiedzy to podglądactwo :), zainstaluj jakiś programik do podglądania pakietów, postaw bazę u siebie na PC, zainstaluj jakiegoś klienta i obserwuj.

    Jak będzie duże zainteresowanie tematem to może pokuszę się o napisanie jakiegoś tutora (na razie ciężko z czasem bo wreszcie muszę się obronić, a praca leży odłogiem). Nie pomogę ci z Nut/OS ani innym bo żadnego nie znam, pisałem cały stos od początku ponieważ uważam, że AVRy na pewno nie są stworzone pod OSa i tylko się na nim męczą. :)

    Nadmienię iż jak ja drążyłem ostatnio temat to udało mi się uruchomić klienta zgodnego z wersją 3.23. Nowsze wersje używają innego kodowania hasła którego ni jak nie rozgryzłem, może jak bym usiadł jeszcze raz... W każdym bądź razie klient działa, tylko baza musi obsługiwać tą wersję (kwestia ustawień).
  • #9 7063249
    tmf
    VIP Zasłużony dla elektroda
    Obawiam sie, ze przeportowanie takiej biblioteki na AVR jest praktycznie niewykonalne - chociazby brak wystarczajacej ilosci pamieci SRAM. Przeciez nawet prosty select moze zwrocic nieograniczona ilosc danych, ba, nawet szukanie po krotkach, czy tylko polach moze zwrocic od kilkunastu bajtow do GB danych. Jak juz to ma jakos dzialac to lepiej ominac cale API DB i wysylac w obie strony po prostu stringi, a niech sobie PC zamienia to na instrukcje SQLa.
  • #10 7063319
    ludas
    Poziom 13  
    tmf napisał:
    nawet prosty select moze zwrocic nieograniczona ilosc danych, ba, nawet szukanie po krotkach, czy tylko polach moze zwrocic od kilkunastu bajtow do GB danych.

    W ogólnym przypadku faktycznie mogą się takie sytuacje zdarzyć, jednak przy założeniu, że baza wymienia z urządzeniem tylko małe porcje danych wydaje mi się, że AVR da sobie z tym radę. Swoją drogą czasem wystarczy tylko zapisywać dane do bazy nic z niej nie pobierając.

    tmf napisał:
    lepiej ominac cale API DB i wysylac w obie strony po prostu stringi, a niech sobie PC zamienia to na instrukcje SQLa.

    Pomyślałem o tym rozwiązaniu - prosty skrypt PHP, przekazywanie parametrów w adresie i komunikacja gotowa, ale martwię się bezpieczeństwo danych. W praktyce łatwo można podejrzeć co jest wysyłane w sieci, a nie bardzo wiem jak skutecznie zabezpieczyć taką komunikację. Dlatego chciałem wykorzystać połączenie z bazą danych.
  • #11 7063759
    tmf
    VIP Zasłużony dla elektroda
    To ty jeszcze na tym chcesz miesz np. SSL? No to AVR wymieka.
    BTW, niesadze, zeby stos TCP w NutOS byl na tyle bezpieczny, zeby mozna bylo takie urzadzenie wystawic w internecie.
  • #12 7064344
    ludas
    Poziom 13  
    tmf napisał:
    To ty jeszcze na tym chcesz miesz np. SSL?

    Nie no aż tak to mnie nie poniosło;) Ale przy połączeniu z bazą mam, zdaje się, dość dobrze zabezpieczoną komunikację (szyfrowanie hasła, itp.), a przy zwykłym http wszystko widać jak na dłoni.
    Szczerze mówiąc chcę wykorzystać internet do komunikacji, mam nadzieję że mnie wyobraźnia za bardzo nie poniosła:) Przekieruję tylko jeden port a resztę zblokuję na routerze i mam nadzieję, że będzie ok. Ale proszę o weryfikację bardziej doświadczonych kolegów.

    --

    Musze się jeszcze odnieść do postu kolegi kedzi1 - bo to jego działania zainspirowały mój pomysł;) Przede wszystkim dziękuję za reakcje na zapytanie!

    kedzi1 napisał:
    Wykorzystanie skompilowanych bibliotek to rzeczywiście nie najlepszy pomysł, ale... wykorzystanie źródeł to już co innego. Wystarczy zalogować się na www.mysql.com i pobrać sobie źródełka w C. Jednak nie przyjdzie ich nam kompilować na AVR'ka, za to są nieocenionym źródłem wiedzy.

    Heh... Wpadłem na to, żeby je pobrać, ale uparłem się na kompilację pod WinAVR, co zaowocowało jedynie pojawieniem się kolejnych siwych włosów na mojej skroni... A pomysł, żeby wyciągnąć z nich potrzebne informacje jakoś nie przyszedł mi do głowy , może dlatego, że jest genialny;) Będzie z tym dużo pracy, ale myślę, że warto.

    kedzi1 napisał:
    Jak będzie duże zainteresowanie tematem to może pokuszę się o napisanie jakiegoś tutora (na razie ciężko z czasem bo wreszcie muszę się obronić, a praca leży odłogiem). Nie pomogę ci z Nut/OS ani innym bo żadnego nie znam, pisałem cały stos od początku ponieważ uważam, że AVRy na pewno nie są stworzone pod OSa i tylko się na nim męczą. :)


    Taki tutorial to bardzo dobry pomysł, ale rozumiem - nie jest to zadanie do zrobienia w 5 minut. Niestety moje podejście do programowania zostało ukształtowane przez VC++, C# i Javę, dlatego podświadomie czuję się pewniej pod opieką jakiegoś OSa, chociaż w tym przypadku to może faktycznie przerost formy...

    kedzi1 napisał:
    Nadmienię iż jak ja drążyłem ostatnio temat to udało mi się uruchomić klienta zgodnego z wersją 3.23. Nowsze wersje używają innego kodowania hasła którego ni jak nie rozgryzłem, może jak bym usiadł jeszcze raz... W każdym bądź razie klient działa, tylko baza musi obsługiwać tą wersję (kwestia ustawień).


    Rozumiem, w tym przypadku jednak, problem ma większego znaczenia.
  • #13 7065025
    tmf
    VIP Zasłużony dla elektroda
    Co do hasla to w zaleznosci od ustawien idzie ono golym teksem. Jakies bezpieczenstwo zaczynasz miec dopiero jesli negocjujesz bezpieczne polaczenie, ale to juz zaczyna przerastac AVRa. Co do stosu TCP to na takie kontrolery zwykle jest on pisany przy zalozeniu, ze otrzymywane ramki sa poprawne i nikt nie probuje tego stosu rozpirzyc. W Internecie to zalozenie sie nie sprawdza.
    Takze moze warto zmienic platforme - za podobne pieniadze masz np. plytke NGW100 z atmela z AVR32 i Linuxem na pokladzie, dla ktorej normalny stos TCP, SSL i polaczenie z MySQL to bedzie pryszcz.
  • #14 7065316
    ludas
    Poziom 13  
    tmf napisał:
    Takze moze warto zmienic platforme - za podobne pieniadze masz np. plytke NGW100 z atmela z AVR32 i Linuxem na pokladzie, dla ktorej normalny stos TCP, SSL i polaczenie z MySQL to bedzie pryszcz.

    Chyba rzeczywiście będę musiał wziąć to rozwiązanie pod uwagę, ponieważ kwestia bezpieczeństwa jest dość istotna. Początkowo chciałem zrealizować mój pomysł na platformie EPIA N5000EG nano-ITX z jakimś linuxem. Doszedłem jednak do wniosku, że po pierwsze koszty są zbyt wysokie (ponad 800zł) a po drugie mimo wszystko wymiary nanoPC trochę duże. Dlatego skusiłem się na MMnet01 i Nut/OS, nie analizując wstępnie możliwości tego układu. Jeśli chodzi o NGW100 to koszty faktycznie będą dużo niższe, ale wymiary pozostają, jednak ten problem jest drugorzędny. Widzę, że jest dość dużo materiałów na ten temat, poczytam i przemyślę sprawę.
    Ciekawe czy uda się na tym zainstalować Javę, wtedy byłoby dla mnie idealnie:)
  • #15 7066060
    KeinXor
    Poziom 24  
    Cytat:
    mój pomysł na platformie EPIA N5000EG nano-ITX z jakimś linuxem


    Wydaje się że był to bardzo sensowny pomysł, może nie do końca EPIA bo drogo wychodzi, ale rozwiązanie z procesorem architektury x86 jest praktyczne i stosunkowo tanie a przede wszystkim
    szybsze w realizacji. Osobiście stosuję płytki IEI EPIC NANO-GXTC . W zależności od upodobań i wymagań stawiasz na tym linux-a bądź windows ce (i masz możliwość programowania w .net).
  • #16 7066122
    ludas
    Poziom 13  
    Jaka jest przybliżony cena takiej płyty? Nie mogę nigdzie znaleźć, a EPIA N5000EG kosztuje ponad 700zł + RAM + karta CF.
  • #17 7066127
    gothye
    Poziom 33  
    Taniej wyniosła by Ciebie płyta ITX + CF
  • #18 7066145
    ludas
    Poziom 13  
    gothye napisał:
    Taniej wyniosła by Ciebie płyta ITX + CF

    EPIA N5000EG to jest płyta nano-ITX, niestety nie udało mi się znaleźć niczego tańszego z wbudowanym zasilaczem. Znacznie tańsze są płyty mini-ITX, ale są też dużo większe - 17x17cm.
  • #19 7066154
    KeinXor
    Poziom 24  
    Jeśli chodzi o IEI EPIC NANO-GXTC to za szt. w zeszłym roku wychodziło ~450zł przy kupnie 4-5 sztuk przy większych ilościach da sie wynegocjować zniżki, do tego pamięć SO-DIMM pojemność wedle potrzeb i uznania i karta cf.
  • #20 7066191
    tmf
    VIP Zasłużony dla elektroda
    ludas napisał:

    Ciekawe czy uda się na tym zainstalować Javę, wtedy byłoby dla mnie idealnie:)


    Na tym NGW100 dziala normalny linux, wiec odpalenie na tym javy nie stanowi problemu. Podobnie jak dowolnego innego programu. Jedyny limit jaki masz to ograniczone zasoby - FLASH i RAM. Oczywiscie programy mozna trzymac na np. kartach SD.
    Kupowalem ta plytke za $80 wiec cenowo przebija kazda EPIE, no i rozmiary ma jednak duzo mniejsze niz nano-ATX. Masz tez do dyspozycji pelny schemat, procesory sa dostepne i tanie, wiec jesli potrzebujesz tego wiecej to po prostu zrob swoja plytke, ceny wielowarstwowych juz nie porazaja, dodaj na nia to co potrzebujesz i bedziesz mial zupelnie idealne rozwiazanie.
  • #22 7066272
    piotr_go
    Konstruktor DIY elektronika
    @ludas
    A może by tak MMnet1001 na ARM9 z Propoxu?
    http://www.propox.com/products/t_231.html
    Jest sporo mniejszy od NGW100 i nawet tańszy.
  • #23 7066319
    ludas
    Poziom 13  
    Faktycznie jeśli wracałbym do pierwotnego pomysłu - to byłoby lepsze rozwiązanie od NGW100. Trzeba w prawdzie dorobić zasilacz, ale moduł jest tańszy i mniejszy, bo nie posiada zbędnych (w moim zastosowaniu) peryferii.
    Nadal jednak zastanawiam się nad przedstawionym wyżej eBOX-em. Za tą cenę trudno będzie zbudować gotowe urządzenie z modułem MMnet1001... Co sądzicie o tym rozwiązaniu?
  • #24 7066335
    piotr_go
    Konstruktor DIY elektronika
    Mają i wersję z zasilaniem(MMnet1002), toleruje szerszy zakres napięcia niż eBOX, pobór prądu przypuszczam że sporo niższy.
    http://www.propox.com/products/t_232.html
  • #25 7074552
    Konto nie istnieje
    Konto nie istnieje  
  • #26 10680470
    coolrob
    Poziom 15  
    ludas, u nas w firmie zastosowaliśmy raz eBox'y z linuxem na pokładzie - porażka. Zaczynając od tego, że bardzo wolno działają a kończąc na awaryjnych zasilaczach impulsowych.
REKLAMA