Mac で IrDA を使用して Uwatec ダイブ コンピューターと通信するツールを作成しようとしています。私が使用している USB IrDA デバイスは、データの送受信に使用できるシリアル デバイス (/dev/cu.IrDA-IrCOMM0
および) を提供します。/dev/tty.IrDA-IrCOMM0
残念ながら、Mac は IrDA ソケット層を提供していません。
デバイス ドライバーに同梱されているコマンド ライン ツールを使用して、他のデバイスからの IrDA 通信をリッスンおよび受信できることを確認しました。ただし、コマンド ライン ツールでは 9600 ボーで通信していると表示されますが、残りの設定 (ビット、ストップ ビット、パリティ、フロー制御など) は表示されません。
データをリッスンする独自のプログラムを作成しようとしましたが、データを受信できません。その理由は、これらの設定が正しくないためだと思います。では、送信されている 9600 ボーの IrDA 検出パケットをリッスンしようとしているだけだとすると、他にどのような設定を使用する必要があるのでしょうか?
それが役立つ場合は、通信パラメーターを設定するために現在使用しているコードのスニペットを次に示します。これは機能しません。
#define DEVICE "/dev/cu.IrDA-IrCOMM0"
int main(void) {
FILE *device;
struct termios ttystate;
device = fopen(DEVICE, "rw");
//get the terminal state
tcgetattr(fileno(device), &ttystate);
//turn off canonical mode and echo
ttystate.c_lflag &= ~(ICANON | ECHO);
//minimum of number input read.
ttystate.c_cc[VMIN] = 1;
cfsetspeed(&ttystate, B9600); // Set 9600 baud····
ttystate.c_cflag |= (CS8 | // Use 8 bit words
PARENB | // parity enable
PARODD | // odd parity
CCTS_OFLOW | // CTS flow control of output
CRTS_IFLOW);// RTS flow control of input
//set the terminal attributes.
tcsetattr(fileno(device), TCSANOW, &ttystate);
return EXIT_SUCCESS;
}