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.

Reply via email to