#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>
#define SERIAL_PORT "/dev/tty.usbmodemfa1311"
#define BAUDRATE B9600
#define BUFSIZE 256
#define TRUE 1;
#define FALSE 0;
int main(int argc, char* argv[])
{
int fd = open(SERIAL_PORT, O_RDWR);
if (fd == -1) {
perror("Unable to open serial port\n"); return -1;
}
// 既存のシリアルの設定を取得
struct termios old_options;
int ret;
ret = tcgetattr(fd, &old_options);
/*
// 新しいシリアルの設定を適用
memset(&new_options, 0, sizeof(new_options));
new_options.c_cflag = CS8 | CLOCAL | CREAD;
new_options.c_cc[VTIME] = 0;
new_options.c_lflag = ICANON;
new_options.c_iflag = IGNPAR | ICRNL;
cfsetispeed(&new_options, BAUDRATE);
cfsetospeed(&new_options, BAUDRATE);
tcsetattr(fd, TCSANOW, &new_options);
// 通信処理
int count;
volatile int STOP = 0;
char readbuf[BUFSIZE];
printf("start\n");
while(STOP == 0){
memset(readbuf, 0, sizeof(readbuf));
count = (int)read(fd, &readbuf, BUFSIZE);
if(count < 0){
fprintf(stdout, "end\n");
STOP = 1;
}else{
fprintf(stdout, "recv:%s(%d)\n", readbuf, count);
}
}
*/
// シリアルの設定を既存のものに戻して終了
ret = tcsetattr(fd, TCSANOW, &old_options);
close(fd);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL3N0YXQuaD4KI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgojaW5jbHVkZSA8ZmNudGwuaD4KI2luY2x1ZGUgPHRlcm1pb3MuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgoKI2RlZmluZSBTRVJJQUxfUE9SVCAiL2Rldi90dHkudXNibW9kZW1mYTEzMTEiCiNkZWZpbmUgQkFVRFJBVEUgQjk2MDAKI2RlZmluZSBCVUZTSVpFIDI1NgoKI2RlZmluZSBUUlVFIDE7CiNkZWZpbmUgRkFMU0UgMDsKCmludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCnsKICAgIHByaW50ZigicHJvZ3JhbSBzdGFydFxuIik7CiAgICBpbnQgZmQgPSBvcGVuKFNFUklBTF9QT1JULCBPX1JEV1IpOwogICAgcHJpbnRmKCJvcGVuIik7CiAgICBpZiAoZmQgPT0gLTEpIHsKICAgICAgICAKICAgICAgICBwZXJyb3IoIlVuYWJsZSB0byBvcGVuIHNlcmlhbCBwb3J0XG4iKTsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CiAgICAKICAgIHByaW50Zigib3BlbmVkXG4iKTsKICAgIC8vIOaXouWtmOOBruOCt+ODquOCouODq+OBruioreWumuOCkuWPluW+lwogICAgc3RydWN0IHRlcm1pb3Mgb2xkX29wdGlvbnM7CiAgICBpbnQgcmV0OwogICAgcmV0ID0gdGNnZXRhdHRyKGZkLCAmb2xkX29wdGlvbnMpOwogICAgCiAgICAvKgogICAgCiAgICAvLyDmlrDjgZfjgYTjgrfjg6rjgqLjg6vjga7oqK3lrprjgpLpgannlKgKICAgIG1lbXNldCgmbmV3X29wdGlvbnMsIDAsIHNpemVvZihuZXdfb3B0aW9ucykpOwogICAgbmV3X29wdGlvbnMuY19jZmxhZyA9IENTOCB8IENMT0NBTCB8IENSRUFEOwogICAgbmV3X29wdGlvbnMuY19jY1tWVElNRV0gPSAwOwogICAgbmV3X29wdGlvbnMuY19sZmxhZyA9IElDQU5PTjsKICAgIG5ld19vcHRpb25zLmNfaWZsYWcgPSBJR05QQVIgfCBJQ1JOTDsKICAgIGNmc2V0aXNwZWVkKCZuZXdfb3B0aW9ucywgQkFVRFJBVEUpOwogICAgY2ZzZXRvc3BlZWQoJm5ld19vcHRpb25zLCBCQVVEUkFURSk7CiAgICB0Y3NldGF0dHIoZmQsIFRDU0FOT1csICZuZXdfb3B0aW9ucyk7CiAgICAKICAgIC8vIOmAmuS/oeWHpueQhgogICAgaW50IGNvdW50OwogICAgdm9sYXRpbGUgaW50IFNUT1AgPSAwOwogICAgY2hhciByZWFkYnVmW0JVRlNJWkVdOwogICAgcHJpbnRmKCJzdGFydFxuIik7CiAgICB3aGlsZShTVE9QID09IDApewogICAgICAgIG1lbXNldChyZWFkYnVmLCAwLCBzaXplb2YocmVhZGJ1ZikpOwogICAgICAgIGNvdW50ID0gKGludClyZWFkKGZkLCAmcmVhZGJ1ZiwgQlVGU0laRSk7CiAgICAgICAgaWYoY291bnQgPCAwKXsKICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJlbmRcbiIpOwogICAgICAgICAgICBTVE9QID0gMTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJyZWN2OiVzKCVkKVxuIiwgcmVhZGJ1ZiwgY291bnQpOwogICAgICAgIH0KICAgIH0KICAgICAqLwogICAgCiAgICAvLyDjgrfjg6rjgqLjg6vjga7oqK3lrprjgpLml6LlrZjjga7jgoLjga7jgavmiLvjgZfjgabntYLkuoYKICAgIHJldCA9IHRjc2V0YXR0cihmZCwgVENTQU5PVywgJm9sZF9vcHRpb25zKTsKICAgIGNsb3NlKGZkKTsKICAgIAogICAgcHJpbnRmKCJlbmRcbiIpOwogICAgcmV0dXJuIDA7Cn0K