[configuration의 이해]
port를 open한 후 설정하는 방법은 두 가지가 있다.
1. 모든 세팅을 한 번에 read/write 하는 방법.
2. 각각 세팅을 port에 직접 하는 방법.
1번의 경우, config를 거쳐서 한다고 생각하면 쉽고, 2번은 임시 config에 세팅한 후 free되는 방식이다.
/* Create a different configuration to have ready for use. */
printf("Creating new config for 9600 7E2, XON/XOFF flow control.\n");
struct sp_port_config *other_config;
check(sp_new_config(&other_config));
check(sp_set_config_baudrate(other_config, 9600));
check(sp_set_config_bits(other_config, 7));
check(sp_set_config_parity(other_config, SP_PARITY_EVEN));
check(sp_set_config_stopbits(other_config, 2));
check(sp_set_config_flowcontrol(other_config, SP_FLOWCONTROL_XONXOFF));
1번 방식. 이렇게 한다고 세팅이 되는 게 아니다. 한 번에 세팅하기 위해 config에 준비만 해놓을 뿐이다.
/* We can apply the new config to the port in one call. */
printf("Applying new configuration.\n");
check(sp_set_config(port, other_config));
가장 중요한 건 sp_set_config() 함수이다. 이 함수가 실질적으로 세팅을 해주는 부분이다.
/* let's set some initial settings directly on the port.
*
* You should always configure all settings before using a port.
* There are no "default" settings applied by libserialport.
* When you open a port it has the defaults from the OS or driver,
* or the settings left over by the last program to use it. */
printf("Setting port to 115200 8N1, no flow control.\n");
check(sp_set_baudrate(port, 115200));
check(sp_set_bits(port, 8));
check(sp_set_parity(port, SP_PARITY_NONE));
check(sp_set_stopbits(port, 1));
check(sp_set_flowcontrol(port, SP_FLOWCONTROL_NONE));
2번 방식. 1번과의 다른 점은?
중간에 config라는 게 빠졌다. 이렇게 하면 config에 모았다가 한 번에 세팅하는 게 아니라 directly 바로 세팅하는 것이다.
**출처. sigrok 홈페이지: https://sigrok.org/api/libserialport/unstable/a00045.html
'etc.' 카테고리의 다른 글
SSH keygen으로 패스워드 없이 git 사용하기(Bitbucket/github) (0) | 2021.01.31 |
---|---|
LNK2001 링크 에러 해결 방법 (0) | 2021.01.11 |
The breakpoint will not currently be hit 에러 해결방법 (0) | 2020.11.16 |
Sourcetrail 사용하기 - 소스파일 전체 flow 그래프 보기 (feat. Visual Studio) (0) | 2020.11.13 |
[OpenGL 3] 그림이 왼쪽 아래에만 그려질 때 해결 방법 / viewport 위치 이상할 때 (0) | 2020.11.09 |