我正在尝试编写一个使用 IrDA 与 Uwatec 潜水电脑通信的工具……在 Mac 上。我正在使用的 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;
}