2015/01/11 - [IT / Development/WIZnet] - W5500-EVB를 이용한 Chat Client 구현해 보자 - 1
2015/01/12 - [IT / Development/WIZnet] - W5500-EVB를 이용한 Chat Client 구현해 보자 - 2
2015/01/26 - [IT / Development/WIZnet] - W5500-EVB를 이용한 Chat Client 구현해 보자 - 3
2015/01/26 - [IT / Development/WIZnet] - W5500-EVB를 이용한 Chat Client 구현해 보자 - 4
2015/03/19 - [IT / Development/WIZnet] - W5500-EVB를 이용한 Chat Client 구현해 보자 - 5
지난번에는 UART 데이터가 씹히는 현상을 볼수 있었다. 이번 시간에는 그 부분을 해결해 보려고 한다.
우선 결과부터 확인해 보자.
- TCP ==>> UART
- UART ==>> TCP
아래 코드를 보면서 설명해 보겠다.
#define SR_RX_BUF_SIZE 5 #define TCP_TX_BUF_SIZE 5 uint8_t sr_rx_data_[SR_RX_BUF_SIZE]; //UART RX Buffer uint16_t sr_rx_size = 0; //UART RX Buffer Size uint8_t tcp_tx_data[TCP_TX_BUF_SIZE]; //TCP TX Buffer uint16_t tcp_tx_size = 0; //TCP TX Buffer Size
위 코드를 보면 tcp_tx_data라는 배열을 새로 선언했다. 이전에는 UART 수신 버퍼를 그대로 TCP로 전송을 했지만, 이번에는 UART 수신 버퍼를 TCP 송신 버퍼에 저장을 하고 TCP 송신버퍼에 저장된 데이터를 TCP로 전송 하도록 하기 위함이다.
//UART interrupt function void UART_IRQHandler(void) { sr_rx_data[sr_rx_size]=Chip_UART_ReadByte(LPC_USART); putchar(sr_rx_data[sr_rx_size]); if(sr_rx_data < SR_RX_BUF_SIZE-1) sr_rx_buf_status = 0; else sr_rx_buf_status = 1; sr_rx_size++; }
UART 인터터럽트 부분은 수정사항이 없다. UART 데이터를 TCP로 전송하는 부분을 수정 해봤다.
// Serial => Ethernet int SerialToEther(uint8_t sn) { if(sr_rx_buf_status == 0){ if(sr_rx_data[sr_rx_size-1]==CR ){ memcpy(tcp_tx_data, sr_rx_data, sr_rx_size); tcp_tx_size = sr_rx_size; sr_rx_size = 0; send(sn, tcp_tx_data, tcp_tx_size); tcp_tx_size = 0; } } else if(sr_rx_buf_status == 1){ memcpy(tcp_tx_data, sr_rx_data, sr_rx_size); tcp_tx_size = sr_rx_size; sr_rx_size = 0; send(sn, tcp_tx_data, tcp_tx_size); tcp_tx_size = 0; } return 0 ; }
우선 기본적은 것은 저번에 했던것과 거의 동일하다.TCP로 전송하기전에 UART수신 버퍼를 TCP 전송 버퍼에 저장을 하고 TCP 전송 버퍼를 TCP로 전송 하는 것을 볼수 있다. TCP로 데이터를 전송하는 중간에 UART 데이터가 수신되어도 UART 수신 버퍼가 사용되고 있지 않기 때문에 정상적으로 UART 데이터를 수신할수 있다.
'IT / Development > WIZnet & Network ' 카테고리의 다른 글
PopCARD : Pop Machine Cash Card (0) | 2015.03.04 |
---|---|
Introducing Arduino ( Arduino Uno with ethernet shield and rotation sensor ) (0) | 2015.02.04 |
W5500-EVB를 이용한 Chat Client 구현해 보자 - 3 (0) | 2015.01.26 |
W5500-EVB를 이용한 Chat Client 구현해 보자 - 2 (0) | 2015.01.12 |
W5500-EVB를 이용한 Chat Client 구현해 보자 - 1 (0) | 2015.01.11 |