PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Software für Windows und Linux



WeiserDruide
28.06.2011, 18:23
Hallo ich welche Software könnt ihr für Windows und Linux empfehlen ich kann etwas VB(A), HTML und PHP. Ich möchte mit der Software ein Automatisches Regelsystem steuern wobei auf meine Ubuntu Server MYSQL als DB und das Programm zur Auswertung laufen soll. Mit Windows möchte ich nur Testen. Die Übertragung zum AVR läuft über RS232.

Danke

-schumi-
28.06.2011, 19:28
Hi,

wie soll denn das ganze ablaufen? Je nach dem welche PHP-Seite aufgerufen wird soll ein bestimmter String an den Controller gesendet werden, oder wie?

HTML und PHP: Du könntest einfach einen Apache-Server aufsetzen, ist wirklich sehr leicht, bastel auch grad damit rum :-D (Als Code-Editor währe Geany sehr zu empfehlen) http://wiki.ubuntuusers.de/apache
Die Übertragung zum AVR läuft über RS232: Wenns nicht mehr ist: Da kannst du einfach über PHP ein Kommando ausführen und über die Shell den Text senden (Und Baudrate wählen etc.). Ein extra Programm brauchst du dazu nicht zu schreiben

​​Einstellungen: stty und setserial (Mal in der Konsole "man stty" und "man setserial" eingeben ;-) )
Senden: Kann man direkt in der Konsole machen, indem man eine "echo"-Ausgabe auf die Schnittstelle umleitet, z.B.
echo "Hallo Welt" > /dev/ttyUSB0 (http://www.jux-net.info/jux2/docs/sys100/comm_42.html)
Empfangen: Könnte man z.B. mit "cat" machen:
cat /dev/ttyUSB0
Ansonsten die serielle Schnittstelle einfach wie eine Datei behandeln. Wie weit das in PHP geht weis ich nicht so genau, hab mich noch kaum damit befasst ;-)

Wenns doch komplexer werden soll - mehr Infos bitte :-D

Gruß
-schumi-

WeiserDruide
28.06.2011, 20:05
Danke für die Schelle Antwort.
Ich hatte mir das eigentlich so gedacht das ich über den Browser (z.B. Ipod) wähle was aus gelagert werden soll und diese dann von PHP in die DB geschrieben zusätzlich wird noch ein Bit geschrieben was anzeigt das das andere Programm aktiv werden soll. Das andere Programm kontrolliert in regelmäßigen Abständen diese Bit und sucht bei Veränderung den Lagerplatz aus der DB und sende diesen dann den Lagerplatz zusammen mit den Fach (Auslagerung) an den AVR so das der AVR nur die eigentliche Auslagerung durchführen muss. Mein Lager soll ca. 100 bis 200 Fächer habe muss noch genau ermittelt werden.


Das win. Programm ist nur zum Basteln und vielleicht für Später auf den Linux (Server) ist schon Ubuntu Installiert mit Apache und MQSQL.


Ich möchte mit diesen Projekt versuch meine Programmmirfähigkeiten ausbauen.

-schumi-
28.06.2011, 20:22
Beispiel: Du möchtest einen Kerko einlagern:


1. Du gehst auf deine PHP-Seite und sagt, dass du die Schachtel mit den Kerkos haben möchtest
2. Die Webseite sieht in der Datenbank nach wo die Kerkos sind
3. Über PHP wird einem weiterem Programm gesagt, dass die Schachtel (#58 oder so) geholt werden soll
4. Das weitere Programm sagt jetzt dem AVR über RS232, er soll die Schachtel #58 holen
5. AVR holt Schachtel
6. ### Wie kommt die Meldung in den Browser, dass die Schachtel da ist? ###
7. Du legst einen Kerko in die Schachtel
8. Du drückst im Browser auf OK
9. Die PHP-Seite sagt dem weiteren Programm, dass die Schachtel wieder dahin verschwinden soll wo sie hergekommen ist
10. Das Programm sagt dem AVR, er soll die Schachtel wieder zurücklegen
11. AVR (Hat sich #58 gemerkt) fährt die Schachtel wieder zu Platz #58
12. ### Wie kommt die Meldung in den Browser, dass die Schachtel wieder im Regal ist? ###
13. Fertig


Ist das richtig so?

Insgesamt ein sehr interessantes Projekt muss ich sagen :-D

Gruß
-schumi-

WeiserDruide
28.06.2011, 21:26
Nicht ganz so

1. Ich gehe auf die PHP-Seite und sagt, dass ich die Schachtel mit den Kerkos haben möchtest
2. Die Webseite schreibt den Wunsch z.B. Kerkos in die DB
3. Das Programm sieht dann nach wo die Kerkos sind und sendet dies an den AVR
4. AVR holt Schachtel
5. AVR meldet an das Programm Schachtel geholt
6. Ich nehme einen Kerko aus der Schachtel
7. Ich betätige an den Ausgabefach einen Taster der sagt wieder einlagern.
8. Die Schachtel fährt über einen Barcode Scanner der sagt das ist Schachtel Nummer z.b. 58
9. Die PHP Seite fragt mich nach der Menge in der Schachtel ich gebe sie ein und bestätige.
10. Das Programm sagt den AVR Lagere die Schachtel ein.
11. AVR lagert Schachtel ein.
12. Fertig



Ich bin mir nicht sicher ob es vielleicht einfacher wäre mit 3 Kodierschalter die Menge ein Zugeben. Am allerbesten Wäre ja wiegen das funktioniert aber bei so leichten Bauteilen nicht zuverlässig.

Ich plane 5 Ausgabefächer für mein Regellager. Und ich möchte auch einzelne Schachtel entnehmen Können ohne das das System durcheinander Gerät.

Das Lager soll auch nach den chaotische System Arbeiten.

Wenn es einfacher geht wie du geschrieben hast nur mit PHP wäre noch besser. Ich wollt aber z.B. 3 Aufträge erteilen und dann in den Keller gehen und das Material holen und ich wies nicht ob das mit PHP funktioniert.

-schumi-
29.06.2011, 07:36
Es gibt noch ein Problem: Du möchtest ja schätzungsweise im Browser sehen wann die Schachtel angekommen ist. PHP ist aber Serverseitig, d.h. der Browser müsste jetzt alle 5Sekunden oder so die Seite reloaden damit der Server nachsieht ob die Schachtel bereits angekommen ist oder nicht und dir die dementsprechende Meldung im Browser anzeigt

Ich würds so machen:

1. Du gehst auf die index.php und verlangst Kerkos
2. Du wirst nach bestellung.php weitergeleitet. Die bestellung.php sieht in der MySQL-Datenbank nach in welcher Schachtel (z.B. 58 die Elkos liegen (und evtl. wie viele)
3. Die bestellung.php sendet via UART an den AVR z.B. "GET58" (z.B. echo "GET58" > /dev/ttyUSB0 ausführen). Der macht sich auf den Weg die Schachtel zu hohlen
4. Die bestellung.php verlinkt dich auf "wait.php", die sich alle 5 Sekunden reloadet (um zu prüfen ob die Schachtel schon angekommen ist)
5. Wennn der Server die anfrage der "wait.php" bekommt, schaut er (z.B. via cat /dev/ttyUSB0) ob er schon ein "58DONE" oder so gekriegt hat. Falls nicht -> Browser bekommt wieder wait.php
6. Ist der AVR fertig, so sendet er "58DONE" via UART an den Server
7. Bei der nächsten Anfrage der wait.php wird mit cat geprüft ob "58DONE" in Buffer für die serielle Schnittstelle steht
8. Wenns drinsteht: Browser wird auf eine done.php geschickt, auf der z.B. steht "Schachtel Nummer 58 mit 21 (<- Datenbank) Kerkos bereit" oder so
9. Jetz gehst du zum Lager und nimmst dir 3 Kerkos aus der Schachtel
10. Dann gibst du auf einem Tastenfeld (das an den AVR angeschlossen ist) 18 ein, um mitzuteilen, dass noch 18 Stk. in der Schachtel sind.
11. Dann sendet der AVR z.B. "58:18STK" an der Server
12. Auf der done.php drückst du auf "OK"
13. OK = Link auf "einlagern.php" -> Server liest per cat die serielle Schnittstelle ein, bekommt "58:18STK" aus dem Buffer. Er aktualisiert jetzt in der Datenbank und verlinkt dich auf einlagern_wait.php und sendet mit cat "BACK58" an den AVR. Daraufhin beginnt der AVR mit einlagern
14. Die einlagern_wait.php reloadet sich auch alle 5 Sekunden, dann wird jedes mal geprüft, ob ein "58DONE" im Buffer steht. Wenn nicht -> Wieder nach einlagern_wait.php
15. Ist der AVR fertig, sendet er "58DONE" über die serielle Schnittstelle
16. Bei der nächsten Anfrage der einlagern_wait.php liest die php-Seite "58DONE" mit cat aus dem Buffer der seriellen Schnittstelle, ist zufrieden und schickt dich wieder auf die index.php



z.B. 3 Aufträge erteilen
Dafür müsste man sich noch was überlegen, sollte aber durchaus möglich sein :-D

Gruß
-schumi-

WeiserDruide
29.06.2011, 09:54
mit den 3 Auftägen häte ich mir das so gedacht

1. Du gehst auf die index.php und verlangst Kerkos
2. Du wirst nach bestellung.php weitergeleitet. Die bestellung.php sieht in der MySQL-Datenbank nach in welcher Schachtel (z.B. 58 die Elkos liegen (und evtl. wie viele)
3. Die bestellung.php schreibt die Anfrage in die Datenbank und fragt ob ich noch mehr bestellen will.
4. Ich drüke auf nein und dan senden besteöllung.php den ersten auftrag an den AVR
5. Wennn der Server die anfrage der "wait.php" bekommt, schaut er (z.B. via cat /dev/ttyUSB0) ob er schon ein "58DONE" oder so gekriegt hat. Falls nicht -> Browser bekommt wieder wait.php das wird solage wiederholt bis alles schachtel geholt sind.
6. Ist der AVR fertig, so sendet er "58DONE" via UART an den Server
7. Bei der nächsten Anfrage der wait.php wird mit cat geprüft ob "58DONE" in Buffer für die serielle Schnittstelle steht
8. Wenns drinsteht: Browser wird auf eine done.php geschickt, auf der z.B. steht "Schachtel Nummer 58 mit 21 (<- Datenbank) Kerkos bereit" oder so
9. Jetz gehst du zum Lager und nimmst dir 3 Kerkos aus der Schachtel
10. Dann gibst du auf einem Tastenfeld (das an den AVR angeschlossen ist) 18 ein, um mitzuteilen, dass noch 18 Stk. in der Schachtel sind.
11. Dann sendet der AVR z.B. "58:18STK" an der Server
12. Auf der done.php drückst du auf "OK"
13. OK = Link auf "einlagern.php" -> Server liest per cat die serielle Schnittstelle ein, bekommt "58:18STK" aus dem Buffer. Er aktualisiert jetzt in der Datenbank und verlinkt dich auf einlagern_wait.php und sendet mit cat "BACK58" an den AVR. Daraufhin beginnt der AVR mit einlagern
14. Die einlagern_wait.php reloadet sich auch alle 5 Sekunden, dann wird jedes mal geprüft, ob ein "58DONE" im Buffer steht. Wenn nicht -> Wieder nach einlagern_wait.php
15. Ist der AVR fertig, sendet er "58DONE" über die serielle Schnittstelle
16. Bei der nächsten Anfrage der einlagern_wait.php liest die php-Seite "58DONE" mit cat aus dem Buffer der seriellen Schnittstelle, ist zufrieden und schickt dich wieder auf die index.php


jetzt kommt nur noch dazu ich wollte die Schachtel aber auch entnehmen können und später wieder hinein geben da ich nicht immer weiß wie viele Teile ich genau brauche.

radbruch
30.06.2011, 11:17
..der Browser müsste jetzt alle 5 Sekunden oder so die Seite reloaden damit der Server nachsieht...Sowas löst man mit AJAX:
http://de.wikipedia.org/wiki/Ajax_%28Programmierung%29

Damit kann der Webserver den Inhalt der Seite im Browser ändern ohne dass die Seite neu geladen werden muss.

WeiserDruide
30.06.2011, 22:19
Danke für den Tipp. Werde ich auf jeden Fall nutzen.