demo of Murata wifi chip as TCP client.
Dependencies: SNICInterface mbed-rtos mbed
Fork of murataDemo by
Intro
this program demonstrates how to use TCP on the Murata Wifi chip. It will connect to a server and send a message, the server will then send a reply. The reply will be printed out to the terminal on the microcontroller.
Instructions
- Make sure you have both the wifi device and the computer running the server on the same network / wifi router.
- Change the hard coded IP in the microcontroller code to match that of the laptop running the python server.
- Run the python2 script below on the computer
- Have a console hooked up to the microcontroller and watch as messages are sent back and forth between the server (python) and the client (murata).
- Run the microcontroller code on the device.
For ease of use numbers have been appended to the end of the messages being sent back and forth.
Python Server
Please run this python2.7 code on your computer. Make sure to change the IP Address in the microcontroller code to match the IP of your computer.
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('', 7)) s.listen(1) x = 0 while True: conn, addr = s.accept() print 'Connected b'TCP data from server: 'y', addr while True: # receive data from board data = conn.recv(1024) # check received data if not data: break # print received data print("TCP data from microcontroller: '"+data+"'") # send data to board with counter to differentiate messages conn.sendall("HelloFromPython!: "+str(x)+"\n\r") x+=1 # close the port conn.close()
Revision 32:67402fe56150, committed 2015-04-09
- Comitter:
- mbedAustin
- Date:
- Thu Apr 09 22:03:34 2015 +0000
- Parent:
- 31:c42d189364b4
- Commit message:
- Basic TCP Client working with murata wifi chip
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r c42d189364b4 -r 67402fe56150 main.cpp --- a/main.cpp Thu Apr 09 01:28:01 2015 +0000 +++ b/main.cpp Thu Apr 09 22:03:34 2015 +0000 @@ -18,6 +18,7 @@ */ #include "mbed.h" #include "SNIC_WifiInterface.h" +#include "TCPSocketServer.h" Serial pc(USBTX, USBRX); @@ -35,26 +36,8 @@ C_SNIC_WifiInterface wifi( D1, D0, NC, NC, D3 ); -// callback function used by scan() -// this function will be called on every network scanned -void scanCallbackFn(tagSCAN_RESULT_T *scan_result) +int wifiInit() { - printf("\r\n"); - printf("channel = %d \r\n" ,scan_result->channel); - printf("rssi = %d \r\n" ,scan_result->rssi); - printf("security = %d \r\n" ,scan_result->security); - printf("bssid = %x%x%x%x%x%x\r\n",scan_result->bssid[0],scan_result->bssid[1],scan_result->bssid[2],scan_result->bssid[3],scan_result->bssid[4],scan_result->bssid[5]); - printf("network_type = %d \r\n" ,scan_result->network_type); - printf("max_rate = %d \r\n" ,scan_result->max_rate); - printf("ssid = %s \r\n" ,scan_result->ssid); -} - -// main loop -int main() -{ - // for built in debug printouts -// pc.baud( 115200 ); - int check = 0; // Initialize Wi-Fi interface @@ -98,15 +81,6 @@ printf("SetIPConfig successful \r\n"); } - // Get RSSI - signed char temp = 0; - check = wifi.getRssi(&temp); - if(check != 0) { - printf("getRssi failed. \r\n"); - } else { - printf("getRssi success: %d \r\n",temp); - } - // check IP Address char * ip ; ip = wifi.getIPAddress(); @@ -115,36 +89,49 @@ } else { printf("getIP success: %s \r\n",ip); } +} - // get wifi status - tagWIFI_STATUS_T status; - check = wifi.getWifiStatus(&status); - if(check != 0) { - printf("getWifiStatus failed \r\n"); - } else { - // Status 0=WifiOff, 1=No Network, 2=Connected to AP, 3=Started AP mode - printf("getWifiStatus success: status =%d, MAC = %x%x%x%x%x%x, SSID = %s \r\n", - status.status, - status.mac_address[0], status.mac_address[1], - status.mac_address[2], status.mac_address[3], - status.mac_address[4], status.mac_address[5], - status.ssid ); +// +// main loop +// +int main() +{ + + // Initialize Wifi + wifiInit(); + + // TCP Schenanigans! + const char* ECHO_SERVER_ADDRESS = "192.168.11.3"; + const int ECHO_SERVER_PORT = 7; + + // connect to server + TCPSocketConnection socket; + while (socket.connect(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT) < 0) { + printf("Unable to connect to (%s) on port (%d)\n\r", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT); + wait(1); } - // scan for wifi, results will be called in callback function - check = wifi.scan(NULL,NULL,scanCallbackFn); - if(check != 0) { - printf("scan failed! \r\n"); - } else { - printf("Scan Success! \r\n"); + // send messages back and forth as long as we are connected + int x = 0; + while(socket.is_connected()) { + // Setup & send message to server + char message[64] = {}; + sprintf(message,"%s%d","HelloFromMicrocontroller: ",x++); + socket.send_all(message, sizeof(message) - 1); + // Receive & print message from server + char buf[256]; + int n = socket.receive_all(buf, 256); + buf[n] = '\0'; + printf("TCP data from server: '%s'", buf); + + // not needed, here to slow the data down so you can see it whip past. + wait(0.5); } -// if(check != 0){ -// printf(" \r\n"); -// }else{ -// printf(" \r\n"); -// } + socket.close(); + wifi.disconnect(); - wait( 1.0 ); + while(true) {} + }