WebServer - Not all Strings Update.

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

Moderator: Benj

User avatar
Jay Dee
Posts: 359
Joined: Tue Aug 18, 2009 6:42 pm
Has thanked: 116 times
Been thanked: 139 times
Contact:

WebServer - Not all Strings Update.

Postby Jay Dee » Sun Feb 12, 2017 8:23 pm

Hi all, Using the Webserver component with the WIZ810MJ module. It is working really well, however I can only update 4 strings.

I am updating 6 variables, these are converted to Strings and sent out using the 'SetOutValue' macro.
Then running the 'CheckSocketActivity' macro.
The first 4 strings update as expected, 5 and 6 do not. :?
Is there a limit to the number of Strings that can be updated? I see a setting for 'Max Channels' I assumed this was the number of Client PC's that could talk to the web page at any one time, am I wrong?
If so, any workarounds people can think of?
Thanks, J.

My webserver HTML is..

Code: Select all

<html>
<head>
<title>Level Monitor</title>
<script type="text/javascript">
function reFresh()
{
  location.reload(true)
}
window.setInterval("reFresh()",2000);

</script>
<style type="text/css">
.style1 {
   font-size: xx-large;
   font-weight: bold;
   color: #0000FF;
}
.style2 {font-size: large; font-weight: bold; color: #00008F; }
</style>
</head>
<body>
<p align="center" class="style1">
Level Sensor Monitor<br>
<p align="center" class="style2">
Level Delta(mm): %1 <br>
Volume(L): %2 <br>
Weight(kg): %3 <br>
Temp(C): %4 <br>
Density(g/L): %5 <br>
Heartbeat: %6 </p>
</body>
</html>

My Webserver Component Settings are;
WebServerSettings.PNG
Settings
WebServerSettings.PNG (24.49 KiB) Viewed 12380 times

The Little Web page is working great for the first 4 strings...
WebPage.PNG
WebPage.PNG (18.58 KiB) Viewed 12380 times

User avatar
Benj
Matrix Staff
Posts: 14367
Joined: Mon Oct 16, 2006 10:48 am
Location: Matrix TS Ltd
Has thanked: 4446 times
Been thanked: 4144 times
Contact:

Re: WebServer - Not all Strings Update.

Postby Benj » Mon Feb 13, 2017 11:47 am

Hello,

The substitution numbers should run from 0 which will provide you an extra swap value.

I have generated a slightly modified component for you which should allow for up to 7 substitutions ranging 0-6.

Webserver_EB023_00_2.fcpx
(25.43 KiB) Downloaded 254 times
These users thanked the author Benj for the post:
Jay Dee (Mon Feb 13, 2017 12:46 pm)
Rating: 5.26%
 

User avatar
Jay Dee
Posts: 359
Joined: Tue Aug 18, 2009 6:42 pm
Has thanked: 116 times
Been thanked: 139 times
Contact:

Re: WebServer - Not all Strings Update.

Postby Jay Dee » Mon Feb 13, 2017 12:45 pm

Thanks Ben,
Thats excellent. Good to know about the Index 0 and the extra couple of substitutions really help.
Tried and tested on hardware, all works as expected.

I only thought this morning.. If I really need to output quite a few variables, I just need to build them into a single long string. Obviously keeping to a sensible limit and not consuming lots of PIC memory.
However, for this project, its all sorted.
WebPage2.PNG
web2
WebPage2.PNG (11.11 KiB) Viewed 12366 times

Cheers, J.
These users thanked the author Jay Dee for the post:
Benj (Mon Feb 13, 2017 1:07 pm)
Rating: 5.26%
 

claudemir
Posts: 45
Joined: Sat Nov 03, 2012 7:43 am
Has thanked: 11 times
Been thanked: 4 times
Contact:

Re: WebServer - Not all Strings Update.

Postby claudemir » Tue Mar 28, 2017 8:08 pm

Hello, this topic is speaking my problem as well, since I can only use 6 string how can I do to use more? Because I need to do 10 readings. I'm using mega2560

User avatar
Benj
Matrix Staff
Posts: 14367
Joined: Mon Oct 16, 2006 10:48 am
Location: Matrix TS Ltd
Has thanked: 4446 times
Been thanked: 4144 times
Contact:

Re: WebServer - Not all Strings Update.

Postby Benj » Wed Mar 29, 2017 3:43 pm

Hello,

Right I have overhauled the component so that you can now choose how many incoming and outgoing variables and how many bytes to allocate for each variable.

Subs.jpg
Subs.jpg (21.9 KiB) Viewed 11895 times


This should make much better use of the available RAM as you no longer have to assign 20 bytes to each variable. Usually 4 to 6 bytes work well to pass a numeric value. Be sure to include room for the string null byte so if you want to store 3 characters in the string e.g. "123" then the size should be made to 4 or larger.

You can now have up to 12 outgoing (%0 to %11) and 6 incoming substitutions of variable length. If more are needed then it should be easy to add more, just let me know.

Simply copy the file to your "Flowcode 7/Components" directory before starting Flowcode for the changes to be loaded.

Webserver_EB023_00_1.fcpx
(27.16 KiB) Downloaded 174 times

Webserver_EB023_00_2.fcpx
(28.52 KiB) Downloaded 185 times

WLAN_ESP8266.fcpx
(24.92 KiB) Downloaded 180 times


Let me know how you get on.
These users thanked the author Benj for the post:
Jay Dee (Wed Mar 29, 2017 5:45 pm)
Rating: 5.26%
 

claudemir
Posts: 45
Joined: Sat Nov 03, 2012 7:43 am
Has thanked: 11 times
Been thanked: 4 times
Contact:

Re: WebServer - Not all Strings Update.

Postby claudemir » Wed Mar 29, 2017 6:01 pm

Sorry for not seeing it before i was in the forum floucode v7
I still have no update, my flowcode v6, how can I use this update for v6 as well?

User avatar
Benj
Matrix Staff
Posts: 14367
Joined: Mon Oct 16, 2006 10:48 am
Location: Matrix TS Ltd
Has thanked: 4446 times
Been thanked: 4144 times
Contact:

Re: WebServer - Not all Strings Update.

Postby Benj » Wed Mar 29, 2017 6:04 pm

Hmm, v7 only at the moment, I'll see if I can do them for v6 for you.

User avatar
Benj
Matrix Staff
Posts: 14367
Joined: Mon Oct 16, 2006 10:48 am
Location: Matrix TS Ltd
Has thanked: 4446 times
Been thanked: 4144 times
Contact:

Re: WebServer - Not all Strings Update.

Postby Benj » Wed Mar 29, 2017 6:11 pm

Here is a v6 version of the component with the recent updates, Please note I have not tested this in v6 so make a backup of the existing component first.

Webserver_EB023_00_2.fcpx
(27.46 KiB) Downloaded 195 times
These users thanked the author Benj for the post:
claudemir (Wed Apr 26, 2017 6:57 pm)
Rating: 5.26%
 

claudemir
Posts: 45
Joined: Sat Nov 03, 2012 7:43 am
Has thanked: 11 times
Been thanked: 4 times
Contact:

Re: WebServer - Not all Strings Update.

Postby claudemir » Wed Mar 29, 2017 7:02 pm

It worked perfectly, just a suggestion, because today I have a project with only 10 read, but future I need something that I can get 20 digital input, so I would have something to change as the programmer needs.
Thanks for the help.
Attachments
Webserver Casa.fcfx
(43.21 KiB) Downloaded 201 times
These users thanked the author claudemir for the post:
Benj (Thu Mar 30, 2017 12:33 pm)
Rating: 5.26%
 

User avatar
Benj
Matrix Staff
Posts: 14367
Joined: Mon Oct 16, 2006 10:48 am
Location: Matrix TS Ltd
Has thanked: 4446 times
Been thanked: 4144 times
Contact:

Re: WebServer - Not all Strings Update.

Postby Benj » Wed Apr 05, 2017 12:25 pm

Some further improvements for the ESP8266 module here.

I found that the favicon page request was being ignored and that the multiplex channel was not being adhered to when replying as a HTTP server so approx 1 out of every 3 page requests was failing.

This now seems to be much better and is working reliably and much faster than before.

WLAN_ESP8266.fcpx
(24.98 KiB) Downloaded 205 times
These users thanked the author Benj for the post (total 2):
MJU (Fri Apr 07, 2017 5:16 pm) • claudemir (Wed Apr 26, 2017 6:18 pm)
Rating: 10.53%
 

claudemir
Posts: 45
Joined: Sat Nov 03, 2012 7:43 am
Has thanked: 11 times
Been thanked: 4 times
Contact:

Re: WebServer - Not all Strings Update.

Postby claudemir » Wed Apr 26, 2017 6:30 pm

Ola Benj, you helped me a lot in improving the use of available RAM, with the change made with you read 12 numerical 2-digit variables,
But what I really need is a reading of 20 input variables, is it possible to make that shift to version 6?
Thank you in advance for your support. :D :D

User avatar
Benj
Matrix Staff
Posts: 14367
Joined: Mon Oct 16, 2006 10:48 am
Location: Matrix TS Ltd
Has thanked: 4446 times
Been thanked: 4144 times
Contact:

Re: WebServer - Not all Strings Update.

Postby Benj » Thu Apr 27, 2017 9:59 am

Hello,

Would it be possible to combine several readings using a single input.

For example you could do this using 5 input variables.

index.htm?0=0&1=1&2=23&3=34&4=45

or you could do something like this using a single input variable.

index.htm?0=0,1,23,34,45

Here you have 5 variables but only occupying a single input variable. You would then have to parse through the variable splitting the data up every time you hit a comma.

Here is some example code to separate out the values. The data variable would have to be a multi dimensional string variable e.g. data[5][3]

Code: Select all

inputVar = "0,1,23,34,45"
length = Length$(inputVar)
idx = 0
varIdx = 0
subIdx = 0
while (idx < length)
{
   if (inputVar[idx] = ',')        //Have we hit a comma
   {
      data[varIdx][subIdx] = 0     //Terminate current var string
      varIdx = varIdx + 1        //Move to next var
      subIdx = 0           //Start at the beginning
   }
   else
   {
      data[varIdx][subIdx] = inputVar[idx]      //Assign data byte to string
      subIdx = subIdx + 1
   }
   idx = idx + 1
}
data[varIdx][subIdx] = 0         //Terminate final var string


You should end up with something like this in the data variable.

data[0] = "0"
data[1] = "1"
data[2] = "23"
data[3] = "34"
data[4] = "45"

Is this an option for you?

claudemir
Posts: 45
Joined: Sat Nov 03, 2012 7:43 am
Has thanked: 11 times
Been thanked: 4 times
Contact:

Re: WebServer - Not all Strings Update.

Postby claudemir » Thu Apr 27, 2017 3:07 pm

Hello Benj, I will adapt according to the recommendations, I hope it works and meets my needs. I need to do this html reading for those 20 digital input satatus on the hardware.
These users thanked the author claudemir for the post:
Benj (Thu Apr 27, 2017 3:59 pm)
Rating: 5.26%
 

chipfryer27
Posts: 174
Joined: Fri Jun 06, 2014 3:53 pm
Has thanked: 108 times
Been thanked: 73 times
Contact:

Re: WebServer - Not all Strings Update.

Postby chipfryer27 » Thu Apr 27, 2017 4:13 pm

Hi

Back in v5 I needed to "serve" around 160 variables but in the forums I was told that I could only have four. So always trying to "break things" I created four arrays and served four strings each with 40 csv. Worked fine for me then (project still running and I still use that code when needed) so I think it should work for you too.

Regards
These users thanked the author chipfryer27 for the post:
claudemir (Thu Apr 27, 2017 4:21 pm)
Rating: 5.26%
 

claudemir
Posts: 45
Joined: Sat Nov 03, 2012 7:43 am
Has thanked: 11 times
Been thanked: 4 times
Contact:

Re: WebServer - Not all Strings Update.

Postby claudemir » Thu Apr 27, 2017 4:20 pm

Hello chipfryer27,
Could you show me this code so I can better understand what you've done? Thank you

chipfryer27
Posts: 174
Joined: Fri Jun 06, 2014 3:53 pm
Has thanked: 108 times
Been thanked: 73 times
Contact:

Re: WebServer - Not all Strings Update.

Postby chipfryer27 » Thu Apr 27, 2017 6:08 pm

Hi

Unfortunately I'm out of the country just now so I don't have access to the code, but if you still need it late May I'll post then.

Basically and briefly from memory:
I needed to read 160 ADC values so what I did was in Variables to create 4 x arrays such as S1[39] to S4[39]. I think I may have been limited in size by available RAM or the like.

I then created a loop using an incremental counter (such as count=count+1) to populate S1 -- S4

The loop would read the ADC then store the ADC at S1[count]=ADC and the increment the loop counter
Once I had filled S1, the loop would then decide to fill S2 --S4 in a similar way

I obviously had other stuff going on to switch inputs to the ADC but we can ignore that.

The v5 webserver component was great. You didn't need to know much about html to get some output. You could just use %variable% and off you went. In the v5 webserver external component properties under Page 1, all I had was the first four variables, then a line break and the next four and so on

%S1[0]% S1[1]% %S1[2]% %S1[3]%
%S1[4]% S1[5]% %S1[6]% %S1[7]%

I think I had to use a maximum of four in a line in the webserver component or it threw a wobbly, not sure why nor cared..:)

To test I simulated with a very slow speed and varied a pot whilst watching the arrays fill in accordance with various counts I had running.

I then had a database reach out to the webserver (at preset times), grab the page in a temporary field, then parse putting the variables in respective fields. This was easy to do as the data positions never changed. I now had 160 individual records.

Hope this is of some small help

Regards

---Edit----
Sorry, my memory is bad. In v5 I did as posted but in a v6 project I created $trings.
In a loop I accessed an array and concatenated along the lines of

x$=x$+A$[count]

I can't remember exactly and I probably had to include separators such as "," but again, there are good examples in the help/examples pages. Also it's good to remember that is well documented that you shouldn't try and add too many strings together at one time

Don't do W$=X$+Y$+Z$, instead do W$=W$+X$, then W$=W$+Y$ etc
Last edited by chipfryer27 on Thu Apr 27, 2017 8:27 pm, edited 1 time in total.

claudemir
Posts: 45
Joined: Sat Nov 03, 2012 7:43 am
Has thanked: 11 times
Been thanked: 4 times
Contact:

Re: WebServer - Not all Strings Update.

Postby claudemir » Thu Apr 27, 2017 7:00 pm

Hello
I can get a notion how to do it, I'll put my hand in the dough and see how far I can go, but I can still get home when I can send the code to see if I'm on the way.
Because I've never worked with Strings for arrays, so I have a bit of difficulty.
Thank you until now

chipfryer27
Posts: 174
Joined: Fri Jun 06, 2014 3:53 pm
Has thanked: 108 times
Been thanked: 73 times
Contact:

Re: WebServer - Not all Strings Update.

Postby chipfryer27 » Thu Apr 27, 2017 7:32 pm

Hi

The great thing about Flowcode is the forums. People always try and help. If you get stuck please post the code you have and I'm pretty sure someone will help.

There are some help / examples available to show you how to work with arrays / strings etc so please check them out. If I could figure it out anyone can..:) but please be aware though that since v5 the webserver component changed so my example won't work as documented.

If I can help further let me know

Regards
These users thanked the author chipfryer27 for the post:
claudemir (Thu Apr 27, 2017 8:29 pm)
Rating: 5.26%
 

claudemir
Posts: 45
Joined: Sat Nov 03, 2012 7:43 am
Has thanked: 11 times
Been thanked: 4 times
Contact:

Re: WebServer - Not all Strings Update.

Postby claudemir » Fri May 12, 2017 2:46 pm

Hello chipfryer27
I have tried to read the position of the byte inside the string in order to use the processor ram, where I need to read 20 digital inputs, I can separate the bytes in the string, but when I access the IP the buttons configured in HTML do not recognize the byte , In the SetOutValue parameter, the position of the byte to be read in the HTML is displayed, the "Yes [0]%" button always appears on the page within the button, the first byte position will always appear on the other two buttons. Where am I going wrong? Please, I need more help, I sent the project to analyze if possible. :oops: :oops: :oops:
Attachments
Apps_Internet_Irrigation system.fcfx
(33.47 KiB) Downloaded 128 times

chipfryer27
Posts: 174
Joined: Fri Jun 06, 2014 3:53 pm
Has thanked: 108 times
Been thanked: 73 times
Contact:

Re: WebServer - Not all Strings Update.

Postby chipfryer27 » Mon May 15, 2017 9:05 pm

Hi Claudemir

Sorry for delayed reply. My access to forum is either feast or famine, due to work commitments.

At present I don't have access to any previous project of mine for reference, and won't until my return, but if you still need help in a week or two I will try. I only have F7 installed on my laptop (which is new to me) as I travel.

I haven't had a chance to look at your flowchart yet, possibly at the weekend, but from your post it sounds as though you are perhaps having HTML issues. I have to confess that is not my strong point. Any HTML I write (well splutter) is only ever visible on a private network and is quite basic, limited to serving values and the odd button or so. Incidentally I read today in another post that F7 has a bug of sorts with String Arrays.

Flowcode does give examples of how to use buttons in a server app so that may be of use to you as well. I think they are in v6 examples.

FC v5 was very user friendly in terms of HTML (for my needs) but onward you now need to know a lot more about creating pages. In v5 if I had a variable called "x" and say x=7, I could use %x% to print the value "7" (because x=7). After v5 that just printed "x" not the value (I think that is the case as I can't remember exactly, but I know things changed as I had to go buy a book on HTML. One day I'll read it).

I'm sorry I'm not much help at present but once back I'll dig out some previous projects to see if I can help further.

Regards
These users thanked the author chipfryer27 for the post:
claudemir (Tue May 16, 2017 9:16 pm)
Rating: 5.26%
 

User avatar
LeighM
Matrix Staff
Posts: 1911
Joined: Tue Jan 17, 2012 10:07 am
Has thanked: 460 times
Been thanked: 646 times
Contact:

Re: WebServer - Not all Strings Update.

Postby LeighM » Tue May 16, 2017 11:39 am

Hi Claudemir,

There are quite a few things going on in your program, so it's best we start with something simple.

The SetOutValue() macro sets up a string to go out with the page request.
We now use strings, rather than byte values, as these are more flexible so that we can put text, integers or float values into the page.

So first, any integer/float values have to be converted into a string.
We then pass the string, and an index to identify it, to SetOutValue()
example: SetOutValue(0, "hello world") sets index 0 to "hello world"
and: SetOutValue(1, "me too") sets index 1 to "me too"

Then in the html page property if we have ...

Code: Select all

<html>
<body>
This page says %0 and %1
</body>
</html>

The %0 and %1 get substituted with the out strings of index 0 and index 1

Hope that helps and get you started.
These users thanked the author LeighM for the post (total 2):
chipfryer27 (Tue May 16, 2017 1:57 pm) • claudemir (Tue May 16, 2017 9:16 pm)
Rating: 10.53%
 

claudemir
Posts: 45
Joined: Sat Nov 03, 2012 7:43 am
Has thanked: 11 times
Been thanked: 4 times
Contact:

Re: WebServer - Not all Strings Update.

Postby claudemir » Tue May 16, 2017 9:15 pm

Hello Leighm
I created 20 buttons that trigger 20 digital outputs, and also monitored 20 digital inputs, I created the button in html and in that button the status of each digital input (On or OF) appears, Today it is only possible to read 12 (0 to 11) digital inputs, each input occupying a string. So I try to imagine a way where I can read 20 digitail entries, I also have some limitations on the flocode v6.
But thank you all for the alternatives offered,