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.