#include <stdio.h>
#include <unistd.h>
#include <termios.h>
#include <ctype.h>
#define QUIT_CHAR 0x04 // Ctrl+D --> quit
struct termios CookedTermIos; // for cooked mode
struct termios RawTermIos; // for raw mode
int main(void)
{
char c;
// save present terminal setting
tcgetattr(STDIN_FILENO, &CookedTermIos);
// Create raw mode terminal setting
RawTermIos = CookedTermIos;
cfmakeraw(&RawTermIos);
// Set
tcsetattr(STDIN_FILENO, 0, &RawTermIos);
while((c = getchar()) != QUIT_CHAR )
{
if(isprint(c)){
printf("you push key: ");
putchar(c);
putchar('\n');
}else{
printf("control key <%02X> \n" , c);
if(c == '\n') fputs("\r\n", stdout);
}
}
tcsetattr(STDIN_FILENO, 0, &CookedTermIos);
putchar('\n');
return 0;
}
Tuesday, March 31, 2009
Rawmode Serial port programming
Monday, March 30, 2009
集積回路
Friday, March 27, 2009
Linux Serial port programming
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <stdio.h>
#include <strings.h>
#include <stdlib.h>
#include <unistd.h>
#define BAUDRATE B9600
#define MODEMDEVICE "/dev/ttyS0"
#define _POXSIX_SOURCE 1
#define FALSE 0
#define TRUE 1
volatile int STOP=FALSE;
int main()
{
int fd, c, res;
struct termios oldtio, newtio;
char buf[255];
//fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NDELAY);
//fd = open(MODEMDEVICE, O_RDWR | O_NDELAY);
fd = open(MODEMDEVICE, O_RDWR );
if(fd < 0){
perror("Cannot open device");
exit(-1);
}
tcgetattr(fd, &oldtio);
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR;
newtio.c_oflag = 0;
newtio.c_lflag = 0;
newtio.c_cc[VTIME] = 0;
newtio.c_cc[VMIN] = 5;
tcflush(fd, TCIFLUSH);
tcsetattr(fd, TCSANOW, &newtio);
while(STOP == FALSE){
res = read(fd, buf, 255);
buf[res] = '\0';
printf("%s -> %d\n", buf, res);
if(buf[0] == 'z') STOP=TRUE;
}
tcsetattr(fd, TCSANOW, &oldtio);
return 0;
}
Thursday, March 26, 2009
とりあえずメモ
Armadillo300にてCFにdebianをインストールし、エラーもなく起動することがで
きましたが、VGAからログインする事ができずに困っています。
きましたが、VGAからログインする事ができずに困っています。
【症状】
・CFのdebian起動でVGAからログインプロンプトが出ない
起動メッセージは出力されているがログインプロンプトは出力されない
シリアル接続の方では接続可能。
設定状況は
hermitでは
hermit> setenv noinitrd root=/dev/hda2 console=tty1
video=ns9750fb:CRT-VGA,16bpp,enable
にてテキスト通りtty1に設定済み、VGAもenable状態です。
よくわかっていないのでシリアル接続のコンソールが ttyAM0の様でしたので
hermitでttyAM1を試してみたのですがNGでした。。。
どなたかアドバイス頂ければ幸いです
よろしくお願いします
=================
--と申します。
/etc/inittabをviで編集
1:2345:respawn:/sbin/getty 38400 tty1 ←この行のコメントをはずす
これでいけると思います。
================
1: console=tty
2: video=ns9750fb:enable,CRT-SVGA
Subscribe to:
Posts (Atom)