기금넷 공식사이트 - 주식 지식 - 영웅 여러분, 데이터를 수신하는 직렬 포트를 확인하기 위해 Linux에서 프로그램을 작성했습니다. 직렬 포트를 여러 번 읽어야 한다는 것을 알았습니다.
영웅 여러분, 데이터를 수신하는 직렬 포트를 확인하기 위해 Linux에서 프로그램을 작성했습니다. 직렬 포트를 여러 번 읽어야 한다는 것을 알았습니다.
우선, 기본 직렬 포트 파일 캐싱 방법은 버퍼링이 없습니다. 둘째, 데이터를 보낼 때 직렬 포트가 연속적이지 않습니다.
예를 들어 직렬 포트는 0x62, 0x77을 제공해야 합니다. 그런 다음 먼저 0x62를 보낸 다음 0x77을 보냅니다. 그리고 그가 0x62를 보낸 직후에 읽으면 0x62만 얻게 되고 0x77을 다시 읽어야 합니다.
한번에 읽으시려면 두 가지 방법이 있습니다.
1: 직렬 포트를 직접 읽는 함수를 작성하고 그 안에서 read를 호출하세요.
예:
inttipc_read_socket( int sockfd, char * buf, int len )
{
int count = 0; //매번 읽는 바이트 수
int pos = 0 //합계 ** * 읽기 바이트 수
pos = 0;
do {
count = read(sockfd, &buf[pos], len - pos); p>
//printf("tipc_read_socket:count[%d]\n", count);
if( 0 > count )
{
if( EINTR == errno )
continue;
//비 블록으로 설정하면 처음으로 모든 데이터를 읽은 후 두 번째 결과는 다음과 같습니다. -1.
return( pos );
}
if( 0 == count ) break; /* 아무것도 남지 않았습니다!
pos += count;
} while( len > pos );
return( pos );}
2: 입력 출력을 설정합니다. 속성.
struct termios newtio;
bzero( &newtio, sizeof( newtio ) )
newtio.c_cc[VTIME] = ***;
newtio.c_cc[VMIN] = ***;
tcsetattr(fd,TCSANOW,&newtio);
여기에는 VTIME 및 VMIN이 있습니다. 독서를 기다리는 시간이다.
설정한 후, 예를 들어 0x62를 읽으면 설정한 시간 동안 대기하게 되며, 이 시간 동안 0x77이 오면 0x62와 0x77을 함께 반환하게 됩니다. 이 시간은 전송 속도와 관련이 있으며 특정 전송 속도에서 두 개의 연속 바이트 사이의 최대 간격으로 설정되어야 합니다.
- 관련 기사
- 대학 입시 감독관은 해당 학생에게 시험이 끝난 후 문제에 답하라는 알림을 주었음에도 불구하고 이를 신고한 사실을 발견했습니다.
- 푸저우 의료보험 관리 센터 상담 핫라인
- 신주 매입 요건은 무엇인가요?
- 린시레이 프로필_린시레이 웨이보_린시레이 b 사진
- 허페이 싱푸 거리에서 보행자 거리까지
- 대만 감독 차이밍량을 소개해주세요.
- 왜 전력 배급이 필요한가요?
- 2006년 Qiao Huang Rong의 영화평론
- 보존된 동영상 하이라이트
- 우신은 귀까지 오는 짧은 머리로 꼬마 햅번으로 변신했습니다. 연예계에서 가장 아름다운 '햅번 메이크업'을 가진 사람은 누구인가요?