下面的所有代碼均可用。我的設備響應,C,7是重置。當我第二次運行它時,它不響應。如果我手動關閉設備,然後再次運行該腳本,它將起作用。但是,如果我按下按鈕第二次運行腳本,則不會。C++串行端口僅在使用寫入時才響應
RS232:57600,8,N,1
任何想法?有沒有更多的信息需要解決這個問題?
*另外,當我得到這個工作,我將不得不使用read()函數來獲取設備響應。有誰知道我需要使用正確的格式,基於下面的代碼?對不起,我是C++的新手......我更像一個PHP傢伙。
*我也不知道,如果1024是對的,但它似乎使工作呃...
#include <termios.h>
int fd;
struct termios options;
fd=open("/dev/tty.KeySerial1", O_RDWR | O_NOCTTY | O_NDELAY);
fcntl(fd, F_SETFL, 0);
tcgetattr(fd,&options);
options.c_ispeed=57600;
options.c_ospeed=57600;
options.c_cflag |= (CLOCAL | CREAD);
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
options.c_cflag &= ~CSTOPB;
options.c_lflag &= ~ECHO;
options.c_oflag &= ~ECHO;
options.c_oflag &= ~OPOST;
options.c_cflag |= CS8;
options.c_cflag |= CRTSCTS;
options.c_cc[VMIN] = 0;
options.c_cc[VTIME] =10;
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&options);
write(fd, "C,7\r\n", 1024);
close(fd);
輝煌!這工作!這一小小的改變會讓我整天(或更多)弄清楚。 非常感謝您! 有關我的read()函數格式的任何想法? :) – Pfeffer 2009-10-22 18:56:07