delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2001/02/11/09:11:40

From: Dietmar DOT Segbert AT T-ONLINE DOT de (Dietmar Segbert)
Newsgroups: comp.os.msdos.djgpp
Subject: termios.h and DOS
Date: 11 Feb 2001 14:43:00 +0100
Organization: T-Online
Lines: 119
Message-ID: <7vfRrxyrJVB@0256597511.t-online.de>
Mime-Version: 1.0
X-Trace: news.t-online.com 981899546 07 7128 68UKYKSS9-QCT 010211 13:52:26
X-Complaints-To: abuse AT t-online DOT com
X-Sender: 0256597511-0001 AT t-dialin DOT net
X-Newsreader: CrossPoint v3.12d R/A22565
X-Mailer: NOS-BOX 2.05
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Hello,

i have some questions to termios.h.

In a program, i will compile, i found some variables called IUCLC, XCASE, 
IXANY, B57600, B115200.
In the headerfile of termios.h i did noht find some 
definitions.

In the web i found some definitions for termios(4) for unix:


  c_iflag   Describes the basic terminal input control.  The possible input
            modes are:

...
            IUCLC     Maps uppercase to lowercase on input. If set, a
                      received uppercase, alphabetic character is translated
                      into the corresponding lowercase character.

...
            IXANY     Enables any character to restart output. If set, any
                      input character restarts output that was suspended.


  c_lflag   Controls various terminal functions.  In addition to the basic
            modes, this field uses the following mask name symbols:

...
            XCASE     Enables canonical uppercase and lowercase presentation.
                      If set along with the ICANON function, an uppercase
                      letter (or the uppercase letter translated to lowercase
                      by the IUCLC input mode) is accepted on input by
                      preceding it with a \ (backslash) character.  The out-
                      put is then preceded by a backslash character.

...
                      The ICANON, XCASE, ECHO, ECHOE, ECHOK, ECHONL, and
                      NOFLSH special input functions are possible only if the
                      ISIG function is set. These functions can be disabled
                      individually by changing the value of the control char-
                      acter to an unlikely or impossible value (for example,
                      0377 octal or 0xFF)

  c_ispeed  Specifies the input baud rate.

            The default input baud rate is 9600.  However, the input baud
            rate can be specified to be one of the following:

...
            B57600    57600 baud.

            B115200   115200 baud.



In another File i found this definitions:

#define IXANY           0x0800  /* allow any key to continue ouptut */
#define B57600          0x0100  /* 57600 baud */
#define B115200         0x0200  /* 115200 baud */


The procedure in my program looks like this:

 *                                                                     *
 * open  - prepare serial port for use, and send initialization        *
 *         packets to camera.                                          *
 *                                                                     *
 *---------------------------------------------------------------------*/
int qm100_open(const char *devname)
{
  int serialdev;
  qm100_packet_block packet;
  char cmd[]=QM100_INIT;


  serialdev = open(devname, O_RDWR | O_NOCTTY);
  if (serialdev <= 0) 
     {
     char tmsg[100];
     sprintf(tmsg, "Unable to open serial device %s", devname);
     qm100_error(serialdev, tmsg, errno);
     }
  
/* This does nicht do */
  if (tcgetattr(serialdev, &oldt) < 0) 
     qm100_error(serialdev, "Unable to get serial device attributes", errno);

  memcpy((char *)&newt,(char *)&oldt, sizeof(struct termios));
  newt.c_cflag |= CS8 | HUPCL;
  newt.c_iflag &= ~(IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK|ISTRIP|INLCR);
/* next line ist original, second line from me */
/*  newt.c_iflag &= ~(IGNCR|ICRNL|IXON|IXOFF|IXANY|IMAXBEL); */
  newt.c_iflag &= ~(IGNCR|ICRNL|IXON|IXOFF|IMAXBEL);
  
  newt.c_oflag &= ~(OPOST);
  newt.c_lflag &= ~(ISIG|ICANON);
  newt.c_cc[VMIN] = 1;
  newt.c_cc[VTIME] = 0;

  cfsetospeed(&newt, B9600);
  cfsetispeed(&newt, B9600);

  if (tcsetattr(serialdev, TCSANOW, &newt) < 0)
     qm100_error(serialdev, "Unable to set serial device attributes", errno);
  qm100_transmit(serialdev, cmd, sizeof(cmd), &packet, "Open");
  qm100_setSpeed(serialdev, qm100_transmitSpeed);
  return serialdev;
}


Does it give a termios.h / termios.c source, who includes the above 
describet functions IXANY, IUCLC and so on?

Thanks 

Dietmar

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019