首頁>Club>
12
回覆列表
  • 1 # 嘻嘻哈哈真的好

    int con=atoi(portstr); unsigned char Port_file_name[30]; int fd0,rc; struct termios ts0; switch (con) { //選項O_NOCTTY 表示不能把本串列埠當成控制終端,否則使用者的鍵盤輸入資訊將影響程式的執行 //O_NDELAY表示開啟串列埠的時候,程式並不關心另一端的串列埠是否在使用中 case

    1: fd0=open("/dev/ttyM0",O_RDWR | O_NOCTTY | O_NDELAY); break; case

    2: fd0=open("/dev/ttyM1",O_RDWR | O_NOCTTY | O_NDELAY); break; case

    3: fd0=open("/dev/ttyM2",O_RDWR | O_NOCTTY | O_NDELAY); break; case

    4: fd0=open("/dev/ttyM3",O_RDWR | O_NOCTTY | O_NDELAY); break; case

    5: fd0=open("/dev/ttyM4",O_RDWR | O_NOCTTY | O_NDELAY); break; case

    6: fd0=open("/dev/ttyM5",O_RDWR | O_NOCTTY | O_NDELAY); break; case

    7: fd0=open("/dev/ttyM6",O_RDWR | O_NOCTTY | O_NDELAY); break; case

    8: fd0=open("/dev/ttyM7",O_RDWR | O_NOCTTY | O_NDELAY); break; default : fd0=open("/dev/ttyM0",O_RDWR | O_NOCTTY | O_NDELAY); break; } tcgetattr(fd0,&ts0); bzero(&ts0,sizeof(struct termios)); switch (gytype) { case 1:{ts0.c_cflag |= B300 | CS7 | CLOCAL | CREAD | PARENB ; ts0.c_cflag &= ~PARODD; // 轉換為偶效驗 ts0.c_iflag |= INPCK; // Disnable parity checking break; } case 2:{ts0.c_cflag |= B1200 | CS8 | CLOCAL | CREAD | PARENB ; ts0.c_cflag &= ~PARODD; // 轉換為偶效驗 ts0.c_iflag |= INPCK; // Disnable parity checking break; } case 3:{ ts0.c_cflag |= B9600 | CS8 | CLOCAL | CREAD ; ts0.c_cflag &= ~PARENB; // Clear parity enable ts0.c_iflag &= ~INPCK; // Enable parity checking break; } case 4:{ts0.c_cflag |= B9600 | CS8 | CLOCAL | CREAD | PARENB ; ts0.c_cflag &= ~PARODD; // 轉換為偶效驗 ts0.c_iflag |= INPCK; // Disnable parity checking break; } } ts0.c_lflag &= ~ECHO; ts0.c_lflag &= ~ECHONL; ts0.c_iflag &= ~IXOFF; ts0.c_iflag &= ~IXON; ts0.c_cflag &= ~CSIZE; switch (gytype) { case 1:{ts0.c_cflag |= CS7 ; break;} case 2:{ts0.c_cflag |= CS8 ; break;} case 3:{ts0.c_cflag |= CS8 ; break;} case 4:{ts0.c_cflag |= CS8 ; break;} } ts0.c_lflag &= ~ICANON; //如果設定使能規範輸入,否則使用原始資料(本文使用) ts0.c_oflag &= ~ONLCR; //如果設定將NL轉換成CR-NL後輸出 ts0.c_iflag &= ~INLCR; //如果設定將接收到的NL(換行)轉換成CR(回車)。 ts0.c_cc[VMIN] = 0; //最少可讀資料 ts0.c_cc[VTIME] = 0; //等待資料時間(10秒的倍數) ts0.c_cflag &= ~CSTOPB; //如果設定則使用兩個停止位 ,如果取消則使用一個停止位 ts0.c_iflag |= IGNBRK; //如果設定則忽略接收到的break訊號 ts0.c_lflag &= ~IEXTEN; //如果設定則啟用實現自定義的輸入處理 ts0.c_lflag |= NOFLSH; //如果設定則禁止產生SIGINT,SIGQUIT和SIGSUSP訊號時重新整理輸入和輸出佇列 switch (gytype) { case 1:{rc = cfsetospeed(&ts0,B300);break; } case 2:{rc = cfsetospeed(&ts0,B1200);break; } case 3:{rc = cfsetospeed(&ts0,B9600);break; } case 4:{rc = cfsetospeed(&ts0,B9600);break; } } rc = tcsetattr(fd0,TCSAFLUSH,&ts0); return fd0;

  • 中秋節和大豐收的關聯?
  • 發動機排氣管冒機油怎麼回事?