From: ZooT aLLures (zoot@farts.com)
Date: Wed Apr 03 2002 - 10:09:03 CEST
>Reply-To: mulinux@sunsite.dk
>Date: Wed, 27 Mar 2002 15:31:11 +0100
> Michele Andreoli <m.andreoli@tin.it> mulinux@sunsite.dk Re: RS232
>On Wed, Mar 27, 2002 at 02:46:27PM +0100, Kautzmann Gerd wrote:
>
>> Are there any resources or programms that could show me how to programm for
>> a RS232 Interface ( not programming a driver, just using a driver ) in 'C'
>> under (mu) LINUX ?
>
>
>The subject is covered in the howto called SerialProgramming or PortIOProgramming.
>
>Anyway, to exchange characters via serial port in Linux is very
>simple to do.
>
>Method 1)
>-----------
>
>It is only matter to open the special device /dev/ttyS0 (COM1)
>or /dev/ttyS1 (COM2):
>
>     int fd;
>     fd = open("/dev/ttyS0",O_RDWR)
>
>Only to program the parallel port is more easy that that
>
>
>You can explore the blocking and not-blocking IO with the parametri O_BLOCK, or
>similar.
>The was a lot of ioctl() able to set parity, echo features, etc.
>
>After that, you read character with read(fd, buffer, n) and write with
>write(fd,buffer,n).
>
>In the mulinux.tgz there is a sources/ directory. You can explore the
>file miterm.c, a standalone application able to talk with modems.
>I think, a good starting point.
>
>Method 2)
>-------------
>
>As alternative, you can load the PERL addon and use perl. Very easy
>to use.
>
>Open the serial line:
>
>     sysopen(fd,"/dev/ttyS0",2);ù
>
>After that, you can write with:
>
>     syswrite(fd,string,length_len);     
>
>and read with:
>
>     sysread(fd, string, n)
>
>
>Both methods do not requires special libraries or special include files,
>so the muLinux environment suffices.
>
>Method 3)
>-----------
>
>A further method, that skip the kernel driver, is to face directly with
>IO ports, memory mapped. This is specially useful for parallel port, because
>doesn't requires synchonization:
>
>     #include <stdio.h>
>     #include <unistd.h>
>     #include <asm/io.h>
>
>As first stage you must gain privilegs with 
>     iopl(3);
>
>After that, you can read a byte from the port with
>     port=0x378  ( parallel port)
>     c=inb(port)
>
>and write a byte with:
>
>     outb(byte,port);
>
>Method 4)
>------------
>You can access the IO port using the /dev/port special device. It is a kernel
>facility. If you read the n-th byte in this special file, you are really
>reading the n-th cell in the IO memory mapped area.
>You can get a byte using the muLinux "poke" command.
>Example:  poke /dev/port 10 read the byte 10.
>
>
>     
>I hope this useful for you.     
>
>Michele
>
>-- 
>I keep trying to locate a meeting of Quantum Physicists. But everytime
>they set a meeting time, the location changes. And vice versa -- Anonymous
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: mulinux-unsubscribe@sunsite.dk
>For additional commands, e-mail: mulinux-help@sunsite.dk
------------------------------------------------------------
Visit the world's greatest site at http://www.farts.com and listen to the fart 
of the day.  Also, get your very own farts.com E-mail account.  FREE!!!!!
---------------------------------------------------------------------
Express yourself with a super cool email address from BigMailBox.com.
Hundreds of choices. It's free!
http://www.bigmailbox.com
---------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: mulinux-unsubscribe@sunsite.dk
For additional commands, e-mail: mulinux-help@sunsite.dk
This archive was generated by hypermail 2.1.6 : Sat Feb 08 2003 - 15:27:21 CET