アキラのITメモ:シリアルポートの通信
IT関係、技術関係のメモです。
シリアルポートの通信
Windows上にてシリアルポートを使った通信をしようと思い、JAVAやPerl、Cなどいろいろな言語で試してみたのですがなかなかうまくいかず、結局cygwin+C言語で書きました。以下はその時のメモです。ここのプログラムを参考にしました。
単純にシリアルポート(COM1)から読み込んできたバイナリデータを出力するのはこんな感じに書けばOKです。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <termios.h>
#include <time.h>
void main() {
int fd;
struct termios tio;
// open and set port
fd = open("/dev/COM1", O_RDWR);
memset(&tio, 0, sizeof(tio));
tio.c_cflag = CS8 | CLOCAL | CREAD;
tio.c_cc[VTIME] = 100;
cfsetispeed(&tio, B57600);
cfsetospeed(&tio, B57600);
tcsetattr(fd, TCSANOW, &tio);
// read from serial port
while(1){
int i;
int len;
unsigned char buffer[256];
if ((len = read(fd, buffer, 256)) < 0) {
exit(0);
}
for(i=0; i<len; i++){
printf("%02X ",buffer[i]);
}
}
}
カテゴリ:
C言語
投稿日: 2007年04月06日 20:36
Trackback URL: http://akira-site.net/cgi-bin/mt/mt-tb.cgi/464
Trackback URL: http://akira-site.net/cgi-bin/mt/mt-tb.cgi/464
コメント
コメントを投稿
カテゴリ「C言語」内の記事
|
シリアルポートの通信 |
乱数の初期化とtime関数 |
ヘッダファイルをコンパイル |
/bin/shを実行するコード |
バッファオーバーフローの確認 |
if文を代用する |
変なswitch文 |
サイト内検索
カテゴリ
- Linux
- Linux Tips [14]
- Linux ソフトウェア [3]
- Web技術
- (X)HTML/CSS [4]
- JavaScript [1]
- MovableType [7]
- その他 [3]
- 各種API [3]
- 各種ツール [4]
- Windows
- Win Tips [3]
- Win ソフトウェア [6]
- コネタ [7]
- プログラミング
- 機器 [4]