-
• #2
Some improvements:
//Loopback3.js //22 Aug 2016 //use the left pane of the WebIde or //use putty or other termial program on com assigned to USB //use webide to load and run the program //disconnect webide //start putty on com port at 115200,8 no flow control //typing in putty should appear followed by connect in putty screen var Sp1=USB; var Sp2=LoopbackA; function run(){ Sp1.setup(115200); Sp2.setup(115200); LoopbackB.setup(115200); LoopbackB.setConsole(); } function menu(){ Sp1.print("Enter 1 to turn the LED on:\n\r"); Sp1.print("Enter 2 to turn the LED off:\n\r"); Sp1.print("Enter 0 to Exit:\n\r"); } Sp1.on('data', function (data) { Sp1.print(data+"\n\r"); switch(data){ case "1"://LED on Sp2.print("digitalWrite(B12,1);\n\r"); Sp1.print("digitalWrite(B12,1);\n\r"); menu(); break; case "2"://LED off Sp2.print("digitalWrite(B12,0);\n\r"); Sp1.print("digitalWrite(B12,0);\n\r"); menu(); break; case"0"://Exit Sp2.print("USB.setConsole();\n\r"); }//end switch }); function test(){ run(); menu(); } var a=setInterval (function () { test(); clearInterval(a); }, 1000);
The output:
>echo(0); =undefined -> LoopbackB Enter 1 to turn the LED on: Enter 2 to turn the LED off: Enter 0 to Exit: 1 digitalWrite(B12,1); Enter 1 to turn the LED on: Enter 2 to turn the LED off: Enter 0 to Exit: 2 digitalWrite(B12,0); Enter 1 to turn the LED on: Enter 2 to turn the LED off: Enter 0 to Exit: 0 <- LoopbackB =undefined =undefined >1 =1 >
1 Attachment
-
• #3
Great! Where you're sending commands to Loopback, you actually just execute them directly as JavaScript if you wanted to, or use
eval
?Loopback's probably most useful for things like this: http://www.espruino.com/Espruino+Home+Computer
Where it helps to have access to the multi-line editing and stuff like that. For instance you could connect something like an nRF24 radio module and then allow Espruino to be programmed over that.
-
• #4
An even better version is attached.
Why is this being done?
It is a way of providing an end user menu interface so they don't need to know Espruino.
Typing LEDon() and LEDoff() or other such commands is replace by a menu selection.This is basic work for the crypto-message project that I'm working on in another project.
Ideally I'd like to have the crypto-client Pico plug into a USB port and serve up a webpage to the computer using PPP over the USB port. The client clicks on buttons on the web page that get sent to the Client Pico. The Client Pico sends the crypto-message via Wi-Fi to the Server Pico. The reverse path applies as well.
The Server Pico decrypts the crypto-message, validating the message integrity and authentication, and then performs the requested task.
Do the Espruino Wi-Fi functions take care of the PPP connection, or do I need to add code that does the initial handshake and setup?
1 Attachment
-
• #5
I'm afraid there's no PPP option at the moment. I'd be really interested if you get it working (you could use the NetworkJS module so you can get access to http/etc).
The really cool thing (imo) would be to be able to serve the proper website version of the Web IDE over it - so you could then access the board without having to have any software on the host at all.
-
• #6
The problem with using a browser is no local file or I/O access.
Around the year 2000, I found Simple Server, and used it to access RTU's via serial ports, access a database etc. It served HTML pages so that I could access the RTUs and database.
Some promising links from Googling "Simple Server" :https://github.com/balupton/simple-server
https://www.npmjs.com/package/simple-server
http://techngr.com/t-mtn-simple-server-download-and-settings
http://www.analogx.com/contents/download/Network/sswww/Freeware.htm
For PPP this link looks promising
https://github.com/adamdunkels/contiki-1.x/blob/master/contiki/ppp/ppp.c
-
• #8
Alas I'm using Windows 7 and the days of XP are numbered
The SLIP protocol is simple enough./* //SLIP protocol // https://en.wikipedia.org/wiki/Serial_Line_Internet_Protocol var END=0xC0; var ESC=0xdb; var ESC_END=0xdc; var ESC_ESC=0xdd; // END+Packet+END //if the END byte occurs in the data to be sent, the two byte sequence // ESC, ESC_END is sent instead, //if the ESC byte occurs in the data, the two byte sequence ESC, ESC_ESC // is sent. */
PPP link:
https://en.wikipedia.org/wiki/Point-to-Point_ProtocolLCP link:
https://en.wikipedia.org/wiki/Link_Control_Protocol
SLIP protocol link:
https://en.wikipedia.org/wiki/Serial_Line_Internet_Protocol
CHAP protocol link:
https://en.wikipedia.org/wiki/Challenge-Handshake_Authentication_ProtocolAnother link:
https://en.wikibooks.org/wiki/Serial_Programming/IP_Over_Serial_ConnectionsSetting up PPP on Windows 7
https://mikebeach.org/2012/08/30/installing-and-configuring-a-ppp-null-modem-connection-on-windows-7/So when I try to start the PPP dial-up from windows, I captured the following:
// with window trying to dial up Xdump(); CLIENTCLIENTCLIENTCLIENTecho(0); console.log("<","<<",JSON.stringify(process.env),">>",">");echo(1); 4 //disconnect and reconnect Webide only Xdump(); echo(0); console.log("<","<<",JSON.stringify(process.env),">>",">");echo(1); 4
Windows is sending CLIENTCLIENTCLIENTCLIENT
So what do I need to reply? Dig into the RFC's and read the Vogon poetry for a while? -
• #9
Dig into the RFC's and read the Vogon poetry for a while?
Quite likely...
Or you could actually connect via some device that uses SLIP and capture the packets?
My worry is that it may actually be sending data at the packet level, which would mean that you'd need TCP/IP on the Espruino (which isn't there at the moment)
Loopback2.js 22 Aug 2016
Used the Loopback devices to allow the USB port to act as program input.
Commands sent to the USB port trigger sub commands that get sent to the Espruino console.
0: Exit,
1: LEDon
2: LEDoff
The left pane of the WebIde or a terminal program connected to the USB port can be used to send the commands.
The output:
1 Attachment