How to programm TTY devices under UNIX platform?


 
Thread Tools Search this Thread
Top Forums Programming How to programm TTY devices under UNIX platform?
# 1  
Old 12-20-2001
Question How to programm TTY devices under UNIX platform?

Dear Export,

I want to begin an serial-communication application codes associated with TTY devices. But I don't know what key settings should be concerned after opening a TTY device file under UNIX plarform(SunOS 5.7)?

Could you give me some adivce? Thanks!

Last edited by WayneYang; 12-20-2001 at 04:51 AM..
# 2  
Old 12-20-2001
Check your system's man pages on...

termio (and/or termios)
ioctl
read
write
# 3  
Old 12-20-2001
Thank you, rwb1959,

Actually I have a look at man pages of TERMIO. But you know, it is simple that some contents mentioned is still not clear to me. the most puzzling question is How to set the value of BAUD to a opened TTY file? And what is the detailed reason?

Looking forward to you reply!
# 4  
Old 12-21-2001
There is the old unix way to do this and the new posix way. I wrote a program to put the tty into raw mode using both methods so I could compare them. You should probably understand both techniques since there is a lot of old code out there. But I think the posix revision is a win, so I would suggest going the posix route with new code. I would add the following man pages to your list:

tcattribute(3c)
cfspeed(3C)
tccontrol(3C)

You should use the routines in cfspeed(3C) to change the baud rate.

Here is the sample program that I wrote:
Code:
/*   #define OLD_TERMIO  */

#ifdef __STDC__
#define PROTOTYPICAL
#endif
#ifdef __cplusplus
#define PROTOTYPICAL
#endif

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#ifdef OLD_TERMIO
#include <termio.h>
#else
#include <termios.h>
#endif

#ifdef PROTOTYPICAL
int main(int argc, char *argv[])
#else
main(argc,argv)
char *argv[];
#endif

{
#ifdef OLD_TERMIO
        struct termio orig,now;
#else
        struct termios orig,now;
#endif
        int c, i, rc, done;
        setvbuf(stdout, NULL, _IONBF ,0);

#ifdef OLD_TERMIO
        ioctl(0, TCGETA, (char *) &orig);
#else
        tcgetattr(0, &orig);
#endif
        now=orig;
        now.c_lflag &= ~(ISIG|ICANON|ECHO);
        now.c_cc[VMIN]=1;
        now.c_cc[VTIME]=2;
#ifdef OLD_TERMIO
        ioctl(0,TCSETA, (char *) &now);
#else
        tcsetattr(0, TCSANOW, &now);
#endif
        done=0;
        while(!done) {
                printf("hit a key: ");
                c=getchar();
                printf(" got a  %03X \n", c);
                done = c=='q';
        }
#ifdef OLD_TERMIO
        ioctl(0,TCSETA, (char *) &orig);
#else
        tcsetattr(0, TCSANOW, &orig);
#endif
        exit(0);
}


Last edited by Perderabo; 01-16-2005 at 02:48 PM.. Reason: remove html which is no longer supported
# 5  
Old 12-21-2001
Perderabo is most correct. The Posix way
is certainly cleaner in general.
Sometimes old guys like me have
a hard time letting go Smilie
# 6  
Old 12-24-2001
Thank you! Perderabo.

I would like to try your dedication.

Maybe you know, I work now on the SunOS 5.7 platform. Surely I have looked up the TERMIOS library. But I could not find that thress functions listed in your mail as follows:

tcattribute(3c)
cfspeed(3C)
tccontrol(3C)

I know, the SunOS 5.7 should obey to the POSIX standard. But where these functions?

Another one, would you like tell me what do you mean by the 'win' in your mail? I guess if it is "what is needed'?

Thanks again!
# 7  
Old 12-24-2001
Sun does a fairly reasonable job of complying with posix. There is no standard for exactly where to put information in the man pages. On Sun, start with the termio man page and look at all the man pages it references in the "SEE ALSO" section.


From dictionary.com:
Quote:
win [MIT; now common everywhere] 1. vi. To succeed. A program wins if no unexpected conditions arise, or (especially) if it sufficiently robust to take exceptions in stride. 2. n. Success, or a specific instance thereof. A pleasing outcome. "So it turned out I could use a lexer generator instead of hand-coding my own pattern recognizer. What a win!" Emphatic forms: `moby win', `super win', `hyper-win' (often used interjectively as a reply). For some reason `suitable win' is also common at MIT, usually in reference to a satisfactory solution to a problem. Oppose lose; see also big win, which isn't quite just an intensification of `win'.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Python: Redirecting to tty and reading from tty

In bash, you can do something like this: #!/bin/bash echo -n "What is your name? " > /dev/tty read thename < /dev/tty How can I do the same in python? I have a python script that has the following content: #!/usr/bin/python2.7 import getpass import sys import telnetlib import... (2 Replies)
Discussion started by: SkySmart
2 Replies

2. Shell Programming and Scripting

Request to checkVenn diagram issue solve by Unix programm

Hello Any Unix programm can help me to solve thsi issue: I have 2 venn digrams please checke the attached file for pictures of venn diagram for eg red is A yellow is B and green is C..Please see attached file for Venn diagrams In one ..... I have 3 data set A , B and C Venn diagram... (0 Replies)
Discussion started by: manigrover
0 Replies

3. Shell Programming and Scripting

unix shell programm(need urgent Help)

Hi guys, i am new to shell can u please explain how to get those two outputs in temp1 i have i/p like abcd edk lkg jkl loop i need o/p abcd ********* edk********** lkg *********** jkl *********** loop************ need o/p abcd *************** (2 Replies)
Discussion started by: ashokkrishna063
2 Replies

4. UNIX for Dummies Questions & Answers

What are pseudo-tty devices? Is my /etc/securetty file contains any?

Hi , I have searched wiki for pseudo tty devices but it was very complex for me to understand. Can any one help me understanding concept behind pseudo-tty in layman language? According to security manual of our org /etc/securetty files shouldn't have any pseudo tty devices. i understand ttyX... (5 Replies)
Discussion started by: pinga123
5 Replies

5. UNIX for Advanced & Expert Users

How can I remotely take unix/linux tty control!?

Hello everyone!. I am wondering if it is possible to take control of a tty session???!!!. For example: imagine you are running a command in a unix server that will take 12 hours to compleate... now, imagine you are at your home and you want to check how the command is performing or if errors... (2 Replies)
Discussion started by: dragonov7
2 Replies

6. AIX

Difference between tty and console devices ?

Hi, What is the diference between these two ? thanks Vilius (3 Replies)
Discussion started by: vilius
3 Replies

7. Shell Programming and Scripting

How to embeded programm within programm

Hi, How to embeded programme within perl programme. Shankarao (2 Replies)
Discussion started by: shankarao
2 Replies

8. Programming

how do i run am encrpyrtic programm on unix

how do i run am encrpyrtic programm on unix, (4 Replies)
Discussion started by: ghoz
4 Replies

9. UNIX for Advanced & Expert Users

Porting of Windows written unix scripts to unix platform

Can anybody help me in finding out a solution for the problem below? When we write .unix or .sh files in windows OS and port them to Unix platforms there is a character ^M inserted at the end of each line of the script file. During ftp porting I set the transfer mode as ASCII for the script... (7 Replies)
Discussion started by: tamilselvi
7 Replies

10. UNIX for Dummies Questions & Answers

UNIX problem? Unix programm runs windows 2000 CPU over 100%

Okee problems...!! What is happening: Unix server with some programms, workstations are windows 2000, the workstations work good but when you start a programm on the Unix server the CPU of the workstations go to 100% usage resulting that the system gets very slow. The programm well its running so... (2 Replies)
Discussion started by: zerocool
2 Replies
Login or Register to Ask a Question