4 months ago.  This question has been closed. Reason: Off Topic

A two way serial communication

Hi, I've created a simple two way serial to get AT commands from pc and send them back to a Quectel GSM modem. First I tried to use standard serial from mbed but somehow it stuck (or maybe overflowed) after receiving data from the modem. I used BufferedSerial library which works fine but it lacks some functions like `scanf` or `gets` so I need to read chars by using `getc` function.

#include "mbed.h"
#include "BufferedSerial.h"

DigitalOut modem_pwr(PD_3);
DigitalOut modem_sw(PB_12);

Serial pc(PA_9, PA_10); // tx, rx
BufferedSerial modem(PC_6, PC_7);

void strInput(char str[], int nchars)
    int i = 0;
    int ch;
    while ((ch = modem.getc()) != '\n' && ch != EOF)
        if (i < nchars)
            str[i++] = ch;
    str[i] = '\0';

void two_way_serial()
    char temp[200];
    if (pc.readable())
        pc.scanf("%[^\n]", temp);
        if (modem.writeable())
            modem.printf("%s\r\n", temp);
            memset(temp, 0, sizeof(temp));
    while (modem.readable())
        strInput(temp, sizeof(temp) - 1);
        pc.printf("%s\n", temp);
        memset(temp, 0, sizeof(temp));

int main()
    relay = 1;
    modem_pwr = 1;
    modem_sw = 1;
    modem_sw = 0;
    pc.printf("Setup Complete!\n");
    while (1)

I have two problems with this code: 1. when I send a command I receive my answer plus all previous commands and answers. 2. after sending some commands I get a huge amount of previous data in the terminal which is strange for me. I'm using an STM32F407 board and using Serial6 pins.

3 Answers

4 months ago.

Thank you, but I still have the problem. It seems that my data is not sent to the modem. I can see the incoming data.

posted by Masoud R. 29 Nov 2018
2 months ago.

The programming part is always convoluted, and it keeps students puzzled. It is why AllAssignmentHelp has appointed the best programming experts to assist you with java assignments. Our Java assignment help tutors will ensure that your programming skills improve within a short span.

Thanks, I solved it by using mbed's UARTSerial API.

posted by Masoud R. 15 Jan 2019
3 months, 2 weeks ago.

How would you check if it's functioning? Appears as though the exhausting would simply stay there doing the code however you'd have no chance to get of knowing. If you plug your PC into the sequential screen of one of the strenuous at that point you have three things on the sequential port.

To post an answer, please log in.