시리얼 디바이스 (GSM 모뎀)를 열고 가상 터미널을 생성하는 어플리케이션이 있습니다. 직렬 장치에서 데이터를 필터링하고 의사 터미널을 통해 보내려고하므로 다른 프로세스에서 간단한 '원시'직렬 회선처럼 읽을 수 있습니다.
ptFd
- 의사 터미널 FileDescriptor에
devFd
-가상 터미널과 시리얼 디바이스 사이의 기묘한 문자 대체
내가 사용 FileDescriptor에 직렬 장치 posix_openpt(O_RDWR | O_NOCTTY)
, 의사 단자와 시리얼 라인에 대한 사용자 정의 설정에 대한 많은 grantpt(ptFd)
, unlockpt(ptFd)
. 첫 번째 시도를 위해 여기에 게시하지는 않겠지 만 누군가이 문제를 해결하는 데 도움이된다면 수행 할 것입니다.
읽기 devFd : 내 문제는 다음과
056405c0020001009e59
읽기 ptFd :
5e45645e45c05e425e405e415e409e59
읽기 devFd :
056405c0020001009e59
읽기 ptFd :
5e45645e45c05e425e405e415e409e59
내가 쓰고 있어요 바이트 의사 장치에있는 장치에서 가져온 바이트 :
,05 5e42
에 5e41
02 변경 5e40
01 변경 5e45
00 변경을 변경하지만 모든 바이트 (> = 16 진수) 헥사 0부터 시작되지는 잘 전달된다.
그리고 우선 ... 가상 터미널에 쓰고 똑같은 프로세스에서 읽으면 그냥 방금 쓴 바이트를 반영해서는 안됩니다. 맞습니까?
나는이 터미널에 익숙하지 않지만 터미널을 열면 ptsname 함수로 슬레이브의 이름을 얻는다고 상상한다. 다른 프로세스에서 그 이름을 열 수 있습니다 (예 :/dev/pts/3). 그 시점에서 '스트림'으로 작동합니다.
아마도 내가 틀렸지 만 간단한 설명을 해 주시겠습니까? 미리 감사드립니다.
'cfmakeraw' 함수는 내 목표를 달성하는 데 도움이되었지만 그 대답은 나를 이끌어 준다. :) thanks –