Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
6 years ago.
Ethernet connection Ublox c027
Hi
I want to establish a n ethernet connection between my PC and my Ublox C027. I don't want to use the CELLULAR_NETWORK.
Could you please help me by providing any example code about this.
My code is
- include "mbed.h"
- include "rtos.h"
- include "EthernetInterface.h"
- include<string> #include "lwip-interface/EthernetInterface.h"
Serial pc(USBTX, USBRX); between the mbed and the PC.
Time protocol implementation : Address: time.nist.gov UDPPort: 37
typedef struct { uint32_t secs; Transmit Time-stamp seconds. }ntp_packet;
const int PORT = 4466;
static const char* mbedIP = "10.5.255.99"; IP static const char* mbedMask = "255.255.248.0"; Mask static const char* mbedGateway = "10.5.248.1"; Gateway
static const char* recvIP = "10.5.248.2";
Creating Ethernet object EthernetInterface eth;
void transmitter(){
Buffer for output messages const char out_buffer[] = "very important data";
address of destination ip address and port SocketAddress td_addr(recvIP, PORT); UDPSocket td_sock(ð);
Loop to send data to Socket address "td_sock" while(true) { int ret = td_sock.sendto(td_addr, &out_buffer, sizeof(out_buffer));
Thread::wait(500); } }
int main() {
pc.baud(9600); Thread Transmitt;
Transmitt.start(transmitter);
eth.set_network(mbedIP, mbedMask, mbedGateway); my device address
printf("UDP Socket example\n"); eth.init(); DHCP if (ethernet.connect() != 0) { printf("UDP Error\n"); return -1; }
receive.start(receiver);
while(true) {
Thread::wait(10000);
} }
Am using a c# UDP server on my laptop.
Your help will really be appreciated
Thank you
Nada.
1 Answer
6 years ago.
Hello Nada,
See below an example which could help:
#include "mbed.h"
#include "EthernetInterface.h"
#include <string>
Serial pc(USBTX, USBRX); //Serial connection with the PC.
static const char* mbedIP = "10.5.248.99"; //Static IP address of this mbed board
static const char* mbedMask = "255.255.248.0"; //Mask
static const char* mbedGateway = "10.5.248.1"; //Gateway
static const char* recvIP = "10.5.248.2"; //IP address of the C# UDP server running on the PC
const int PORT = 4466; //Port used for UDP communication
EthernetInterface eth; //Ethernet interface
UDPSocket* td_sock; //Pointer to mbed's UDP Socket
SocketAddress td_addr(recvIP, PORT); //Socket address of destination UDP server
Thread transmit; //Thread for transmission
Thread receive; //Thread for reception
void transmitter()
{
//Buffer for outgoing messages
const char out_buffer[] = "very important data";
//Loop to send data to Socket address "td_sock"
while (true) {
if (td_sock->sendto(td_addr, out_buffer, sizeof(out_buffer)) < 0) {
printf("Error sending data.\r\n");
}
ThisThread::sleep_for(500);
}
}
void receiver()
{
//Buffer for incoming messages
char in_buffer[256];
while (true) {
if (int n = td_sock->recvfrom (&td_addr, in_buffer, sizeof (in_buffer)) > 0) {
pc.printf("%d bytes received:\r\n", n);
for (int i = 0; i < n; i++) {
pc.printf("0x%.2X ", in_buffer[i]);
}
pc.printf("\r\n");
}
}
}
int main()
{
pc.baud(9600);
eth.set_network(mbedIP, mbedMask, mbedGateway);
printf("UDP Socket example\n");
if (eth.connect() != 0) {
printf("Unable to connect to the Ethernet.\r\n");
return -1;
}
// Show local address
const char* ip = eth.get_ip_address();
printf("Local IP address: %s\n", ip ? ip : "No IP");
td_sock = new UDPSocket; //Create a UDP socket object
if (td_sock->open(ð) != 0) {
printf("Cannot open the UDP socket.\r\n");
return -1;
}
receive.start(receiver); //Start receiver task in the receive thread
transmit.start(transmitter); //Start transmitter task in the transmit thread
while (true) { }
}
For more info have a look at https://os.mbed.com/docs/mbed-os/v5.14/apis/udpsocket.html.
Hello Nada,
Try to click on the
Editbutton located in the top-right corner and then enclose your source code with<<code>>and<</code>>tags, each on separate line, like:After that, click on the
posted by Zoltan Hudak 26 Oct 2019Save Questionbutton and it will be displayed as formatted code. Then it can be easily copy & pasted by others into the online compiler for testing.