it works well. Good idea for some quick test.
Added words to temporarily compile code and execute it. Handy for timing tests or for compile-only words. Look in ARCH/forth/compile-execute.fs. [[ 10 for r@ . next ]] 9 8 7 6 5 4 3 2 1 0 ok<$,ram>
ALL: [[ ]]
thank you for the information. my idea was to have two buffer, a buffer 256 bytes and then a buffer of 64 bytes and a handle system. but now i'm thinking to have only one of 64 bytes and fill it reading the text until cr, evaluate and do the same until the end of file. i will check and try this idea and I will inform you. last : why buf c@+ evaluate buf2 c@+ evaluate doesn't work? and : test2 buf c@+ evaluate buf2 c@+ evaluate ; works.?
thank you for the information. my idea was to have two buffer, a buffer 256 bytes and then a buffer of 64 bytes and a handle system. but now i'm thinking to have only one of 64 bytes and fill it reading the text until cr, evaluate and do the same until the end of file. i will check and try this idea and I will inform you.
thank you for the information. my idea was to have two buffer, a buffer 256 bytes and then a buffer of 64 bytes and a handle system. but now i'm thinking to have only one of 64 bytes and fill it reading the text until cr, evaluate and do the same until the end of file. i will check and try this idea and I inform you.
When I was writing the block words I found that FF should be restructured to accept input from a large buffer using REFILL. But I never did that restructuring. Anyway it is easiest to have a line buffer that can accept a whole line, and evaluate one line at a time. If you take in only part of a line you may cut off some words in the middle which again a more difficult thing to handle. So LOAD has the restriction that one line is always 64 bytes and a word is not allowed to be split across a 64 byte...
When I was writing the block words I found that FF should be restructured to accept input from a large buffer using REFILL. But I never did that restructuring. Anyway it is easiest to have a line buffer that can accept a whole line, and evaluate one line at a time. If you take in only part of a line you may cut of some words in the middle which again a more difficult thing to handle. So LOAD has the restriction that one line is always 64 bytes and a word is not allowed to be split across a 64 byte...
what i really need: with loops and more accurate 1 ram create buf 20 allot 2 : test buf 20 evaluate ; 3 s" test3 1 2" buf swap cmove 4 test 5 buffer 20 erase 6 s" + . ;" buf swap cmove 7 test test3---->3 if this possible? my goal is evaluate a complet file of 4 K with a buffer of 256 bytes.
what i really need: with loops and more accurate ram create buf 20 allot test buf 20 evaluate ; s" test3 1 2" buf swap cmove test buffer 20 erase s" + . ;" buf swap cmove test test3---->3 if this possible? my goal is evaluate a complet file of 4 K with a buffer of 256 bytes.
what i really need: with loops and more accurate ram create buf 20 allot test buf 20 evaluate ; s" test3 1 2" buf swap cmove test buffer 20 erase s" + . ;" buf 8 + swap cmove test test3---->3 if this possible? my goal is evaluate a complet file of 4 K with a buffer of 256 bytes.
what i really need: with loops and more accurate ram create buf 20 allot test buf c@+ evaluate ; s" test3 1 2" buf swap cmove test buffer 20 erase s" + . ;" buf 8 + swap cmove test test3---->3 if this possible? my goal is evaluate a complet file of 4 K with a buffer of 256 bytes.
Using evaluate like this does not work. ram create buf 20 allot ram create buf2 20 allot s" test 1 2" buf place s" + . ;" buf2 place buf c@+ evaluate buf2 c@+ evaluate
Having CR LF inside the buffer also works. All control bytes ( <32) are interpreted as white space.
This works for me ram create buf 20 allot ram create buf2 20 allot : test2 buf c@+ evaluate buf2 c@+ evaluate ; s" test 1 2" buf place s" + . ;" buf2 place test2 test 3
Hello Mikael is there a way to use interpret in a buffer? i mean, i have a buffer with some forth words, and some definitions. if i need several buffers to interpret, i cannot use evaluate, because some of them finish in the midle of a definition, ande aluate doesnt work. but maybe if i change the source and use interpret i can use it and following reading the newbuffer until the end... exMple: create buffer 10 allot buffer ------> ( : test 1 cr 1 + . ; )definition in two lines. twice the buffer...
Hello Mikael is there a way to use interpret in a buffer? i mean, i have a buffer with some forth words, and some definitions. if i need several buffers to interpret, i cannot use evaluate, because some of them finish in the midle of a definition, ande aluate doesnt work. but maybe if i change the source and use interpret i can use it and following reading the newbuffer until the end... exMple: create buffer 10 allot buffer ------> ( : test 1 cr 1 + . ; )definition in two lines. buffer evaluate doesnt...
Hello Mikael is there a way to use interpret in a buffer? i mean, i have a buffer with some forth words, and some definitions. if i need several buffers to interpret, i cannot use evaluate, because some of them finish in the midle of a definition, ande aluate doesnt work. but maybe if i change the source and use interpret i can use it and following reasing the newbuffer until the end... exMple: create buffer 10 allot buffer ------> ( : test 1 cr 1 + . ; )definition in two lines. buffer evaluate doesnt...
WHAT ?
Well we'll wait and see :-) Thank you Mikael. You do a great job with FF!
Yes, no P register is FF6, but I don't know if it will ever go further than alpha state.
OK Mikael. Thank you for your explanation. Does your remark about FF6 mean that there will be no P register and associated words available for all of us?
OK Mikael. Thank you for your explanation. Your does your remark about FF6 mean that there will be no P register and associated words available for all of us?
The advantage comes from the associated words, and by having a kind of consistency. Advantages compared to a variable is that the P register is multitasking safe and also re-entrant, and the associated words are more efficient than if you define them yourself. Myself I have had very little use of those P words, so in FF6 I removed them. They are mostly cute and an attempt to mimic pointers in C.
What is the advantage of using the P register instead of using a variable I can define myself? Is it because of the P register associated words or are there other advantages?
I always thought that when there were two nested loops, the index value of each loop had to be requested using I and J. But in the last example, I see that I can get the value of each index (inner and outer) using only index I, without needing to use J. I suppose they should only be used if both indices are requested within the same loop. sorry for a lot of questions, but i'm beginner forth user....
Your code does not match the result in FF. Maybe in gforth ? This is correct. What do you think it was supposed to do ? : tt 10 for i . 10 for i . next cr next ; ok tt 9 9 8 7 6 5 4 3 2 1 0 8 9 8 7 6 5 4 3 2 1 0 7 9 8 7 6 5 4 3 2 1 0 6 9 8 7 6 5 4 3 2 1 0 5 9 8 7 6 5 4 3 2 1 0 4 9 8 7 6 5 4 3 2 1 0 3 9 8 7 6 5 4 3 2 1 0 2 9 8 7 6 5 4 3 2 1 0 1 9 8 7 6 5 4 3 2 1 0 0 9 8 7 6 5 4 3 2 1 0 ok
Your code does not match the result. This is correct. What do you think it was supposed to do ? : tt 10 for i . 10 for i . next cr next ; ok tt 9 9 8 7 6 5 4 3 2 1 0 8 9 8 7 6 5 4 3 2 1 0 7 9 8 7 6 5 4 3 2 1 0 6 9 8 7 6 5 4 3 2 1 0 5 9 8 7 6 5 4 3 2 1 0 4 9 8 7 6 5 4 3 2 1 0 3 9 8 7 6 5 4 3 2 1 0 2 9 8 7 6 5 4 3 2 1 0 1 9 8 7 6 5 4 3 2 1 0 0 9 8 7 6 5 4 3 2 1 0 ok
You need J when you in the inner loop want to use the index of the outer loop. : test3 10 0 do 10 0 do ." i" ii . ." j" j . loop cr loop ; ok test3 i0 j0 i1 j0 i2 j0 i3 j0 i4 j0 i5 j0 i6 j0 i7 j0 i8 j0 i9 j0 i0 j1 i1 j1 i2 j1 i3 j1 i4 j1 i5 j1 i6 j1 i7 j1 i8 j1 i9 j1 i0 j2 i1 j2 i2 j2 i3 j2 i4 j2 i5 j2 i6 j2 i7 j2 i8 j2 i9 j2 i0 j3 i1 j3 i2 j3 i3 j3 i4 j3 i5 j3 i6 j3 i7 j3 i8 j3 i9 j3 i0 j4 i1 j4 i2 j4 i3 j4 i4 j4 i5 j4 i6 j4 i7 j4 i8 j4 i9 j4 i0 j5 i1 j5 i2 j5 i3 j5 i4 j5 i5 j5 i6 j5 i7 j5 i8 j5...
also : tt 10 for i . 10 for i . next cr next ; ok tt 10 10 9 8 7 6 5 4 3 2 1 0 9 10 9 8 7 6 5 4 3 2 1 0 8 10 9 8 7 6 5 4 3 2 1 0 7 10 9 8 7 6 5 4 3 2 1 0 6 10 9 8 7 6 5 4 3 2 1 0 5 10 9 8 7 6 5 4 3 2 1 0 4 10 9 8 7 6 5 4 3 2 1 0 3 10 9 8 7 6 5 4 3 2 1 0 2 10 9 8 7 6 5 4 3 2 1 0 1 10 9 8 7 6 5 4 3 2 1 0 0 10 9 8 7 6 5 4 3 2 1 0 ok
yes but normally in nested loop i used: qq 10 0 do Jx . 10 0 do I x . loop cr loop ; that is working well but if i make ww 10 0 do Ix . 10 0 do Ix . loop cr loop ; also it works... then why you need Jx? qq 10 0 do i . 10 0 do i . loop cr loop ; \ tested on my ipad swiftforth \ but also checked in my scamp ok qq 0 0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1 2 3 4 5 6 7 8 9 4 0 1 2 3 4 5 6 7 8 9 5 0 1 2 3 4 5 6 7 8 9 6 0 1 2 3 4 5 6 7 8 9 7 0 1 2 3 4 5 6 7 8 9 8 0 1 2 3 4...
yes but normally in nested loop i used: qq 10 0 do Jx . 10 0 do I x . loop cr loop ; that is working well but if i make ww 10 0 do Ix . 10 0 do Ix . loop cr loop ; also it works... then why you need Jx? qq 10 0 do i . 10 0 do i . loop cr loop ; \ tested on my ipad swiftforth \ but also checked in my scamp ok qq 0 0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1 2 3 4 5 6 7 8 9 4 0 1 2 3 4 5 6 7 8 9 5 0 1 2 3 4 5 6 7 8 9 6 0 1 2 3 4 5 6 7 8 9 7 0 1 2 3 4 5 6 7 8 9 8 0 1 2 3 4...
yes but normally in nested loop i used: qq 10 0 do Jx . 10 0 do I x . loop cr loop ; that is working well but if i make ww 10 0 do Ix . 10 0 do Ix . loop cr loop ; also it works... then why you need Jx? qq 10 0 do i . 10 0 do i . loop cr loop ; ok qq 0 0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1 2 3 4 5 6 7 8 9 4 0 1 2 3 4 5 6 7 8 9 5 0 1 2 3 4 5 6 7 8 9 6 0 1 2 3 4 5 6 7 8 9 7 0 1 2 3 4 5 6 7 8 9 8 0 1 2 3 4 5 6 7 8 9 9 0 1 2 3 4 5 6 7 8 9 ok
curiously if i use only i . the nested loop runs ok........ Why ? That is normal. I accesses the current loop index, J the outer loop index, K 2 levels up.
curiously if i use only i . the nested loop runs ok........
oh oh totally true, i had a wrong idea. really i is inner loop and j is outer loop. thank you again.....
gforth Gforth 0.7.9_20250321 Authors: Anton Ertl, Bernd Paysan, Jens Wilke et al., for more type `authors' Copyright © 2025 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html> Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license' Type `help' for basic help : test1 10 0 do ." i" i . 10 0 do ." j" j . loop cr loop ; ok test1 i0 j0 j0 j0 j0 j0 j0 j0 j0 j0 j0 i1 j1 j1 j1 j1 j1 j1 j1 j1 j1 j1 i2 j2 j2 j2 j2 j2 j2 j2 j2 j2 j2 i3 j3...
(a) is correct. You need to think about what the function of the word J is. J gets you the value of the index of the outer loop.
hello , i use i and jin the for next loop and ix and jx in the do loop: I checked these words: test1 10 0 do ." i " ix . 10 0 do ."j" jx . loop loop ; and doesnt work but (a) test1 10 0 do ." i" ix . 10 0 do ." j" ix. loop loop ; it works! (b) (a) : i0 j0 j0 j0 j0 j0 j0 j0 j0 j0 j0 i1 j1 j1 j1 j1 j1 j1 j1 j1 j1 j1 i2 j2 j2 j2 j2 j2 j2 j2 j2 j2 j2 i3 j3 j3 j3 j3 j3 j3 j3 j3 j3 j3 i4 j4 j4 j4 j4 j4 j4 j4 j4 j4 j4 i5 j5 j5 j5 j5 j5 j5 j5 j5 j5 j5 i6 j6 j6 j6 j6 j6 j6 j6 j6 j6 j6 i7 j7 j7 j7 j7 j7 j7...
hello , i use i and jin the for next loop and ix and jx in the do loop: I checked these words: test1 10 0 do ." i " ix . 10 0 do ."j" jx . loop loop ; and doesnt work but (a) test1 10 0 do ." i" ix . 10 0 do ." j" ix. loop loop ; it works! (b) (a) : i0 j0 j0 j0 j0 j0 j0 j0 j0 j0 j0 i1 j1 j1 j1 j1 j1 j1 j1 j1 j1 j1 i2 j2 j2 j2 j2 j2 j2 j2 j2 j2 j2 i3 j3 j3 j3 j3 j3 j3 j3 j3 j3 j3 i4 j4 j4 j4 j4 j4 j4 j4 j4 j4 j4 i5 j5 j5 j5 j5 j5 j5 j5 j5 j5 j5 i6 j6 j6 j6 j6 j6 j6 j6 j6 j6 j6 i7 j7 j7 j7 j7 j7 j7...
How did you define J for the FOR NEXT? You cannot use J defined for DO LOOP in the FOR NEXT LOOP.
It is difficult to answer a question if you do not show the real code that you are using. If you use Ix then write it in the code. For me the do loop works just fine on the scamp 3e. : test1 10 0 do ." i" ii . 10 0 do ." j" j . loop cr loop ; ok i0 j0 j0 j0 j0 j0 j0 j0 j0 j0 j0 i1 j1 j1 j1 j1 j1 j1 j1 j1 j1 j1 i2 j2 j2 j2 j2 j2 j2 j2 j2 j2 j2 i3 j3 j3 j3 j3 j3 j3 j3 j3 j3 j3 i4 j4 j4 j4 j4 j4 j4 j4 j4 j4 j4 i5 j5 j5 j5 j5 j5 j5 j5 j5 j5 j5 i6 j6 j6 j6 j6 j6 j6 j6 j6 j6 j6 i7 j7 j7 j7 j7 j7 j7 j7...
in the rest of forths the firts way is the correct, using i and j, not using always i. the question is why when i use i and j, the double loop doesnt work well?
So what was your problem ?
It does not work because the Scamp has used I for the FOR NEXT. Defining I again for DO LOOP is not allowed in FlashForth. So, in Scamp I can only be used by FOR NEXT, there I is just an alias for R@. I asked John not to do that, but he did, so now there is this mess with I and DO LOOP.
really in the loop do loop i use the index Ix and Jx , in this way ther is no interference with the i and j of the for next......
I checked these words: test1 10 0 do ." i " i . 10 0 do ."j" j . loop loop ; and doesnt work but test1 10 0 do ." i" i . 10 0 do ." j" i . loop loop ; it works! also test2 10 for ." i" i . 10 for ." j"j . next next ; doesnt works but test2 10 for ." i" i . 10 for ." j" i . next next ; it works that is not standard at all... is it normal?
There is a small trick to get 1536 ($600) bytes of extra ram on the Scamp. You can use the flash buffer in ram to store data as long as you do not attempt to write anything to flash. Just be sure to empty the flash buffer with IFLUSH before using the buffer. With the latest Scamp version the buffer starts at $84a.
That kind of use looks fine to me. Mileage may vary. Do you mean that "array buffer u cmove" does not keep the data in flash after a power cycle ?
That kind of use looks fine to me. Mileage may vary. Do you mean that "array buffer u cmove" keep the data in flash after a power cycle ?
yes, i know. mi idea was flash create buffer 4096 allot ram create array 1024 allot array buffer u cmove \ maybe to much wear? i only use it time by time. i want to use for saving data to external memory system. but maybe is not good idea. what do you think about: buffer r| variable x : test 1 1 + . ; : test2 2 2 * . ; | ; \ r| parse multiline and have my data in text file. \ r| ( text -- addr u ) then i have my data in the flash word buffer. buffer array place \ my data in ram or buffer ext-memory...
yes, i know. mi idea was flash create buffer 4096 allot ram create array 1024 allot array buffer u cmove \ maybe to much wear? i only use it time by time. i want to use for saving data to external memory system. but maybe is not good idea. what do you think about: buffer r| variable x : test 1 1 + . ; : test2 2 2 * . ; | ; \ r| parse multiline and have my data in text file. r| ( text -- addr u ) then i have my data in the flash word buffer. buffer array place \ my data in ram or buffer ext-memory...
yes, i know. mi idea was flash create buffer 4096 allot ram create array 1024 allot array buffer u cmove \ maybe to much wear? i only use it time by time. i want to use for saving data to external memory system. but maybe is not good idea. what do you think about: buffer r| variable x : test 1 1 + . ; : test2 2 2 * . ; | ; \ r| parse multiline and have my data in text file then i have my data in the flash word buffer. buffer array place \ my data in ram or buffer ext-memory save! \ save! is a user...
By the way. If you write your code so that the ram buffer will flush to flash for each cell or byte, it will quickly wear out the flash, since for each char/cell the whole 1 kbyte block is erased and rewritten.. A buffer in flash sounds suspect to me. Flash data should really contain just static or almost static data.
When writing data to flash, the data is gathered in a aligned 1 Kbyte ram buffer (Scamp). That buffer is written to flash if it gets full, or if 300 milliseconds has passed after the last write to flash. The timeout is handled inside PAUSE by calling IFLUSH. So if you call PAUSE often like the normal interpreter does, the data should find it's way into flash. Just now I tried it on a Scamp2e and it works just fine. flash create array 100 allot ram 1234 array ! \ Wait for 300 ms before disconnecting...
i want to create an array in flash flash create buffer 1024 allot ram then i want to insert data inside, with cmove, accept etc.. it works well in my code but, after a reset, the data is lost. what is the way to do it and don't lost the data?
i have the version 1.7.4 for AT commands. and also the esp-link for the serial bridge and bluetooth managements. i have not tried yet the connections https with this one. now i'm working with a file system manager for scamp3e. if you want to check, the url for esp-link is: https://aceindy.github.io/esp-link/ the link doesn't works on safari browser.
i have the version 1.7.4 for AT commands. and also the esp-link for the serial bridge and bluetooth managements. i have not tried yet the connections https with this one. now i'm working with a file system manager for scamp3e. if you want to check, the url for esp-link is: https://aceindy.github.io/esp-link/
Pere, Have you ever updated the ESP01's firmware to the latest version? If so, could you give me the URL where I can download it? I'll try to establish a secure connection. Cheers, Jan
It should work using the debugger USB port (unless you cut some connections on the board). Did you check the instructions in the board User Guide about the serial CDC connection.
@oh2aun Hi Mikael, thank you for your advice. I have modified p18fxxk42.inc as suggested. But I still cannot get the OK prompt using the following combination connecting a PC. 1. debugger USB port 2. RC2 / RC3 connected to a USB FT232 (RX/TX/GND); power from the debugger USB 3. RB0 / RB3 connected to a USB FT232 (RX/TX/GND); power from the debugger USB 4. RD0 / RD1 connected to a USB FT232 (RX/TX/GND); power from the debugger USB
These config changes could work. I do not have the board. // Define if USB or which UART is used for the operator task // 0=USB 1=UART1 2=UART2 3=UART3 #define OPERATOR_UART 2 #define WANT_UART2 ENABLE // ENABLE or DISABLE CONFIG FEXTOSC = OFF CONFIG RSTOSC = HFINTOSC_64MHZ CONFIG BOREN = ON CONFIG BORV = VBOR_2P85 ; Define UART2 TX pin #if WANT_UART2 == ENABLE #define TX2_TRIS TRISD #define TX2_ANSEL ANSELD #define TX2_BIT 0 #define TX2_PPS RD0PPS #define TX2_LAT LATD #define TX2_CODE 0x16 ; Define...
Do you have a problem ? At least the UART pins have to be configured to match the nano board design. Have you done that ?
Had anybody compiled and run successfully using the curiosity nano PIC18F47K42 board ?
John has made a small copy-paste error in the USB descriptor. I asked him to fix it.
Hi Mikael, John has updated the scamp firmware and I've just tried it, but unfortunately the USB problem on windows persists. Regards, Stefan.
Great, thanks Mikael.
PIC24: In endpoint size 8 for Windows
Yes, there seems to be a problem with windows. It refuses to handle different sizes of in(16) and out(8) end points. Works fine on Linux and I suppose on OSX since John is an Apple guy. I will update the end points to be the same size.
Hi, I've updated my scamp boards with the latest Udamonic firmware, but Windows 10/11 is unable to detect the USB-CDC and returns Unknown USB Device (Invalid configuration descriptor). Rolling back to the previous Scamp3 release works fine. I have no trouble running the latest version firmware on Linux. Could this be a windows-only issue with the latest FlashForth release?
Hi, I've updated my scamp boards with the latest Udamonic firmware, but Windows 10/11 is unable to detect the USB-CDC and returns Unknown USB Device (Invalid configuration descriptor). Rolling back to the previous Scamp3 release works fine. I have no trouble running the previous version firmware on Windows. Could this be an issue with the latest FlashForth release?
I have checked every word en the stack behavior is as it should. In my test program the stack is in balance!
I have checked every word en the stack behavior is as it should. In my test program the stack is in balance!
Is your data stack balanced? Does it grow or shrink?
Using the code below, I'm trying to connect an MCU6050 to the Scamp3. At first, the code seems to work. The I2C clock speed is reduced. But after reading the sensor a few times, the program hangs, or the I2C is broken. With the test program, I call the MCU, delete the result, and print a dot. But after calling the program about 15 times, the program stops. I've also written test code for the Arduino Uno, and it runs perfectly, without the system hanging. Include also the basic procedure arduino to...
PIC18: terminal in background task
i tried yesterday but not communication with METAR. NEITHER inmanual mode. i think that firmware 1.7.4 doesnt allow the https protocol.next week i will check if the esp-link firmware allow me the protocol. another solution is to flash a personal software via arduino ide, to setup the wifi and send the data to serial,port. But you need C code. and im not sure is it works.
I have a 1 MB version AT+GMR AT version:1.7.4.0(Jul 8 2020 15:53:04) SDK version:3.0.5-dev(52383f9) compile time:Aug 28 2020 14:37:33 But after testing some commands I dont have the posiblity to connect with fftps. Do you have wordked woth fftps, or upgrading the firmware? An other solution is to flash a simple arduino code into it, and when it receiveices a "1" it gives back the data of the ISS, and for example if it receive a "2" it gives back the METAR data. On this moment I stock in the further...
ohh I will try soon. its a kind of forget for testing words....
PIC24: transient workaround
I though about a solution to make older versions of FF to work with the transient feature. Here the transient words are located below the $8000 flash real address. : transient ( size -- ) flash latest @ align here >r >r ( size ) aligned $8000 pfl + swap - dp ! latest @ , here $2081 , latest ! r> , r> , ram ;
I though about a solution to make older version of FF to work with the transient feature. There the transient words are located below the $8000 flash real address. : transient ( size -- ) flash latest @ align here >r >r ( size ) aligned $8000 pfl + swap - dp ! latest @ , here $2081 , latest ! r> , r> , ram ;
after some investigation it seems that esp01 doesnt support https. you will need a model with at less 1 or 2 MB. maybe you can chaeck with the firmware esp-link.
these days im on relax days , south of France, until next wednesday. then i will check your code. regarding esp01 firmware there are differents versions. I use version 1.74, uploaded with esptools , also the esp-link is available and programmable as ap sta or both.
these days im on relax days , south of France, until next wednesday. then i will check your code. regarding esp01 firmware there are differents versions. I use version 1.74, uploaded with arduino IDE , also the esp-link is available and programmable as ap sta or both.
Hello Pere, I found out that my ESP01 is not able to handle https, a lot of things I have planned are not working, when calling, for example for METAR data the http connection is redirected to https. Is there a way to flash other software on the esp01 to get it working, or should I switch to the ESP32? This is my METAR call: : metar ( --- ) s' AT+CIPSTART="TCP","aviationweather.gov",80' sendcommand 3000 ms s' AT+CIPSEND=99' sendcommand 500 ms s' GET /api/data/metar?ids=EHRD&format=json HTTP/1.1'...
I have got time to try but, not working. but yor solution 1 day ago with abort is good option for me. i checked and is going quit well, even you can send messages from one to another. thank you a lot for all your help.. the echo in putty terminal is because i forgot remove the echo in setup
I have got time to try but, not working. but yor solution 1 day ago with abort is good option for me. i checked and is going quit well, even you can send messages from one to another. thank you a lot for all your help..
i tried in a very similar way and also not working. i find a code that if a i write code in term and enter nothing but when i write code in wifi and enter then execute the term and when do enter in term then execute in wifi.......? after that in becomes little crazy. i have some new idea, but i can't try until tomorrow.....maybe not possible....
I tried a few hours to get the background io-switch to work, but it did not want to. Giving the >terminal or >wifi from the currently active port works. Giving a command to the BG task to make switch using a global variable works. But not with rx1? and rxu? . -wifi marker -wifi : to-wifi ['] rx1 operator 'key his ! ['] rx1? operator 'key? his ! ['] tx1 operator 'emit his ! ; : to-term ['] rxu operator 'key his ! ['] rxu? operator 'key? his ! ['] txu operator 'emit his ! ; 0 40 40 0 task: io-switch-task...
I tested a bit the background interpreter that uses ABORT. It seems to work quite well, except for the multitasking words which are hard coded to only run from the operator task. These are TASK: TINIT SINGLE END RUN TASKS. Hopefully all other words can be executed in the background and operator tasks in the interpretation state. When compiling new definitions or appending data to the dictionary only one of the terminal at a time can be used. There is only one dictionary so if two tasks write to it...
In my projects, I use the ESP01 in two different modes: 1. Transparent mode. Basically, I use the ESP-Link firmware and use the ESP01 without AT commands, as if it were any UART. I explain this in the Udamonic group. 2. AT mode. With AT firmware, as is the case with the ISS. To preprogram it, I use the TERM program (see attached photo). You can find it in Udamonic, in the serial communications section. Once TERM is running, I enter the commands: AT --> OK AT+CIPMODE=1 --> OK AT+CIPMUX=0 --> OK AT+CWJAP="router","pasw"...
In my projects, I use the ESP01 in two different modes: 1. Transparent mode. Basically, I use the ESP-Link firmware and use the ESP01 without AT commands, as if it were any UART. I explain this in the Udamonic group. 2. AT mode. With AT firmware, as is the case with the ISS. To preprogram it, I use the TERM program (see attached photo). You can find it in Udamonic, in the serial communications section. Once TERM is running, I enter the commands: AT --> OK AT+CIPMODE=1 --> OK AT+CIPMUX=0 --> OK AT+CWJAP="router","pasw"...
Hello Pere, What is this "I have the esp01 already preprogrammed to connect to my router" I'm very curious to know what and how you did that! Maybe I can learn something from that. And why is it important to set the baud rate to 9600 baud? Cheers Jab