Hello,
I work with a programming board (SAM3X8E for the microcontroller) and Atmel Studio 7.
I want to send some data from my computer to my programming board using ethernet TCP/IP.
At least I am able to ping my programming board and to detect when I plug or unplung my ethernet wire. I use the library emac to ping my programming card and the library lwip 1.4.0 to create socket.
This is the code of my programming board :
int main(){ ... //All the initialization bool firstTime = true; struct tcp_pcb *pcb; while(1) { /* To ping the card */ if (emac_dev_read(&gs_emac_dev, (uint8_t *) gs_uc_eth_buffer, sizeof(gs_uc_eth_buffer), &ul_frm_size) == EMAC_OK) { emac_process_eth_packet((uint8_t *) gs_uc_eth_buffer, ul_frm_size); } if(firstTime){ pcb = tcp_new(); tcp_bind(pcb, 192.168.1.40, 5050); pcb = tcp_listen(pcb); printf("state of the socket : %s \r\n", getSocketState(pcb->state)); tcp_accept(pcb, connectionAccepted); // The callback function connectionAccepted just make simple printf to show me that the connection is made firstTime = false; printf("Socket ready \r\n"); } } }
The issue is that when I try to connect thanks to sockets my computer to my programming card I have a time out error...
However when I look with Putty, I have good printf for the creation of my socket :
This is the program from my computer to connect the socket (I am 99% sure that the program is good) :
BAUD_RATE = int(115200) IP_PORT = 5050 arduino_IP_address = 192.168.1.40 try: if client is None: client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client .settimeout(4) client .setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) client .connect((arduino_IP_address, IP_PORT)) except OSError as err: print("lol", err) return ...
When I launch this code after the programming card printf that the socket it's ready I have this error :
Can you help me ?