我的问题是write();函数,它总是以-1返回值。打开我的端口的代码如下:
curByte = 0;
numBytes = 0;
bool blocking = false;
//Settings structure old and new
struct termios newtio;
fd = open(port, O_RDWR | O_NOCTTY | (blocking ? 0 : O_NDELAY));
if (fd < 0)
{
return PORT_ERROR;
}
bzero(&newtio, sizeof(newtio));
if (cfsetispeed(&newtio, BDR_ESP3) != 0)
return PORT_ERROR;
if (cfsetospeed(&newtio, BDR_ESP3) != 0)
return PORT_ERROR;
newtio.c_cflag &= ~PARENB;
newtio.c_cflag &= ~CSTOPB;
newtio.c_cflag &= ~CSIZE;
newtio.c_cflag |= CS8;
newtio.c_cflag &= ~CRTSCTS;
//Hardware control of port
newtio.c_cc[VTIME] = blocking ? 1 : 0; // Read-timout 100ms when blocking
newtio.c_cc[VMIN] = 0;
tcflush(fd, TCIFLUSH);
//Acquire new port settings
if (tcsetattr(fd, TCSANOW, &newtio) != 0)
puts(strerror(errno));
return OK;
我可以毫无问题地打开端口,但是一旦我尝试使用以下方法将字节写入端口:
{
int res;
if (fd == -1)
return PORT_ERROR;
res = write(fd, &u8TxByte, 1);
if (res == -1){
printf("Error writing to port - %s(%d).\n", strerror(errno), errno);
}
if (res == 1)
printf("Writing to port succeeded!");
return OK;
return ERROR;
}
我不断收到错误输出:
写入端口时出错 - 资源暂时不可用(35)。
它让我疯了!因为相同的代码实际上适用于Linux,所以OSX的区别在哪里?资源暂时不可用是什么意思?
我希望我能很好地描述我的问题,有人可以帮助我! 谢谢!
答案 0 :(得分:4)
使用相应的/dev/cu.xxx
设备,您的程序可能会正常工作。
/dev/tty.xxx
适用于OS / X上的传入连接,仅在断言DCD时才有效。