mikrocontroller.net

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


Autor: Kanka (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kay I. (imperator)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kanka (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kanka (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: BlabLa (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. K. (ayhan_k21)
Datum:

Bewertung
0 lesenswert
nicht 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);


        }
     }

}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.