Hallo Leute Ich möchte eine Blackbox mit zwei seriellen Schnittstellen (RS232 mit Xon/Xoff Flowcontrol) bauen. Es müssen Daten mehr oder weniger unverändert vom PC/Mac an das Endgerät (Plotter) durchgeschlauft werden. Es gibt aber auch einige wenige Daten, die vom Plotter an den PC/Mac gesandt werden. (Gerätekennung, Papiergrösse... die der steuernde Compi abfragen kann) Diese HPGL Daten bestehen hauptsächlich aus Koordinaten, die den Plotter in Bewegung setzen. Die Befehle sind relativ kurz und mit einem Semicolon terminiert. Das folgende Beispiel zeigt ein 100mm Quadrat. (Die Auflösung ist meist 0.025mm, kann aber auch 0.0254mm sein. (1/1000 inch) IN;IP0,0,1,1;JA0,1;PU4004.01,4.01;PD4004.01,4004.02;PD4.01,4004.02;PD4.0 1,4.01;PD4004.01,4.01;PU;;JP4404.02;JE; Diese Ascii-Daten werden so zum Plotter gesandt. Die meisten Befehle sind standard HPGL, es können aber auch Herstellerspezifische darunter sein. Einige Befehle (Abfragen) möchte ich abfangen und eine vordefinierte Antwort an den steuernden Compi senden. (z.B. OI oder OH) Die Strings müssen also in einen Buffer, (64 oder 128 bytes sollten reichen) auf einige wenige Befehle geprüft und meist 1:1 weitergesandt werden. Der Einfachheit halber habe ich gedacht, einen Seeduino Mega zu verwenden, weil der 4 UARTs hat. Damit müsste ich die zweite serielle Schnittstelle nicht softwaremässig nachbilden. Kann mich jemand von Euch da etwas anschieben? Ich bin kein komlpetter Newbie, es ist nur schon lange her, dass ich programmiert habe. Tom
Hallo Es gibt bei der Arduiono IDE standardmäßig eine software serial library dabei, das sollte also kein Problem sein. Ich würde dir aber eher zu einem Arduino Nano raten. Der Grund ist das es das selbe kann wie das Uno und billiger ist als das Uno oder Mega. Die Verarbeitung ist eh ziemlich leicht, serial empfangen, durchsuchen, serial senden. Probleme könnts geben wenn beide zugleich senden, aber da weis ich auch nicht weiter.
Ja eben, wenn da Daten verloren gingen, wäre das schlecht. Daher favorisiere ich die Hardware-UART Lösung. Der Preis der Hardware ist sekundär. (10, 30 oder 40 Kröten machen keinen Unterschied, wenn es dafür gescheit funktioniert.) Da das Endgerät im Bereich von 5-10 kEuros liegt, kann der Seelenfrieden etwas teurer erkauft werden. Es kann als teureren Zwischenstecker angeschaut werden... Die Stückzahlen werden auch nicht extrem hoch sein.
Dann einen Arduino Mega 2560 nehmen. Kostet zwar ~50€, hat aber noch 3 Hardware-Serielle frei. Bei den kleineren Arduinos wird die einzige verfügbare Hardware-Serielle an USB durchgereicht. Grüße, FlorenzW
Du redest sicher von einem USB<->seriell Wandler, oder? In deiner Post ist davon allerdings erstmal nicht die Rede... Natürlich kann man eine Software UART auch per Interrupt regeln, da würden bei den überschaubaren Baudraten auch keine Zeichen verloren gehen. Mein kleines Projekt eines Tektronix Tablets an USB mit ATTiny benutzt sowas für die Tablett->USB Daten. http://www.schoeldgen.de/avr/ Aber eine Hardware UART mehr kann ja nicht schaden. Allerdings ist der Arduino in allen seinen Spielarten dafür nicht so super, da du ja zumindest noch einen MAX232 o.ä. unterbringen musst und dafür einen Shield basteln musst. Dann kannst du auch gleich ein kleines komplettes Board basteln. Als Wandler nimmst du dann entweder einen FT232 aufm Board oder einen fertigen USB-> seriell Wandler, dar auch am Mac läuft, das tut ja nun leider nicht jeder. Dann einen der grösseren MAX Chips, z.B. der Max 235 mit 5/5 Tranceivern oder den MAX248 mit 8/8 Tranceivern und einen Mega nach Wunsch. Wenn du dich für den OnBoard FT232 entscheidest, reicht natürlich der Klassiker MAX232 für die Plotterseite.
Hi Warum kein eigenes Board? Da der Seeduino Mega anscheinend keine RS232-Treiber besitzt brauchst du eh zusätzliche Hardware. AVRs mit zwei USARTs gibt es noch andere. Angefangen mit dem ATMega162 über ATMega164/324/644/1284p/pa bis zum relativ neuen ATTiny1634. Speicher für deine Anforderungen haben alle ausreichend. MfG Spess
Zuerst mal vielen Dank für Eure Posts. Meine Schwächen liegen eher beim Softwaredesign als bei der Hardware. Wenn mir da jemand einen kleinen Schubser geben könnte... (Vor 30 Jahren habe ich einen Intel 8251 USART an eine Z80 CPU gehängt und mit 7588 und 7589 die Pegelwandlung von TTL nach RS232 gemacht) Das ist ja heute viel einfacher. (Mit weniger Wire-Wrap Verbindungen ;-) Zur Hardware habe ich auch nochmal etwas rumgeschaut. Etwa hier der uC: http://www.dealextreme.com/p/arduino-mega-2560-atmega2560-module-green-144185?item=4 oder die Pegelwandlung: http://www.dealextreme.com/p/rs232-serial-port-to-ttl-converter-module-w-transmitting-and-receiving-indicator-144192?item=62 Ich glaube kaum, dass ich für dieses Geld einen MAX3232 und einen 9Pol D-Stecker bekomme. (Der MAX3232 kann nebst 5V auch 3.3V) Damit kommt ein Arduino Mega mit 2 Pegelwandlern auf Platinen incl. Steckern auf 35$. Die Lieferzeiten sind z.T. etwas lang hier, aber dafür ist die Lieferung Kostenlos.
Tom Box schrieb: > Zuerst mal vielen Dank für Eure Posts. > > Meine Schwächen liegen eher beim Softwaredesign als bei der Hardware. > Wenn mir da jemand einen kleinen Schubser geben könnte... Das Grundkonzept hast du dir ja schon gegeben. Eingangspuffer in dem Zeichen gesammelt werden bis ein ; kommt. Wird der ; erkannt, lautet die Annahme: Im Puffer steht ein kompletter Befehl. Den Befehl mit allen vordefinierten vergleichen. Ist er in der Liste, dann die vordefinierte Antwort zurücksenden. Ansonsten den Befehl in den Ausgangspuffer zum Gerät schicken. Dinge die vom Gerät kommen, werden direkt an den PC durchgestellt. Spezialität könnte jetzt höchstens noch sein, dass dein Zwischending noch das Handshake berücksichtigen muss. Aber abgesehen davon: so schlimm ist das Programm auch wieder nicht. Ein wenig Übung logeslöst von der eigentlichen Aufgabenstellung könnte allerdings nicht schaden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.