etc.

Sigrok libserialport library 사용 시 port configuration 2가지 방법

공대 아로마 2020. 12. 2. 14:38

[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

 

libserialport: Configuration

Setting and querying serial port parameters. More... enum sp_return sp_new_config (struct sp_port_config **config_ptr)  Allocate a port configuration structure. More...   void sp_free_config (struct sp_port_config *config)  Free a port configuration s

sigrok.org