Hey all, Am back on this subject. My project had some halts but is back on track.
Right now am back to SMS receiving subject. Have already reached the conclusion that I can receive more parts of message if make RX buffer bigger... Here's the relevant part of serial_hw_int_cts LIB; if (defined(SERIAL_RCVBUFSIZE) == FALSE) then const SERIAL_RCVBUFSIZE = 80 -- 64 is the default size of receive buffer end if Problem is 80 is the maximum I can use in this code (PIC16F19176). How can I get more of the received data? Here's the data I should read: +CMGL: 1,"REC READ","+351000000000",,"2022/12/08,17:10:12+00" GA6-B MODEM SMS TEST, ADC= 2.757V +CMGL: 2,"REC READ","+351.... The green part is what I can get using RX buffer at 80. My goal is to get the full line: GA6-B MODEM SMS TEST, ADC= 2.757V Any help will be appreciated. Thank you very much. Kind regards, Filipe Santos. On Sunday, December 4, 2022 at 3:53:30 PM UTC [email protected] wrote: > Hi Vasile, > > If you want to use the serial library with interrupt just check the sample > files that are created for it. I have used the library quite often without > any problems. > > Kind regards, > > Roib > > ------------------------------ > *Van:* [email protected] <[email protected]> namens flyway38 < > [email protected]> > *Verzonden:* zondag 4 december 2022 15:59 > > *Aan:* jallib <[email protected]> > *Onderwerp:* Re: [jallib] Re: Variable Table Append > Hey Vasile and Rob, > > @Vasile, > Yes, +CMGL appear in my Received[50] buffer. But not the "Test" and "OK" > parts... yet. > Am currently working on that. Will check that" > _serial_receive_interrupt_handler" to see if am able to use it (if not too > complex... some usage samples would be nice). > Thank you for your input. > > @Rob, > Have checked those LIBs, but too complex for me. > Don't have much time to interpret all that code and adapt to my code. > Any samples of usage easier to adapt? > Thank you anyways. > > Cheers, > Filipe Santos. > On Sunday, December 4, 2022 at 8:24:49 AM UTC [email protected] wrote: > > Hi Filipe, > > Nice that this works. > > As said earllier you can have a look at the bluetooth_hc05.jal library. > Some procedures and functions there perform the actions you are tryiing to > achieve. > > Kind regards, > > Rob > > > ------------------------------ > *Van:* [email protected] <[email protected]> namens flyway38 < > [email protected]> > *Verzonden:* zaterdag 3 december 2022 21:00 > > *Aan:* jallib <[email protected]> > *Onderwerp:* Re: [jallib] Re: Variable Table Append > Hi Rob, > > As said, It would be enough to get a small part; "+CMGL" then it will be > another battle to reach the message part of the SMS. > For now am finally successfully, again using "brute force" on reading > serial port: > > var byte Received[50] > > function CheckComms_CMGL() return bit is > Index = 0 > -- > while Index < 50 loop > fReturn = serial_hw_read(char) > Received[Index] = char > Index=Index+1 > end loop > -- > fRtn=FALSE > -- > for 45 using Index loop > if (Received[Index]=="+" > & Received[Index+1]=="C" > & Received[Index+2]=="M" > & Received[Index+3]=="G" > & Received[Index+4]=="L") then > fRtn=TRUE > end if > end loop > return fRtn > end function > > Anyways, am starting to get the hang of this "battle" > I think that will manage to get the message ("Test") part of this SMS > answer from the modem. > If not, will back here... :D > > Thank you all for the help. > You guys are great. > Cheers, > > Filipe Santos. > > > > On Saturday, December 3, 2022 at 7:51:27 PM UTC [email protected] wrote: > > Hi Filipe , > > I think the message is too long before OK is received since the whole > message should be stored. For a PIC16 the buffer can at most be 80 bytes. > You can use the large array library if you need a larger buffer. > > Met vriendelijke groet, > Rob Jansen > ------------------------------ > *From:* [email protected] <[email protected]> on behalf of > flyway38 <[email protected]> > *Sent:* Saturday, December 3, 2022 7:58:35 PM > *To:* jallib <[email protected]> > *Subject:* Re: [jallib] Re: Variable Table Append > > Hi Vasile, > > I want to read the answers from modem just like Hyperterminal or Termite > does. > As example: > This the AT command to question modem for new SMS received: > AT+CMGL="ALL" > In my case I know theres a SMS in memory, so modem answers to that command: > +CMGL: 1,"REC READ","+351000MyNrHere000",,"2022/12/03,18:10:22+00" > Test > > OK > Can see all this in Hyperterminal happening, but PIC doesn't get that > answer from modem... > I need to read this answer from modem, and then extract the message "Test" > part of modem answer > It would be enough to read the "+GMGL: 1" from the modem's answer.... but > no luck so far. > Thanks anyway for the input. > > Regards, > Filipe Santos > > On Saturday, December 3, 2022 at 6:41:30 PM UTC vasile wrote: > > I'm not sure if this is your case, but if you need to identify the AT > during a string reception, but prior to store the string in any buffer, I > think the library will not work as is... > > On Sat 3 Dec 2022, 7:23 PM flyway38 <[email protected] wrote: > > The oddest thing here, is it seems only my PIC doesn't pick up the answers > from the modem, except the "OK" but even these fail sometimes to get picked > up by the PIC. > I have a derived connection from that serial port using an FTDI cable > connected to my computer, and can check what is going on using the > Hyperterminal App or even the Termite App and these apps can see the > answers from the modem.... crazy stuff going on here... > > On Saturday, December 3, 2022 at 4:48:16 PM UTC flyway38 wrote: > > Hi Rob, > > Thanks for that help. > But, right now am concerned about the other acknowledge messages... "OK" > is now working good enough here. > And it seems serial_hw_int_cts LIB is not making any difference. > Maybe am not taking full advantages from it. > Cheers, > > FS > On Saturday, December 3, 2022 at 2:22:04 PM UTC [email protected] wrote: > > Hi Filipe, > > In the bluetooth_hc_05.jal library I made a function that reads a string > including OK but returns only the string (without the OK). The code is as > follows: > > -- Wait for data from the module and copy all data to the bluetooth > receive > -- buffer until 'OK' is found. If 'OK' is found the function returns TRUE. > -- The number of bytes in the receive buffer is stored in the global > variable > -- bluetooth_hc05_bytes_received and the read pointer is reset. > -- Note that 'OK' is not stored in bluetooth_hc05_bytes_received but the > -- carriage return and line feed are. > function _bluetooth_hc05_wait_and_get_data_ok() return bit is > > var dword timeout = 0 > var byte index = 0 > var byte character > var bit found_o = FALSE > var bit found_ok = FALSE > > bluetooth_hc05_bytes_received = 0 > _bluetooth_hc05_read_pointer = 0 > while (index < BLUETOOTH_HC05_RECEIVE_BUFFER_SIZE) & !found_ok & > (timeout < _bluetooth_hc05_wait_time) loop > > if _bluetooth_hc05_serial_read(character) then > bluetooth_hc05_receive_buffer[index] = character > index = index + 1 > timeout = 0 > if (character == "O") then > found_o = TRUE > elsif (character == "K") & found_o then > found_ok = TRUE > -- Bytes received is everything except for 'OK'. > bluetooth_hc05_bytes_received = index - 2 > else > -- It was not 'OK', reset. > found_o = FALSE > found_ok = FALSE > end if > end if > > timeout = timeout + 1 > _usec_delay(100) > end loop > > return found_ok > > end function > > Kind regards, > > Rob > ------------------------------ > *Van:* [email protected] <[email protected]> namens flyway38 < > [email protected]> > *Verzonden:* zaterdag 3 december 2022 15:11 > > *Aan:* jallib <[email protected]> > *Onderwerp:* Re: [jallib] Re: Variable Table Append > Hi Rob, > > Thank you for that info. > The OK answer from the modem, am already getting, but using "like brute > force" serial readings... > > function CheckComms_OK() return bit is > timer = 0 > Received[0] = "X" > Received[1] = "X" > -- > while (Received[0]!="O" | Received[1]!="K") & timer < 60_000 loop > fReturn = serial_hw_read(char) > Received[0] = char > fReturn = serial_hw_read(char) > Received[1] = char > -- > timer = timer + 1 > end loop > -- > fReturn = FALSE > -- > if (Received[0]=="O" & Received[1]=="K") then > return TRUE > else > return FALSE > end if > end function > > But other answers from the modem are still a no go. > Example: "+CMGS" from an AT+CMGS="phone nr".... > Will need this because will need to also receive SMS with this PIC. > > Will check that LIB you mentioned. > Thank you. > > Cheers, > FS > > On Saturday, December 3, 2022 at 1:43:23 PM UTC [email protected] wrote: > > Hi Filipe, Vasile, > > I would recommend using the serial libraries that work on an interrupt > basis like serial_hw_int_cts.jal. Using this library with a big enough > buffer will prevent that you miss any characters. > > I used this - using AT commands - in the libraries bluetooth_hc05.jal and > bluetooth_hc06.jal as to be able to check if an OK was received after an AT > command. > > Kind regards, > > Rob > > > > ------------------------------ > *Van:* [email protected] <[email protected]> namens vsurducan > <[email protected]> > *Verzonden:* zaterdag 3 december 2022 11:09 > > *Aan:* [email protected] <[email protected]> > *Onderwerp:* Re: [jallib] Re: Variable Table Append > Oh, understood. Reading needs to have priority. Use interrupts then...or > avoid using any delays in your actual code. > A sms has not an instant execution ( most of the time). So using low speed > transmission/reception it might be a working solution. > > On Sat, Dec 3, 2022 at 11:53 AM flyway38 <[email protected]> wrote: > > Hello Vasile, > > Am not using serial lib with interrupts. > Maybe I need to use that lib. > Current problem is GSM modem seems to acknowledge (ex: "OK") faster than > my code can read it... > A simple "AT" seems to get the "OK" faster than I can read. > And I want to get all acknowledges... to not step to next AT command > before having sure of "OK" response from the modem. > All my AT commands to send an SMS are working ok, if no checking for the > acknowledges... > Big battle here under going. :D > Thank you for your input. > > Cheers, > FS > > On Saturday, December 3, 2022 at 6:18:47 AM UTC vasile wrote: > > Fellipe, I'm curious if this will work fo you. I was never able to use the > serial library (interrupts) as is without a slip of one char in received > characters order. I've counted chars to solvethe problem.... > Depending on your GSM transciever, some delays may be needed between chars > and some longer delays between AT commands and chars. > > On Fri 2 Dec 2022, 9:25 PM flyway38 <[email protected] wrote: > > Hello Rob, > > Thank you very much. > This will help alot. > Cheers. > > FS > > On Friday, December 2, 2022 at 7:21:46 PM UTC [email protected] wrote: > > Hi Filipe, > > One correction. if you get a timeout then there is no string (or only a > partial string) so you have to check if the timer has reached the timeout > after the repeat. > > Kind regards, > > Rob > > ------------------------------ > *Van:* [email protected] <[email protected]> namens Rob CJ < > [email protected]> > *Verzonden:* vrijdag 2 december 2022 20:20 > *Aan:* [email protected] <[email protected]> > > *Onderwerp:* Re: [jallib] Re: Variable Table Append > Hi Filipe, > > Some sample code. I did not test it (or compiled it) but I assume you get > the idea. > > const word MAX_TIMEOUT = 20_000 > const byte MAX_BUFFER = 20 > const byte CR = 0x0D > const byte LF = 0x0A > > var word timer = 0 > var byte my_buffer[MAX_BUFFER] > var byte index = 0 > var byte character = 0 > > -- Read a string. > repeat > if serial_hw_data_available() then > character = serial_hw_data > my_buffer[index] = character > index = index + 1 > end if > timer = timer + 1 > _usec_delay(100) > until (index == MAX_BUFFER) | (character == CR) | (character == LF) | > (timer == MAX_TIMEOUT) > > The string is then in my_buffer (including a CR or LF). > > Kind regards, > > Rob > > > ------------------------------ > *Van:* [email protected] <[email protected]> namens flyway38 < > [email protected]> > *Verzonden:* vrijdag 2 december 2022 19:23 > *Aan:* jallib <[email protected]> > *Onderwerp:* Re: [jallib] Re: Variable Table Append > > Hi Rob, > > Thanks for your input. > Could you post some sample code please? > I think am missing some important details... > How can I define a variable buffer? > Because this seems not work: var byte received[]=""... > > Am also struggling to read my modems relies to AT commands... > It seems my code is working correctly and after sending the AT command, > the readings from serial port seems to point to characters from the sent > command... > Getting crazy here while in battle with the code... :D > Thank you very much. > > Best regards, > Filipe Santos > > On Friday, December 2, 2022 at 6:06:56 PM UTC [email protected] wrote: > > Hi Filipe, > > You just read the data from a serial port, add that to your local variable > buffer, increment an index pointer with each received character and read > until you receive either a Carriage Return or a Line Feed (one of the will > do). I normally also add a timeout to the read function so that it does not > hang when nothing is received. > > Kind regards, > > rob > > > > ------------------------------ > *Van:* [email protected] <[email protected]> namens flyway38 < > [email protected]> > *Verzonden:* vrijdag 2 december 2022 12:38 > *Aan:* jallib <[email protected]> > *Onderwerp:* [jallib] Re: Variable Table Append > > Am trying to mimic a "Read_String" from serial port. > Any ideas? > > Thank you. > > Regards, > FS > > On Friday, December 2, 2022 at 9:42:34 AM UTC flyway38 wrote: > > Hello all, > > Have searched for it but haven't found anything useful. > Need to know a good way of appending a variable table. > Starting from a MyVar[] = "", then just append data to it... > Also what happen to website: https://justanotherlanguage.org/ ? > Cannot connect to that website. > Thank you very much. > > Kind regards, > Filipe Santos. > > -- > You received this message because you are subscribed to the Google Groups > "jallib" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jallib/2251b524-7658-42f7-970b-a6817d6709e1n%40googlegroups.com > > <https://groups.google.com/d/msgid/jallib/2251b524-7658-42f7-970b-a6817d6709e1n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > -- > You received this message because you are subscribed to the Google Groups > "jallib" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jallib/37733abd-20ed-4130-8aa2-03381fb3ac1an%40googlegroups.com > > <https://groups.google.com/d/msgid/jallib/37733abd-20ed-4130-8aa2-03381fb3ac1an%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > -- > You received this message because you are subscribed to the Google Groups > "jallib" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jallib/GVXP195MB16374C5EDB5CFD44C5580F26E6179%40GVXP195MB1637.EURP195.PROD.OUTLOOK.COM > > <https://groups.google.com/d/msgid/jallib/GVXP195MB16374C5EDB5CFD44C5580F26E6179%40GVXP195MB1637.EURP195.PROD.OUTLOOK.COM?utm_medium=email&utm_source=footer> > . > > -- > You received this message because you are subscribed to the Google Groups > "jallib" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > > To view this discussion on the web visit > https://groups.google.com/d/msgid/jallib/1af55b5d-54bb-4ea7-a2d6-21574ba3ea7an%40googlegroups.com > > <https://groups.google.com/d/msgid/jallib/1af55b5d-54bb-4ea7-a2d6-21574ba3ea7an%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > -- > You received this message because you are subscribed to the Google Groups > "jallib" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jallib/bfa9ccd1-54c6-47d1-9535-8272eb0cca90n%40googlegroups.com > > <https://groups.google.com/d/msgid/jallib/bfa9ccd1-54c6-47d1-9535-8272eb0cca90n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > -- > You received this message because you are subscribed to the Google Groups > "jallib" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jallib/CAM%2Bj4qsrRDXRbaHZi8f3zPGVVje5YzHQn1yzXzQvLBE5NxD5_w%40mail.gmail.com > > <https://groups.google.com/d/msgid/jallib/CAM%2Bj4qsrRDXRbaHZi8f3zPGVVje5YzHQn1yzXzQvLBE5NxD5_w%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > -- > You received this message because you are subscribed to the Google Groups > "jallib" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jallib/6748d6c6-d1a3-4f0c-82ea-baf9410375d0n%40googlegroups.com > > <https://groups.google.com/d/msgid/jallib/6748d6c6-d1a3-4f0c-82ea-baf9410375d0n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > -- > You received this message because you are subscribed to the Google Groups > "jallib" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > > To view this discussion on the web visit > https://groups.google.com/d/msgid/jallib/25d2f2fd-6cd5-4cff-bb67-702f99abf6d3n%40googlegroups.com > > <https://groups.google.com/d/msgid/jallib/25d2f2fd-6cd5-4cff-bb67-702f99abf6d3n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > -- > You received this message because you are subscribed to the Google Groups > "jallib" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jallib/3770592d-6043-4477-97b8-979aa0cb8ec4n%40googlegroups.com > > <https://groups.google.com/d/msgid/jallib/3770592d-6043-4477-97b8-979aa0cb8ec4n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > -- > You received this message because you are subscribed to the Google Groups > "jallib" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jallib/ec83958f-0310-422c-9af7-bc8daebc7cedn%40googlegroups.com > > <https://groups.google.com/d/msgid/jallib/ec83958f-0310-422c-9af7-bc8daebc7cedn%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > -- > You received this message because you are subscribed to the Google Groups > "jallib" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jallib/e7800334-4d2b-4475-9439-a52a3a53c5a6n%40googlegroups.com > > <https://groups.google.com/d/msgid/jallib/e7800334-4d2b-4475-9439-a52a3a53c5a6n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "jallib" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jallib/329b882c-7df2-4507-8f4a-cde2b95000c4n%40googlegroups.com.
