Great Cow BASIC TCP/IP Stack capabilities are now available.
You can serve web pages via the Great Cow BASIC HTTP Server, running on Great Cow BASIC programmed microcontrollers, utilising the Great Cow BASIC TCP/IP Stack.
Great Cow BASIC Stack offers following features:
Portable across Great Cow BASIC across a wide range of microcontrollers
Cooperative multitasking TCP/IP stack
Use it as part of HTTP Server or custom TCP/IP based application
Multiple TCP socket support
HTTP Server with multiple connections support
Pages may be stored in internal program memory or external data EEPROM
PC based program to convert web pages into Great Cow BASIC File System (GCBFS)
Modular design to easily add new components
The specifics of the TCP/IP are:
HTTP/TCP support
UDP support
UDP Echo support
Simple Network Time Protocol (SNTP) support
Telnet support
ICMP and therefore Ping
ARP
Maximum frame size of 1518 bytes
and, other key protocol items that are required for the TCP/IP stack
We have developed. and adapted, many tools to test and validate the Great Cow BASIC TCP/IP stack. These tools will be part of the published package, along with demonstration programs.
Enjoy.
Last edit: Anobium 2016-05-01
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
You need....
1. Some time
2. Some patience
3. A microcontroller with 1kb of RAM
4. Some knowledge of HTML - basic needed
5. An ENC28j60 Ethernet module
Drop me a personal message and I can get you involved.
This is a limited offer..... You get the latest Great Cow BASIC compiler... all nice and shiny plus compile times are now ULTRA fast!!!!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
HOLY COW Evan, this is big. You guys keep amazing! I am just starting out with learning HTML, so I doubt I would be of much service. Will keep my eye out on this one. THANKS for all your hard work on this!!!!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Progress is slow, only because I am busy and this is the hardest thing I have ever done.
Some screen shot of the protocol analysis.
The source computer is running a browser or running command line instructions to create the traffic. This is using IP address 192.168.0.106
The GCB úServer is on 192.168.0.103.
You can see ARP, PING, UPD Echo and HTTP. HTTP works from the internet as expected via a router with the correct NAT settings (you dont have to use NAT but you would be mad not to!).
I thought these would be worth sharing as I created them to evidence protocol compliance.
The sceen shot shows the command prompt window calling the GCB µServer using the command line utility wget.exe. This utility gets the web page from the GCB µServer. This window alse shows the http data stream obtained from the GCB µServer. This is running continually. This tests the memory stack, the packet handler and the full TCP/HTTP µServer. You can see that 352 bytes are identified, and saved, these bytes are the HTTP component of the wget call. These test executes about 5 times a second. The number of TCP/HTTP transactions is about 100 a second ( 50 packet incoming to the ENC28J60 and 50 outgoing). As the filtering on the ENC28J60 does not work (known bug) the microcontroller is handling several 1000 per second.
The upper left screen shows the GCB µServer serial log. Address 192.168.0.106 has made an HTTP call (made by wget.exe), the number of bytes on the wire (B/Wire) is 451, and the TCP packet is 397 bytes, with a HTML payload of 349. We have less bytes than above.... wget.exe adds additional CRLFs to the HTML to complete the save operation.
Top right - the web page being called. This is for reference only.
Getting there slowly. Today, I have just got the quality assurance stamp from the W3C Markup Validation Service. Means the web page is valid and meets the mininum standard for web pages.
This is another little step forward - the pages are compliant with the W3C standard. See attachment. There two warnings but these are no critical to the operation of the µServer.
Some progress... I have the TCPIP stack now responding to a single HTTP request which requires the HTTP server to respond with multiple packets. See attachment.
So, how do users use the Ethernet driver? The can publish web pages, web pages can get any data from anything, a register, a port, a variable and then using the two public user methods create a web page. When someone calls the Ethernet adapter IP address the page is published - just like a web server!!
See the two attachments. #1) This shows the source code show HTTPPrint and the HTTPSend command. These are the two public methods to create and publish a web page. #2) Shows the web page produced. This is updated every 5 secs as specified in the user program.
Do you plan to support HTML5 WebSockets? This can be very useful when making a GCB app that needs to communicate in real-time with a web app.
From: Anobium
Sent: Monday, May 23, 2016 2:44 PM
To: [gcbasic:discussion]
Subject: [gcbasic:discussion] Great Cow BASIC Ethernet support for ENC20j60
So, how do users use the Ethernet. The can publish web pages, web pages can get any data from anything, a register, a port, a variable and then using two public user methods create a web page. When someone calls the Ethernet adapters address the page is published.
See the two attachments. #1) Is the source code show HTTPPrint and the HTTPSend command. These are the two public methods to create and publish a web page. #2) Shows the web page produced. This is updated every 5 secs as specified in the user program.
Static, user created with dynamic updating and Ajax are currently the plan.
If i knew what HTML web sockets was i would have a potential answer...... I am sure this is possible but any socket application would be potentially be a single socket solution.
Got a url with some good, simple information? I need more information.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
There’s tons on the net about WebSockets, including a number of Arduino implementations. Having said that, I know little about how to implement/hook up the server side, though I’ve done a lot of browser-side Javascript to interface to the WebSockets server. It’s really great if you need continuous bi-directional data streaming.
From: Anobium
Sent: Monday, May 23, 2016 3:18 PM
To: [gcbasic:discussion]
Subject: [gcbasic:discussion] Great Cow BASIC Ethernet support for ENC20j60
Static, user created with dynamic updating and Ajax are currently the plan.
If i knew what HTML web sockets was i would have a potential answer...... I am sure this is possible but any socket application would be potentially be a single socket solution.
Got a url with some good, simple information? I need more information.
Send me an personal message and we can restart the work in the second week of November. I have no time to package up or time to put my brain to the the final few capabilites required to release this driver.
You will need....
A lot of time
A lot of patience
A microcontroller with 1kb of RAM
A lot of knowledge of HTML
An ENC28j60 Ethernet module
All that said.... Drop me a personal message and I can get you involved.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi all!
Can anyone say something about enc28j60 support in Great Cow Basic?
Who seen library and/or example with working network from Atmega328 to PC with ENC28j60?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The libtary is not chip specific but the chip will need a lot of RAM.
The stack supports ARP, PING, UPD Echo and HTTP. HTTP works from the internet as expected via a router with the correct NAT settings (you dont have to use NAT but you would be mad not to!).
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ok!
so... where I can download library/example and try to use it?
I download latest version (GreatCowBASIC-UNIX-v0_98_07_r983), and try find library/demo in archive, but not found it...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Great Cow BASIC TCP/IP Stack capabilities are now available.
You can serve web pages via the Great Cow BASIC HTTP Server, running on Great Cow BASIC programmed microcontrollers, utilising the Great Cow BASIC TCP/IP Stack.
Great Cow BASIC Stack offers following features:
The specifics of the TCP/IP are:
We have developed. and adapted, many tools to test and validate the Great Cow BASIC TCP/IP stack. These tools will be part of the published package, along with demonstration programs.
Enjoy.
Last edit: Anobium 2016-05-01
NOTE
Support for the Great Cow BASIC TCP/IP stack is only available from release of the Great Cow BASIC after 1st May 2016.
You need the latest release to be able to use the Great Cow BASIC TCP/IP stack.
Want to join the TCPIP BETA program?
You need....
1. Some time
2. Some patience
3. A microcontroller with 1kb of RAM
4. Some knowledge of HTML - basic needed
5. An ENC28j60 Ethernet module
Drop me a personal message and I can get you involved.
This is a limited offer..... You get the latest Great Cow BASIC compiler... all nice and shiny plus compile times are now ULTRA fast!!!!
HOLY COW Evan, this is big. You guys keep amazing! I am just starting out with learning HTML, so I doubt I would be of much service. Will keep my eye out on this one. THANKS for all your hard work on this!!!!
Progress is slow, only because I am busy and this is the hardest thing I have ever done.
Some screen shot of the protocol analysis.
The source computer is running a browser or running command line instructions to create the traffic. This is using IP address 192.168.0.106
The GCB úServer is on 192.168.0.103.
You can see ARP, PING, UPD Echo and HTTP. HTTP works from the internet as expected via a router with the correct NAT settings (you dont have to use NAT but you would be mad not to!).
I thought these would be worth sharing as I created them to evidence protocol compliance.
Enjoy.
A sample, very simple web page looks like this.
I have simple one pages supported, mutliple pages and AJAX support.
The diagram is a very simple page - this is in-built within the solution to ensure a user gets something on the browser when using the µServer.
Last edit: Anobium 2016-05-20
Latest fun facts...
A screen shot of stress testing the HTTP server.
The sceen shot shows the command prompt window calling the GCB µServer using the command line utility wget.exe. This utility gets the web page from the GCB µServer. This window alse shows the http data stream obtained from the GCB µServer. This is running continually. This tests the memory stack, the packet handler and the full TCP/HTTP µServer. You can see that 352 bytes are identified, and saved, these bytes are the HTTP component of the wget call. These test executes about 5 times a second. The number of TCP/HTTP transactions is about 100 a second ( 50 packet incoming to the ENC28J60 and 50 outgoing). As the filtering on the ENC28J60 does not work (known bug) the microcontroller is handling several 1000 per second.
The upper left screen shows the GCB µServer serial log. Address 192.168.0.106 has made an HTTP call (made by wget.exe), the number of bytes on the wire (B/Wire) is 451, and the TCP packet is 397 bytes, with a HTML payload of 349. We have less bytes than above.... wget.exe adds additional CRLFs to the HTML to complete the save operation.
Top right - the web page being called. This is for reference only.
All looks ok to me.
Amazing great work!!!!!!
Getting there slowly. Today, I have just got the quality assurance stamp from the W3C Markup Validation Service. Means the web page is valid and meets the mininum standard for web pages.
This is another little step forward - the pages are compliant with the W3C standard. See attachment. There two warnings but these are no critical to the operation of the µServer.
Some progress... I have the TCPIP stack now responding to a single HTTP request which requires the HTTP server to respond with multiple packets. See attachment.
So, how do users use the Ethernet driver? The can publish web pages, web pages can get any data from anything, a register, a port, a variable and then using the two public user methods create a web page. When someone calls the Ethernet adapter IP address the page is published - just like a web server!!
See the two attachments. #1) This shows the source code show HTTPPrint and the HTTPSend command. These are the two public methods to create and publish a web page. #2) Shows the web page produced. This is updated every 5 secs as specified in the user program.
Getting there....
Last edit: Anobium 2016-05-23
Anobium
Do you plan to support HTML5 WebSockets? This can be very useful when making a GCB app that needs to communicate in real-time with a web app.
From: Anobium
Sent: Monday, May 23, 2016 2:44 PM
To: [gcbasic:discussion]
Subject: [gcbasic:discussion] Great Cow BASIC Ethernet support for ENC20j60
So, how do users use the Ethernet. The can publish web pages, web pages can get any data from anything, a register, a port, a variable and then using two public user methods create a web page. When someone calls the Ethernet adapters address the page is published.
See the two attachments. #1) Is the source code show HTTPPrint and the HTTPSend command. These are the two public methods to create and publish a web page. #2) Shows the web page produced. This is updated every 5 secs as specified in the user program.
Getting there....
Attachments:
a.. UserCode1.JPG (119.3 kB; image/jpeg)
b.. UserPage1.JPG (24.3 kB; image/jpeg)
Great Cow BASIC Ethernet support for ENC20j60
Sent from sourceforge.net because you indicated interest in https://sourceforge.net/p/gcbasic/discussion/579125/
To unsubscribe from further messages, please visit https://sourceforge.net/auth/subscriptions/
Static, user created with dynamic updating and Ajax are currently the plan.
If i knew what HTML web sockets was i would have a potential answer...... I am sure this is possible but any socket application would be potentially be a single socket solution.
Got a url with some good, simple information? I need more information.
There’s tons on the net about WebSockets, including a number of Arduino implementations. Having said that, I know little about how to implement/hook up the server side, though I’ve done a lot of browser-side Javascript to interface to the WebSockets server. It’s really great if you need continuous bi-directional data streaming.
From: Anobium
Sent: Monday, May 23, 2016 3:18 PM
To: [gcbasic:discussion]
Subject: [gcbasic:discussion] Great Cow BASIC Ethernet support for ENC20j60
Static, user created with dynamic updating and Ajax are currently the plan.
If i knew what HTML web sockets was i would have a potential answer...... I am sure this is possible but any socket application would be potentially be a single socket solution.
Got a url with some good, simple information? I need more information.
Great Cow BASIC Ethernet support for ENC20j60
Sent from sourceforge.net because you indicated interest in https://sourceforge.net/p/gcbasic/discussion/579125/
To unsubscribe from further messages, please visit https://sourceforge.net/auth/subscriptions/
Is there any demo code/example available for this? I couldn't find one in my installed GCB or on SF.
I've just received a couple of ENC20J60 boards and fancy trying them out (with the dreaded SPI.. :) )
I have a beta program available.
Send me an personal message and we can restart the work in the second week of November. I have no time to package up or time to put my brain to the the final few capabilites required to release this driver.
You will need....
All that said.... Drop me a personal message and I can get you involved.
Hi all!
Can anyone say something about enc28j60 support in Great Cow Basic?
Who seen library and/or example with working network from Atmega328 to PC with ENC28j60?
I sent you a PM today. But, here is the summary.
The libtary is not chip specific but the chip will need a lot of RAM.
The stack supports ARP, PING, UPD Echo and HTTP. HTTP works from the internet as expected via a router with the correct NAT settings (you dont have to use NAT but you would be mad not to!).
Thank You!
but I have a trouble with my e-mail., I add new address to account right now. Can You send again, please.
(forgive me, I'm not experienced user of SourceForge, and don't know where personal message on this site)
No problem, just use this thread.
Ok!
so... where I can download library/example and try to use it?
I download latest version (GreatCowBASIC-UNIX-v0_98_07_r983), and try find library/demo in archive, but not found it...
OK. I will check (on my Thursday am London time). I will post after I have located etc.
Evan
Thank You. I will waiting Your message with patience.
I found some files in Your profile on github... is this what I searching?