UART string variable question (quick question)

For Flowcode users to discuss projects, flowcharts, and any other issues related to Flowcode 8.

Moderator: Benj

Post Reply
MJU
Posts: 502
Joined: Wed Nov 07, 2007 6:51 pm
Location: Antwerp Belgium
Has thanked: 121 times
Been thanked: 108 times

UART string variable question (quick question)

Post by MJU »

I have a string variable "mytext"
In Flowcode I fill this with text=>

Code: Select all

mytext= "This My Text I want to transmit"
The I send it as a string via the UART (which works).

Code: Select all

UART1 send string mytext
On the receiver side the text becomes gibberish.

When I send the text without using the variable, the RX receives it well.

Code: Select all

UART1 send string "This My Text I want to transmit" 
How can I use variable text to send with the UART?

chipfryer27
Valued Contributor
Valued Contributor
Posts: 776
Joined: Fri Jun 06, 2014 3:53 pm
Has thanked: 185 times
Been thanked: 204 times

Re: UART string variable question (quick question)

Post by chipfryer27 »

Hi

Following on from previous posts I assume you are using the E32 LoRa modules and an Arduino. I don't yet use an Arduino (but have just acquired a Nano) so I can't help with anything chip specific, therefore I just set up using a PIC.

LoRa set up as broadcast (default values) and a String variable called Test created in FC. In a calculation I set Test = "Test-2" and I have a loop with two buttons

Button - 1 uses the command UART SendString("Test-1")
Button - 2 uses the command UART SendString (Test)
Switch.JPG
Switch.JPG (26.14 KiB) Viewed 4291 times
Button - 2 therefore sends my variable called Test and I can set this to whatever I want.

This PIC connects directly to a LoRa module.

Another LoRa module connects to a PC running Terminal (free terminal program) and can display either in Hex or ascii. In tests pushing either button successfully sends the data to the other module and displays correctly in Terminal.

In the attached you will see the results of pushing Button-1 then Button-2.
Terminal.jpg
Terminal.jpg (85.85 KiB) Viewed 4291 times
So as the units /UART are sending correctly perhaps look at how you are receiving on the Arduino? Maybe check with your analyser what is happening on the Arduino Rx pin?

Hope this is of some small help.
Regards

MJU
Posts: 502
Joined: Wed Nov 07, 2007 6:51 pm
Location: Antwerp Belgium
Has thanked: 121 times
Been thanked: 108 times

Re: UART string variable question (quick question)

Post by MJU »

Thanks Chipfryer,

You are right about the hardware I'm using and testing.

Strange thing is that, what I used last night, and flashed again and again, didn't work, but today I changed a small thing and now the text is send as it should. The small thing I changed had nothing to do with the variable...
Creepy stuff sometimes :-)

But now I have another issue:
FC1.jpg
FC1.jpg (32.46 KiB) Viewed 4274 times
In this example I wait until the AUXpin variable goes low and then try to receive a string via UART1.
I see via my logic analyser that there is text received, but not stored into the variable "receivetext".

When the AUX pin goes low, the transfer of data is held for a few microseconds.
The module I"m working with holds this to give the microcontroller the time to wake up.
The time between the AUXpin going low and the sending of the data is about 5ms (datasheet).
But which confuses me all the time is the waiting time in the Flowcode UART component.

I tried several settings (from 0 to 255), but strangely the variable "receivetext" is empty all the time.
How can I make sure the data that comes from the module gets into the variable "receivetext"?

Thanks!

chipfryer27
Valued Contributor
Valued Contributor
Posts: 776
Joined: Fri Jun 06, 2014 3:53 pm
Has thanked: 185 times
Been thanked: 204 times

Re: UART string variable question (quick question)

Post by chipfryer27 »

Hi

I would strongly be tempted to use the RxInt Interrupt feature when capturing data. That way you ensure the uC will be ready to process when data is actually received at the UART.

If you also couple this with the Circular Buffer you are free to process your incoming stream whenever you wish. There are a few examples kicking around that are very helpful.

Enable RxInt to call your Receive_Macro (or whatever you wish to call it)

In the Macro use UART:ReceiveChar or ReceiveString to capture the data depending on your needs.
You could then put this in the Circular Buffer for processing whenever.

Another option is to have a loop inside the macro, exiting when ReceiveChar times out. In the loop, capture the data per byte and then store in the CB. I used this approach in a previous project with little issue. From the Main program I "polled" the CB to look for the presence of my data and if found processed.

Hope this helps.

Regards

User avatar
Michael Burger
Posts: 19
Joined: Tue Jul 02, 2019 1:42 pm
Location: South Africa
Has thanked: 4 times
Been thanked: 10 times

Re: UART string variable question (quick question)

Post by Michael Burger »

Very helpful, thank you!!
Using the RxInt for data capture solved a lot of issues for me.

chipfryer27
Valued Contributor
Valued Contributor
Posts: 776
Joined: Fri Jun 06, 2014 3:53 pm
Has thanked: 185 times
Been thanked: 204 times

Re: UART string variable question (quick question)

Post by chipfryer27 »

Hi

Glad you found it helpful.

When using comms, keeping the interrupt as short as possible is very beneficial. Usually I'll just grab my byte (for example) and store in a circular buffer before exiting.

In my Main Loop, I'll poll buffer and act accordingly. I may "test" to see if expected amount of bytes are present or I may look for a specific value(s). Many options.

This way my Main is doing "something useful" most of the time, only branching to handle incoming data when necessary.

Regards

User avatar
AbhijitR
Posts: 300
Joined: Fri Nov 07, 2014 12:48 pm
Location: Pune, India
Has thanked: 283 times
Been thanked: 80 times

Re: UART string variable question (quick question)

Post by AbhijitR »

Hello! Chipfryer

Thank you for your comments, may i request you to help me with the pictures you posted on 30th Jun 2019, unfortunately i am not able to view those.

Thank you.

Abhi

chipfryer27
Valued Contributor
Valued Contributor
Posts: 776
Joined: Fri Jun 06, 2014 3:53 pm
Has thanked: 185 times
Been thanked: 204 times

Re: UART string variable question (quick question)

Post by chipfryer27 »

Hi Abhi

Good to hear from you again.I hope all is well.

I've no idea what happened to the pictures in the post, they appear to have "errors" so can't be displayed. Unfortunately I don't have any copies.

It was kind of a follow on from another e32Lora. Were you looking for anything specific to the LoRa module or just generically sending/ receiving?

Regards

User avatar
AbhijitR
Posts: 300
Joined: Fri Nov 07, 2014 12:48 pm
Location: Pune, India
Has thanked: 283 times
Been thanked: 80 times

Re: UART string variable question (quick question)

Post by AbhijitR »

Hi! Chipfryer

Yes everything is well for me, thank you, I hope you too are good.

Regarding the pictures it would have been a help if me (in future) or someone else was interested to understand what exactly you were explaining, but its okay.

I remember sometime back Martin (medelec35) mentioned due to change of forum app pictures might have got lost.

Thank you.

Abhi

chipfryer27
Valued Contributor
Valued Contributor
Posts: 776
Joined: Fri Jun 06, 2014 3:53 pm
Has thanked: 185 times
Been thanked: 204 times

Re: UART string variable question (quick question)

Post by chipfryer27 »

Hi Abhi

All good here with the exception of setting up a new laptop which is a pain. However as I'll be able to use Flowcode App Developer it will be worth the headache:)

It would be easy to recreate a generic chart, but to redo the LoRa I'd need to first refamiliarise myself with modules.

Regards

Post Reply