0
Libc 함수 tcgetattr에서 반환 한 termios 바이트를 C#의 클래스에 매핑하려고합니다.termios 바이트를 구조체에 매핑하는 방법은 무엇입니까?
다음#define NCCS 12
typedef unsigned cc_t;
typedef unsigned speed_t;
typedef unsigned tcflag_t;
struct termios {
cc_t c_cc[NCCS];
tcflag_t c_cflag;
tcflag_t c_iflag;
tcflag_t c_lflag;
tcflag_t c_oflag;
speed_t c_ispeed;
speed_t c_ospeed;
};
직렬 포트의 termios의 바이트이다 C에서의 termios의
같이 정의된다. 이들 사이의 유일한 차이점의 libc cfsetspeed는 함께 B38400 세트 (플랫폼 라즈베리 PI가 Raspbian 스트레치를 실행) 대 보레이트 B9600이다Byte# B38400 B9600
0 0 0
1 5 5
2 0 0
3 0 0
4 5 5
5 0 0
6 0 0
7 0 0
8 191 189
9 12 12
10 0 0
11 0 0
12 59 59
13 138 138
14 0 0
15 0 0
16 0 0
17 3 3
18 28 28
19 127 127
20 21 21
21 4 4
22 0 0
23 0 1
24 0 0
25 17 17
26 19 19
27 26 26
28 0 0
29 18 18
30 15 15
31 23 23
32 22 22
B9600 및 B38400의 유일한 차이점은 인덱스와 바이트 = 8 B9600 = 0xd 및 B38400 = 0xf이므로, 인덱스 = 8 인 바이트에 대한 비트 패턴은 의미가있다. 189의 마지막 바이트는 0xd이고 191의 마지막 바이트는 0xf이므로 올바르게 표시됩니다. 하지만, 어떻게 정확하게 구조체에 바이트를 매핑하는 방법을 이해하는 방법을 모르겠어요. 속도가 변경되면 c_ispeed 및 c_ospeed의 바이트가 변경되지 않아야합니다.
누구든지 C 구조체에 바이트 인덱스를 매핑하는 방법을 설명 할 수 있습니까?