http://www.linusakesson.net/programming/tty/
use stty set tty to raw mode
http://linux.about.com/od/commands/l/blcmdl1_stty.htm
#!/bin/bash
# Port setting
stty -F /dev/ttyS0 raw speed 1200
# Loop
while [ 1 ];
do
echo 'LOADING...'
READ=`dd if=/dev/ttyS0 count=1`
echo $READ
echo '[PRESS Ctrl + C TO EXIT]'
done
per
http://man7.org/linux/man-pages/man3/termios.3.html
use cfmakeraw() in C program
more example#include <stdio.h>
#include <stdlib.h>
#include <
unistd
.h>
#include <
errno
.h>
#include <
fcntl
.h>
#include
<
termios
.h>
#include <
sys/ioctl
.h>
#include <
sys/stat
.h>
#include <
sys/syslog
.h>
#include
<
sys/types
.h>
#include <sys/un.h>
#define SERIALPORT_IS_CONSOLE main() { struct termios tty; struct termios savetty; speed_t spd; unsigned int sfd; unsigned char buf[80]; int reqlen = 79; int rc; int rdlen; int pau = 0; #ifdef SERIALPORT_IS_CONSOLE sfd = STDIN_FILENO; #else sfd = open("/dev/ttyS1", O_RDWR | O_NOCTTY | O_NONBLOCK); #endif if (sfd < 0) { syslog(LOG_DEBUG, "failed to open: %d, %s", sfd, strerror(errno)); exit (-1); } syslog(LOG_DEBUG, "opened sfd=%d for reading", sfd); rc = tcgetattr(sfd, &tty); if (rc < 0) { syslog(LOG_DEBUG, "failed to get attr: %d, %s", rc, strerror(errno)); exit (-2); } savetty = tty; /* preserve original settings for restoration */ spd = B115200; cfsetospeed(&tty, (speed_t)spd); cfsetispeed(&tty, (speed_t)spd); cfmakeraw(&tty); tty.c_cc[VMIN] = 1; tty.c_cc[VTIME] = 10; tty.c_cflag &= ~CSTOPB; tty.c_cflag &= ~CRTSCTS; /* no HW flow control? */ tty.c_cflag |= CLOCAL | CREAD; rc = tcsetattr(sfd, TCSANOW, &tty); if (rc < 0) { syslog(LOG_DEBUG, "failed to set attr: %d, %s", rc, strerror(errno)); exit (-3); } do { unsigned char *p = buf; rdlen = read(sfd, buf, reqlen); if (rdlen > 0) { if (*p == '\r') pau = 1; syslog(LOG_DEBUG, "read: %d, 0x%x 0x%x 0x%x", \ rdlen, *p, *(p + 1), *(p + 2)); } else { syslog(LOG_DEBUG, "failed to read: %d, %s", rdlen, strerror(errno)); } } while (!pau); tcsetattr(sfd, TCSANOW, &savetty); close(sfd); exit (0); }
http://www.cs.uleth.ca/~holzmann/C/system/ttyraw.c
沒有留言:
張貼留言