[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
BOUNCE rtl@rtlinux.org: Approval required: (fwd)
- To: rtl@rtlinux.org
- Subject: BOUNCE rtl@rtlinux.org: Approval required: (fwd)
- From: Der Herr Hofrat <der.herr@hofr.at>
- Date: Mon, 9 Jul 2001 22:40:46 +0200 (CEST)
>From owner-rtl Mon Jul 9 07:28:45 2001
Received: from ns.bourges.univ-orleans.fr (ns.bourges.univ-orleans.fr [193.49.93.2])
by hq.fsmlabs.com (8.11.2/8.11.2) with ESMTP id f69DSiT05715
for <rtl@fsmlabs.com>; Mon, 9 Jul 2001 07:28:44 -0600
Received: from bourges.univ-orleans.fr
(Mozart.bourges.univ-orleans.fr [195.220.186.105])
by ns.bourges.univ-orleans.fr (Netscape Messaging Server 3.62)
with ESMTP id 354 for <rtl@fsmlabs.com>;
Mon, 9 Jul 2001 15:15:46 +0200
Message-ID: <3B49AF62.983A8169@bourges.univ-orleans.fr>
Date: Mon, 09 Jul 2001 15:19:31 +0200
From: "Joseph Canou" <Joseph.Canou@bourges.univ-orleans.fr>
Organization: Laboratoire vision et robotique
X-Mailer: Mozilla 4.07 [fr] (WinNT; I)
MIME-Version: 1.0
To: rtl@fsmlabs.com
Subject: Re: [rtl]
References: <5.0.2.1.0.20010804231619.009e6430@pop3.norton.antivirus> <5.0.2.1.0.20010807230102.00a1e550@pop3.norton.antivirus>
Content-Type: multipart/mixed; boundary="------------1586514AD41760420915BC0D"
Il s'agit d'un message multivolet au format MIME.
--------------1586514AD41760420915BC0D
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
hello
here is a part of code i use for read data from a laser sensor through a
serial port.
it is a rtmodule code
i just use inb and outb function to read and write on the serial port
init_laser_linux.c is a code to read and write the serial port but not in a
rtmodule
i hope it can help you...
=?iso-8859-1?Q?Jo=E3o?= Coimbra a ecrit:
> Ola!
>
> Se for possivel disponibilizar o codigo exemplo, agradecia
>
> Joao Coimbra
>
> At 14:57 06-07-2001 +0200, you wrote:
> >Ola!...
> >
> >Podes perfeitamente ler o sonnar pela porta serie se o sonnar
> >disponibilizar uma ligacao serie!... Tenho estado a trabalhar num sistema
> >GPS ligado a porta serie e que e lido em Linux, as informacoes sao depois
> >passadas para o modulo RTLinux atraves de uma fifo, se quiseres mais
> >informacoes ou o codigo exemplo diz!
> >
> >Sergio Rui Silva
> >
> >FEUP
> >
> >On Sat, 4 Aug 2001, [iso-8859-1] Joao Coimbra wrote:
> >
> > > Hi all how can I read a sonnar through a serial port (rs-232
> > > communication)? There is some example to help me?
> > > Thank you !!!
> > >
> > > -- [rtl] ---
> > > To unsubscribe:
> > > echo "unsubscribe rtl" | mail majordomo@rtlinux.org OR
> > > echo "unsubscribe rtl <Your_email>" | mail majordomo@rtlinux.org
> > > --
> > > For more information on Real-Time Linux see:
> > > http://www.rtlinux.org/
> > >
> >
> >-- [rtl] ---
> >To unsubscribe:
> >echo "unsubscribe rtl" | mail majordomo@rtlinux.org OR
> >echo "unsubscribe rtl <Your_email>" | mail majordomo@rtlinux.org
> >--
> >For more information on Real-Time Linux see:
> >http://www.rtlinux.org/
>
> ----- End of forwarded message from owner-rtl@fsmlabs.com -----
> -- [rtl] ---
> To unsubscribe:
> echo "unsubscribe rtl" | mail majordomo@rtlinux.org OR
> echo "unsubscribe rtl <Your_email>" | mail majordomo@rtlinux.org
> --
> For more information on Real-Time Linux see:
> http://www.rtlinux.org/
--------------1586514AD41760420915BC0D
Content-Type: application/x-unknown-content-type-h_auto_file; name="def_moxa.h"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="def_moxa.h"
DQoNCiNpZm5kZWYgXzE2YzU1Ml9oDQojZGVmaW5lIF8xNmM1NTJfaA0KDQoNCi8qIFRZUEVT
IERFIENBUlRFUyAqLw0KDQojZGVmaW5lIFJTMjMyCQkJCTANCiNkZWZpbmUgUlM0ODUgICAg
ICAgICAgIDENCg0KDQovKiBBRFJFU1NFUyBERSBCQVNFICovDQoNCiNkZWZpbmUgQ09NMSAw
eDAzRjgNCiNkZWZpbmUgQ09NMiAweDAyRjgNCiNkZWZpbmUgQ09NMyAweDAzRTgNCiNkZWZp
bmUgQ09NNCAweDAyRTgNCg0KI2RlZmluZSBSSFIgMA0KI2RlZmluZSBUSFIgMA0KI2RlZmlu
ZSBJRVIgMQ0KI2RlZmluZSBGQ1IgMg0KI2RlZmluZSBJU1IgMg0KI2RlZmluZSBMQ1IgMw0K
I2RlZmluZSBNQ1IgNA0KI2RlZmluZSBMU1IgNQ0KI2RlZmluZSBNU1IgNg0KI2RlZmluZSBT
UFIgNw0KI2RlZmluZSBETEwgMA0KI2RlZmluZSBETE0gMQ0KDQoNCi8qIExBUkdFVVIgREVT
IERPTk5FRVMgKi8NCg0KI2RlZmluZSBCSVRfNSAgICAgICAgICAgMA0KI2RlZmluZSBCSVRf
NiAgICAgICAgICAgMQ0KI2RlZmluZSBCSVRfNyAgICAgICAgICAgMg0KI2RlZmluZSBCSVRf
OCAgICAgICAgICAgMw0KDQovKiBDT05UUk9MRSBERSBQQVJJVEUgKi8NCg0KI2RlZmluZSBQ
X0FVQ1VORQkJCTANCiNkZWZpbmUgUF9JTVBBSVJFCQkJMQ0KI2RlZmluZSBQX1BBSVJFCQkJ
Mw0KI2RlZmluZSBQX0hBVVRFICAgICAgICAgNQ0KI2RlZmluZSBQX0JBU1NFICAgICAgICAg
Nw0KDQovKiBWSVRFU1NFIERFIFRSQU5TTUlTU0lPTiAqLw0KLyoNCiNkZWZpbmUgQjUwICAg
ICAgICAgICAgIDIzMDQgICAgICAgICAgIC8qcG9ydCBzZXJpZSBzdGFuZGFyZCAqLw0KI2Rl
ZmluZSBCNzUgICAgICAgICAgICAgMTUzNg0KI2RlZmluZSBCMTEwICAgICAgICAgICAgMTA0
Nw0KI2RlZmluZSBCMTMzXzUJCQkJODU3DQojZGVmaW5lIEIxNTAJCQkJNzY4DQojZGVmaW5l
IEIzMDAJCQkJMzg0DQojZGVmaW5lIEI2MDAJCQkJMTkyDQojZGVmaW5lIEIxMjAwICAgICAg
ICAgICA5Ng0KI2RlZmluZSBCMTgwMCAgICAgICAgICAgNjQNCiNkZWZpbmUgQjIwMDAJCQkJ
NTgNCiNkZWZpbmUgQjI0MDAgICAgICAgICAgIDQ4DQojZGVmaW5lIEIzNjAwCQkJCTMyDQoj
ZGVmaW5lIEI0ODAwICAgICAgICAgICAyNA0KI2RlZmluZSBCNzIwMAkJCQkxNg0KI2RlZmlu
ZSBCOTYwMCAgICAgICAgICAgMTINCiNkZWZpbmUgQjE5MjAwICAgICAgICAgIDYNCiNkZWZp
bmUgQjM4NDAwICAgICAgICAgIDMNCiNkZWZpbmUgQjU2MDAwCQkJCQkyDQojZGVmaW5lIEJt
YXgJCQkJCQkxDQoqLw0KI2RlZmluZSBCOTYwMHIgICAgICAgICAgNTIgCQkJLy8gciA9IGNh
cnRlUENNQ0lBIFEgNTAwSw0KI2RlZmluZSBCMTkyMDByICAgICAgICAgMjYNCiNkZWZpbmUg
QjI1MGtyICAgICAgICAgIDINCiNkZWZpbmUgQjUwMGtyCQkJCQkxDQoNCiNkZWZpbmUgQjk2
MDBhICAgICAgICAgMTA0IAkJCS8vIGEgPSBjYXJ0ZU1PWEEgUSAxNk1Ieg0KI2RlZmluZSBC
MTkyMDBhICAgICAgICAgNTINCiNkZWZpbmUgQjI1MGthICAgICAgICAgIDQNCiNkZWZpbmUg
QjUwMGthCQkJCQkyDQoNCg0KDQoNCg0KDQovL3ZvaWQgaW5pdF8xNjU1MihXT1JELFdPUkQp
Ow0KLy9pbnQgZW52b2llX2ZhaXQodm9pZCk7DQovL2ludCBkb25uZWVfcHJldGUodm9pZCk7
DQoNCi8qIGRlZmluaXRpb24gZGUgdHlwZXMgKi8NCg0KI2RlZmluZSBCWVRFCSAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhcg0KI2RlZmluZSBXT1JEICAgCSAgICAgICAgICAgICAg
dW5zaWduZWQgaW50DQojZGVmaW5lIExXT1JEICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcNCg0KDQojZW5kaWY=
--------------1586514AD41760420915BC0D
Content-Type: text/plain; charset=us-ascii; name="intr_robosense.c"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="intr_robosense.c"
/************************ acquisition donnees laesr sur com1 par interruption *************************/
#include <rtl_sync.h>
#include <rtl_core.h>
#include <rtl.h>
#include <asm/io.h>
#include <time.h>
#include <pthread.h>
#include <rtl_fifo.h>
#include <rtl_sched.h>
#include "def_moxa.h"
#define adresse_base_com1 COM1
WORD dll_com1 = adresse_base_com1 + DLL;
WORD dlm_com1 = adresse_base_com1 + DLM;
WORD ier_com1 = adresse_base_com1 + IER;
WORD lcr_com1 = adresse_base_com1 + LCR;
hrtime_t debut_com1;
int i_com1=0, j_com1=0;
int passage_com1=0;
unsigned int somme_scan=0;
int resultat[4];
unsigned char crc_calcule,scan[12];
unsigned int handler_com1(void)
{ unsigned char temp;
unsigned int nouveau_debut=1;
int test_rtf;
hrtime_t temps_com1, tampon_temps_com1;
double temps;
outb(0x00,ier_com1); /* instruction necessaire avec la moxa */
temp = inb(adresse_base_com1);
if(temp==0x0D)
{ somme_scan=somme_scan-scan[11];
crc_calcule=256-(somme_scan%256);
if ( crc_calcule==scan[11])
{ resultat[0]=(scan[3]*256+scan[4])-(scan[2]*256);
resultat[1]=(scan[6]*256+scan[7])-(scan[5]*256);
resultat[2]=scan[8]*256+scan[9];
resultat[3]=scan[10];
i_com1=0;
somme_scan=0;
crc_calcule=0;
tampon_temps_com1=clock_gethrtime(CLOCK_REALTIME);
temps_com1=tampon_temps_com1-debut_com1;
temps=(double)(temps_com1/1000000);
debut_com1=clock_gethrtime(CLOCK_REALTIME);
rtl_printf("\n robosense %ld",(long int)temps);
// rtl_printf("\n position : X= %d Y= %d TETA= %d confiance= %d\n",resultat[0],resultat[1],resultat[2],resultat[3]);
}
else
{ i_com1=0;
somme_scan=0;
crc_calcule=0;
}
}
else
{ if(temp==0xF2)
{ if(scan[i_com1-1]==0x1B)
{ i_com1--;
scan[i_com1]=0x0D;
i_com1++;
somme_scan=somme_scan+scan[i_com1-1];
}
else
{
scan[i_com1]=temp;
i_com1++;
somme_scan=somme_scan+scan[i_com1-1];
}
}
else
{ if( (temp==0xE4 && scan[i_com1-1]!=0x1B) || (temp!=0xE4) )
{
scan[i_com1]=temp;
i_com1++;
somme_scan=somme_scan+scan[i_com1-1];
}
}
}
outb(0x01,ier_com1); /* instruction necessaire avec la moxa */
rtl_hard_enable_irq(4);
return 0;
}
int init_module(void)
{
int Erreur = 0;
BYTE i,tampon;
rtl_irqstate_t f_com1;
int test_irq=0;
/* Nettoyage du port */
for (i=0;i<=6;i++)
inb(adresse_base_com1);
/*initialisation de la carte */
outb(0x00,ier_com1); /* disable l'IT reception */
/* Initialisation de la vitesse de communication */
outb(0x80,lcr_com1); /* LCR.7 = 1 */
outb((0x02 & 255),dll_com1); /* partie basse */ /* 0x02 = 56700 BPS \ */
outb((0x02 >> 8),dlm_com1); /* partie haute */
/* Initialisation de la largeur du caractere, du bit de stop
et de la parite */
outb(( BIT_8 | (0 << 2) | (P_AUCUNE << 3) ),lcr_com1 );
outb(0x02,adresse_base_com1 +2); // Raz FIFO
outb(0x01,adresse_base_com1 +2); // val. FIFO mode DMA
outb(0x01,ier_com1); /* enable l'IT reception */
inb(adresse_base_com1); /* On vide RXD */
inb(adresse_base_com1);
debut_com1=clock_gethrtime(CLOCK_REALTIME);
rtl_no_interrupts(f_com1);
rtl_request_irq(4,handler_com1);
rtl_printf("\n test test_request_irq %d",test_irq);
rtl_hard_enable_irq(4);
rtl_restore_interrupts(f_com1);
return 0;
}
void cleanup_module(void)
{
rtl_free_irq(4);
}
--------------1586514AD41760420915BC0D
Content-Type: text/plain; charset=iso-8859-1; name="Makefile.txt"
Content-Transfer-Encoding: 8bit
Content-Disposition: inline; filename="Makefile.txt"
include ../../rtl.mk
intr_robosense.o: intr_robosense.c
$(CC) ${INCLUDE} ${CFLAGS} -c intr_robosense.c -o intr_robosense.o
all: intr_robosense.o
@echo "insertion des rtl_modules"
(cd ../../; scripts/insrtl)
@echo "lancage du real-time tasks module"
@insmod intr_robosense.o
robosense: intr_robosense.o
@echo "lancage du real-time tasks module"
@insmod intr_robosense.o
clean:
rmmod intr_robosense
(cd ../../; scripts/rmrtl)
clean_r:
rmmod intr_robosense
--------------1586514AD41760420915BC0D
Content-Type: text/plain; charset=us-ascii; name="init_laser_linux.c"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="init_laser_linux.c"
#include <stdio.h>
#include <asm/io.h>
#include "init_carte_linux.h"
void init_16552(WORD adresse_base,WORD vitesse)
{
int Erreur = 0;
BYTE i,tampon;
WORD dll = adresse_base + DLL;
WORD dlm = adresse_base + DLM;
WORD ier = adresse_base + IER;
WORD lcr = adresse_base + LCR;
/* Nettoyage du port */
for (i=0;i<=6;i++)
inb(adresse_base);
/* Initialisation de la vitesse de communication */
outb(0x80,lcr); /* LCR.7 = 1 */
outb((vitesse & 255),dll); /* partie basse */
outb((vitesse >> 8),dlm); /* partie haute */
/* Initialisation de la largeur du caractere, du bit de stop
et de la parite */
outb(( BIT_8
| (0 << 2)
| (P_AUCUNE << 3)
),lcr );
outb(0X00,adresse_base+MCR); /* pas de signaux de controle */
outb(0x02,adresse_base +2); // Raz FIFO
outb(0x01,adresse_base +2); // val. FIFO mode DMA
// outb(adresse_base +2,0x09); // val. FIFO mode DMA
// outb(adresse_base +2,0x49); // FIFO =16
outb(0x00,ier); /* IT reception */
inb(adresse_base); /* On vide RXD */
inb(adresse_base);
}
int envoie_fait(void)
{ unsigned char lecture;
lecture=inb(COM3+LSR);
if( (lecture&0x40)!=0 )
return(1);
else
return(0);
}
int donnee_prete(void)
{ unsigned char lecture;
lecture=inb(COM3+LSR);
if( (lecture&0x01)==1)
return(1);
else
return(0);
}
void lecture(unsigned char char_lu)
{ while(donnee_prete() !=1) ;
char_lu=inb(COM3) ;
}
void ecriture(unsigned char char_envoi)
{ while(envoie_fait() !=1);
outb(COM3,char_envoi);
}
--------------1586514AD41760420915BC0D--
----- End of forwarded message from owner-rtl@fsmlabs.com -----