Forum: Mikrocontroller und Digitale Elektronik Barcodescanner in Microcontroller (Atmega 1284) einbinden!


von Kanka (Gast)


Lesenswert?

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

von Kay I. (imperator)


Lesenswert?

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

von Kanka (Gast)


Lesenswert?

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

von Kanka (Gast)


Lesenswert?

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

von BlabLa (Gast)


Lesenswert?

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

von A. K. (ayhan_k21)


Lesenswert?

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
Noch kein Account? Hier anmelden.