Hallo zusammen, ich möchte ein Barcodescanner auf mein µC Board (ATMega 1284) mit einem SUB-D9 Stecker einbinden. Es soll folgendes funktionieren: Bedienterminal mit µC Board, Barcodescanner erfasste Information soll über die Schnittstelle an µC Board weiter übertragen werden. Wie kann ich eine schnittstelle (serielle Schnittstelle)zum Board einbinden. Danke schonmal für eure Beiträge. Gruß Kanka
Hallo Kanka, für eine Antwort auf Deine Frage fehlen noch ein paar Informationen über den Scanner ... Was für ein Modell ist es? Welche Schnittstelle hat er (nicht welcher Stecker)? Welches Protokoll nutzt er ... Unabhängig davon verhalten sich viele Scanner wie eine Tastatur oder wie ein serieller ASCII-Generator. Wenn sie einen Bar-Code erkennen, schicken sie diesen als reinen ASCII an ihre Schnittstelle z.b. "11234434534121" als Zeichenfolge. Demnach musst Du also erstmal klären, wie Dein Scanner implementiert ist. Such Dir also mal eine Beschreibung zu dem Gerät. Wenn der Scanner einfach nur Zeichen seriell über RS232 ausgibt, kannst Du Ihn einfach an Deinen Rechner hängen und in einem Terminal beobachten. Wenn das geglückt ist, kannst Du mit Deinem uC daran machen, einen Pegelwandler und eine empfangende und interpretierende Firmware zu entwerfen. Gruß Kay
Hallo Kay, ich werde zuerst die Informationen sammeln (welche Schnittstelle,Scanner Modell, Protokoll etc.), dann werde ich mein Beitrag fortsetzen. Danke nochmal für den Hinweis. Gruß Kanka
Also, Scanner ist ein Standart Hand Scanner, Scanner sendet über RS232 Schnittstelle in Ascii (Zeichenfolge)an den µC. Das funzt erstmal, jetzt aber möchte ich die Daten beispiel 1234 an den LCD (4x20 Matrix) übertragen. 1. Zeichen oben links und die folgenden Zeichen daneben u.s.w. Hoffe das ich mich klar ausgedrückt habe. Gruß Kanka
Hi, also wie du das an deinem 4x20 Zeichen Display ausgibst hängt auch wieder von den Schnittstellen und den Protokollen ab. Am einfachsten ist eine serielle Schnittstelle zu fütter. Also mal wieder das selbe Spiel wie beim Scanner, nur diesmal mit dem Display :-) Also welche Schnittstellen, welches Protokoll und gegebenfalls welche pegel. Gruß BlabLa
Hallo Kay Imperator, danke für deine Hinweise ich bin dadurch weiter!!! Ich habe folgendes Problem siehe Quellcode! DAS PROBLEM BESCHRIEBEN die schleife läuft endlos und wartet auf eine eingabe über uart1=scaner<- das funktioniert auch aber ich möchte, wenn ich einscanne ein "wort" davor packen Z.B. Wort+barcode und an uart0 übergeben. diese eingaben werden aber wie folgt angezeigt z.B. Barcode = 115 ->auf Uart0(Terminal-LAN) erschein folgendes t1t1t5t t wie fange ich das ab?? das ich als ergebnis folgendes habe Wort115 Danke für die unterstützung und hoffe dass jetzt etwas mehr Infos da sind. MFG Kanka /*********************************************************************** ** Title: Feldversuch Author: Kanka DESCRIPTION: This example shows how to use the UART, I2C and LCD library ************************************************************************ */ #include <stdlib.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include "uart_p.h" #include "i2clcd.h" #include "i2cmaster.h" /* define CPU frequency in Mhz here if not defined in Makefile */ #ifndef F_CPU #define F_CPU 14745600UL #endif //Baudrate für UART=Lantronix #define UART_BAUD_RATE 38400 #define UART1_BAUD_RATE 19200 //MAIN int main(void) { i2c_init(); lcd_init(); unsigned char string1[] = "Herzlich Willkommen"; unsigned char string2[] = "LCD Ausgabe funzt "; unsigned char string3[] = "ganz gut "; unsigned char string4[] = "Version 0.000000004"; lcd_printlr(1, 1, string1); //- Print a string lcd_printlr(2, 1, string2); //- Print a string lcd_printlr(3, 5, string3); //- Print a string lcd_printlr(4, 5, string4); //- Print a string unsigned int c; /* * Initialize UART library */ uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); uart1_init( UART_BAUD_SELECT(UART1_BAUD_RATE,F_CPU) ); /* *Scannerwert=c wird über Lan versendet */ sei(); for(;;) { c = uart1_getc(); if ( c & UART_NO_DATA ) { /* * no data available from UART */ } else { for(int i=1; i<=1; i++) { uart_putc('Wort'); } uart_putc((unsigned char)c); } } }
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.