无法在OS X 10.8上打开/dev/tty.usbmodemxxxxx的套接字

时间:2013-07-25 05:17:27

标签: c macos usb arduino

我有一块定制的Arduino硬件,通过USB连接到我的电脑。我写了一个简单的测试套接字程序来简单地发送测试单并接收响应。这适用于Windows和Linux,但不适用于OSX。

如果我打开像ZTerm或屏幕这样的终端应用程序,我可以在Mac上正常连接,只是不使用/dev/tty.usbmodemxxxx通过套接字。我可以通过/dev/cu.usbmodemxxxx连接它似乎在程序中正确发送,但从未接收任何数据。我已经验证硬件没有通过/ dev / cu socket接收数据。

代码是相当直接的c代码。

socket = open("/dev/tty.usbmodemxxxx", O_RDWR | O_NOCTTY | O_ASYNC);
if (socket < 0) { // error here };

// -- edit -- added baud rate change.
struct termios term;
memset(&term, 0, sizeof(struct termios));
cfmakeraw(&term);

cfsetspeed(&term, COM_SPD);
term.c_cflag = CREAD | CLOCAL;
term.c_cflag |= CS8;

term.c_cc[VMIN] = 0;
term.c_cc[VTIME] = 10;

ioctl(socket, TIOCSETA, &term);

// -- /edit --
char str[1024] = { 0x30, 0x08, ... };
write(socket, str, 8);

sleep(2);

char data[64] = { 0x0 };
int len = 0;
ioctl(socket, data, &len);

read(socket, data, len);

// output data.

为简单起见,我省略了所有错误处理和调试代码。

我有什么理由不通过tty连接吗?还有为什么我能够通过铜线连接却从未收到任何来自硬件的响应?

此外,如果我使用Z-Term连接到设备,然后在程序中使用/ dev / cu发送响应,硬件将接收数据并且ZTerm会收到正确的响应,但程序不会收到任何内容。< / p>

OS X上需要做些什么特别的事情来连接到tty设备吗?

0 个答案:

没有答案