안녕하세요.
시리얼통신중에 해결할 문제가 있어서 이렇게 질문드립니다.

데이타를 받는중에 0x7f 이상의 값이 들어오면 그냥 리턴을 해버립니다.

셋팅값이 문제가 있는것 같은데요. 리눅스 책을 보고 이리저리 셋팅값을 바꿔봐도 결과는 마찬가지입니다.

아래 소스를 보시면  셋팅은 non-canonical 모드로 설정하였습니다.


    int     RxCount=0;
    char    Buff[500];

    handle = open( "/dev/ttyS00", O_RDWR | O_NOCTTY );
    if( handle < 0 ) { printf( "Serial Open Fail [/dev/ttyS00]rn "  );exit(0);}
    

    newtio.c_cflag = B9600 | CS8 | CLOCAL | CREAD ;
    newtio.c_iflag = IGNPAR ;
    newtio.c_oflag = 0;

    //set input mode (non-canonical, no echo,.....)
    newtio.c_lflag = 0;
    
    newtio.c_cc[VTIME] = 50;    
    newtio.c_cc[VMIN]  =0;      

    tcsetattr( handle, TCSANOW, &newtio );
    

    RxCount = read( handle, Buff, 429);         // 429byte 값을 받는다.
    printf("rxcount :%dn",RxCount);
    for(i=0;i<429;i++)printf("%02x",Buff[i]);
    printf("n:");
    
  
대충 이렇게 작성했다면 들어오는 데이타 중에 0x7f 이상의 값(0x94)가 들어오면 429 값을 다 받기 전에  빠져나옵니다.(Rxconut 값으로 확인)
그래서 newtio 에 있는 c_cflag,c_iflag,c_oflag 등등의  세팅값에 문제가 있는건지 아니면 아예 0x7f 이상의 값 다시말해 아스키값이 아닌것은 그냥 리턴되는지
알고 싶습니다.
저 뿐만 아니라  시리얼로 데이타 통신을 하는 어플리케이션에서 아스키값만 받는건 아닐진데  아마도
제가 모르는 부분이 있는것 같습니다.