- Labornetzteil AliExpress         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 30 von 30

Thema: mysql.h file

  1. #21
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Anzeige

    Praxistest und DIY Projekte
    Ich hatte dir bereits angekündigt, dass du die Bibliothek selbst auf deinen µC portieren musst - und dabei insbesondere Schnittstellen fürs Speichermanagement und die Netzwerkbiliothek emulieren musst.
    Eigentlich musst du ein halbes POSIX-Betriebssystem emulieren oder den Code entsprechend umbauen, dass er mit deinen Möglichkeiten läuft.

    Zusammengfasst:
    Lern zu verstehen was du tun willst oder lass es sein!

    mfG
    Markus

  2. #22
    Benutzer Stammmitglied
    Registriert seit
    06.04.2009
    Beiträge
    51
    So jetzt bin ich wieder aus meinem Urlaub zurück und habe mich frisch wieder ans Werk gemacht.

    Ich habe inzwischen nachgeforscht und bin auf folgendes gekommen:

    1. Ich verwende den lwIP TCP/IP - Stack - das sollte die Sache doch ein bisschen vereinfachen auch wenn ich kein OS verwende oder? @ markusj

    2. Ich denke ich abe schon mal den Anfang gemacht und mal den Stack initialisieren können. Jetzt aber eine weitere Frage: muss ich bei einer Verbindung mit einer Datenbank eine Socketverbindung herstellen oder reicht da eine normale TCP Verbindung. Ich habe den Begriff "Socketverbindung" nur mal wo in dem Kontext aufgefasst, weiß aber nicht genau was eigentlich der Unterschied zwischen einer Socketverbindung und der TCP Verbindung ist. Oder kann ich eine Socketverbindung nur verwenden wenn ich ein OS in betrieb habe?

    3. Anscheinend besitzt mein ARM controller auch ein OS drauf. Nur habe ich keine Ahnung wie ich dieses verwende und ich will es eigentlich auch nicht wirklich verwenden. Deswegen habe ich mich auch ein bisschen eingelesen in das lwIP (mit dem ich auch hoffe, dass es funktioniert) und da steht drin, dass ich nicht umbedingt ein OS benötige, weil ein OS nur benötigt wird wenn multi- threading gewünscht ist. Bei meinem Anwendungsfall von single-threading (falls meine Anwenundung, also der Datenbankconnect ein single-thread ist) ist das doch dann garnicht notwendig. Das habe ich zumindest aus dem Wiki auf lwIP-Wiki so herausgelesen. Irgendwie muss ich bei single-threading nur alle 250ms eine Timerroutine aufrufen, die mir den tcp-timer verwaltet.

    lg

  3. #23
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Ich denke, du wirst nicht umhin kommen, größere Teile der Clientbibliothek zu adaptieren oder gar neu zu schreiben. Dass du jetzt immerhin weißt, welche Netzwerkbibliothek du verwendest, ist schon einmal ein Fortschritt.
    Wenn dein ARM ein OS hat, solltest du das schleunigst in Erfahrung bringen, weil das massiven Einfluss darauf hat, welche Möglichkeiten du und Schnittstellen dir zur Verfügung stehen.

    mfG
    Markus

  4. #24
    Benutzer Stammmitglied
    Registriert seit
    06.04.2009
    Beiträge
    51
    Also nochmal muss ich das auch in Erfahrung bringen welches OS ich drauf hab, wenn ich den NO_SYS betrieb, der ja gleichbedeutdend ist mit dem als ob da kein OS drauf wäre?

    Und ich würde das mit der Socketverbindung auch gerne wissen, also was genau der Unterschied zwischen einer TCP/IP- und einer Socketverbindung ist? Und ob es da eventuell eine Faustregel gibt, die besagt, dass bei einem Datenbankconnect diese oder jene Verbindungsart verwendet werden muss oder besser ist?

    lg Manta

  5. #25
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.07.2009
    Ort
    Wien
    Beiträge
    131
    sockets sind, vereinfacht gesagt, das netzwerk-API von *nix, darüber machst du TCP/IP-verbindungen (u.a.). es reicht also an sich eine TCP-verbindung, wie auch immer du die dann mit dem vorhandenen IP-stack herstellst.

    aber ich schließe mich markusj an: die mysql-client-library setzt ein betriebssystem und dessen APIs voraus (*nix oder windows, vermutlich), und wenn das nicht vorhanden ist, mußt du entweder die mysql-libraries massiv ändern oder emulationen für alle verwendeten APIs (speicherverwaltung, netzwerkverwaltung, fileverwaltung, evtl threads und und und) schreiben. das würd ich auf jeden fall vermeiden wollen.

    der IMHO einfache lösungsansatz wurde ja auch schon vorgeschlagen: schreib einen serverprozeß am PC, mit dem dein µC kommuniziert. grob skizziert: der µC macht eine TCP-verbindung zum PC auf und schickt dort die ID des RFID-tags hin, der serverprozeß packt die in ein "SELECT bla FROM table WHERE id= '1234'", kommuniziert mit der "datenbank", und schickt die aus der antwort extrahierten daten in einem simplen format, das sich am µC leicht verarbeiten läßt, zurück.

    cm.

  6. #26
    Benutzer Stammmitglied
    Registriert seit
    06.04.2009
    Beiträge
    51
    Zitat Zitat von cmock
    der IMHO einfache lösungsansatz wurde ja auch schon vorgeschlagen: schreib einen serverprozeß am PC, mit dem dein µC kommuniziert. grob skizziert: der µC macht eine TCP-verbindung zum PC auf und schickt dort die ID des RFID-tags hin, der serverprozeß packt die in ein "SELECT bla FROM table WHERE id= '1234'", kommuniziert mit der "datenbank", und schickt die aus der antwort extrahierten daten in einem simplen format, das sich am µC leicht verarbeiten läßt, zurück.
    Oke, wenn das denn der einfachere Weg ist, dann werde ich wohl diesen nehmen.

    Und nochmal langsam ob ich das jetzt alles verstanden habe. Ich würde dsa sehr gerne verstehen was genau ich hier überhaupt betreibe:

    Ich verwende jetzt also KEIN OS auf meinem µC, daher ist die direkte Verbinung mit der DB flach gefallen, da ich sonst in der mysql-client-bibliothek zu viel ändern müsste. Darum steig ich jetzt um auf folgende Variante:

    Mit dem lwIP - Stack öffne ich eine TCP - Verbindung mit dem Server und dem dort laufenden Serverprozess der mir dann die Abfragen und die Einträge in der DB macht. Diesem Serverprozess schicke ich dann die entschprechenden IDs der RFID - Tags und lasse sie dort verarbeiten.

    Stimmt ja so oder? Ich weiß ich hab das jetzt sicherlich einfach nochmal wiederholt was cmock geschrieben hat aber ja so tu ich mir einfach leichter.

    Gut, aber, damit ergibt sich schon die nächste Frage. Wie schreibt man so einen Serverprozess, der mit der DB und dem µC kommuniziert? Also welche Sprache? Wo gibts für sowas Tutorials zum Einlesen und wenn man so etwas ind er Richtung mit dem Serverprozess noch nie gemacht hat ist das dann schaffbar?

    lg Manta

  7. #27
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.07.2009
    Ort
    Wien
    Beiträge
    131
    Zitat Zitat von Manta
    Ich würde dsa sehr gerne verstehen was genau ich hier überhaupt betreibe:
    ja, das wär wohl hilfreich

    Mit dem lwIP - Stack öffne ich eine TCP - Verbindung mit dem Server und dem dort laufenden Serverprozess der mir dann die Abfragen und die Einträge in der DB macht. Diesem Serverprozess schicke ich dann die entschprechenden IDs der RFID - Tags und lasse sie dort verarbeiten.
    ja, so hab ich das gemeint.

    Gut, aber, damit ergibt sich schon die nächste Frage. Wie schreibt man so einen Serverprozess, der mit der DB und dem µC kommuniziert? Also welche Sprache? Wo gibts für sowas Tutorials zum Einlesen und wenn man so etwas ind er Richtung mit dem Serverprozess noch nie gemacht hat ist das dann schaffbar?
    sicher ist das schaffbar, vor vielen jahren war ich auch in der situation "ich kann grundsätzlich programmieren, hab keine ahnung von netzwerkprogrammierung oder programmierung unter *nix, aber das macht ja nix", und hab drei jahre später meine firmenanteile um ordentlich geld verkauft, die nix wert gewesen wären, wenn ich das nicht gelernt hätt...

    ich würd das heutzutage mit perl unter linux lösen, also eine etwas ausgefeiltere variante von

    Code:
    use DBI;
    # mysql-connection oeffnen
    $dbh = DBI::connect(blablabla);
    
    # uC schickt LF-terminierte RFID-IDs:
    while(<>) {
      chomp;
      print $dbh->selectrow_arrayref("SELECT name FROM rfids WHERE id = ?", {}, $_)->[0], "\n";
    }
    aber das ist natürlich minimalst und ungetestet, und hat vor allem den nachteil, daß es nicht auf die wichtigen fragen eingeht:

    * wie sind deine aktuellen programmierkenntnisse?

    * welche betriebssysteme beherrscht du?

    weil an sich kannst das mit jeder kombination aus OS und sprache abfackeln, für die es MySQL-anbindung gibt.

    cm.

  8. #28
    Benutzer Stammmitglied
    Registriert seit
    06.04.2009
    Beiträge
    51
    Also

    Ich habe mich entschieden den Serverprozess in PHP zu realisieren. -Ich stelle also einen TCP - Kanal mit dem µC zum Server her und übergebe dann dem PHP Skript die entsprechenden Parameter und diese kommuniziert dann mit dem Server.

    Mal schaun ob das so geht wie ich mir das vorstelle.

    lg

  9. #29
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.08.2008
    Ort
    Hallein
    Alter
    32
    Beiträge
    802
    Ich würde eher einen nativen Serverprozess mit C, C++, C#, Java oder ähnliches machen, aber nicht mit PHP!
    Kultuverein Metal Resurrection, für mehr Bands und Konzerte in Österreich (:

  10. #30
    Benutzer Stammmitglied
    Registriert seit
    06.04.2009
    Beiträge
    51
    Also der Stand der Dinge:

    Da der Stack Probleme gemacht hat, als ich ihn im single thearded modus gefahren bin, also ohne OS, habe ich mal versucht ein OS zu aktivieren. Ich habe mir da ein bisschen was durchgelesen und dann bin ich irgendwie auf die Seite des FreeRTOS gestoßen. Habe dann dort gesucht ob es denn so ein OS auch für meinen µC gibt. Habe es auch gefunden und runtergeladen. Dann habe ich es mal compiliert und dann in den µC gespielt und jetzt ist er tot. Oder ich glaub es zumindest. Er tut nichts mehr. Seine Anzeige ist schwarz und ich kann ihn auch nicht mehr anwählen.

    Zum programmieren verwende ich:

    Kompiler: KEIL µVision
    JTAG adapter: ULINK2

    Die Fehlermeldung die ich nun bekomme, wenn ich versuche auf den µC zuzugreifen ist folgende

    1. Cannot access memory
    2. Cannot enter debug mode

    Also die 1. heißt ja, dass der JTAG auf einen Speicher zugreifen will, der physikalisch nicht existiert.
    Die 2. Fehlermeldung ist mir noch unbekannt.

    Hat eventuell irgendjemand Erfahrung mit KEIL und dem ULINK2 und Fehlermeldungen dieser Art?

    lg Manta

Seite 3 von 3 ErsteErste 123

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress