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.
