This is great!

Over the past few days since you've sent this post I have purchased a
prepaid gsm sim-card for use with my GBoard (original, non-pro version,
http://imall.iteadstudio.com/im120411004.html ). I will try using TCP over
GPRS (
http://vsblogs.wordpress.com/2013/11/28/tcp-connection-over-gprs-using-sim900-and-at-commands/)
as soon as I get the time.

Matthias, I have been translating the untranslated comments to English. I
can post my tcp example for a sim900-test.frt file soon enough. My
sourceforge.net username is "lowfatcomputing" btw.

Regards,

Andreas Wagner



On Sat, May 17, 2014 at 11:21 AM, Абдрахимов Илья <ily...@inbox.ru> wrote:

> Hi!
> Please forgive me for not knowing the English language! Forced to use
> the computer translator. Want to offer for consideration a small library
> to work with the controller GSM/GPRS SIM900, which is located on the
> module GBoard Pro http://imall.iteadstudio.com/im130514001.html .
>
>
> \
> \ sim900.f
> \ ~ilya
> \ 12.02.2014
> \ SIM900_TXD - PH0
> \ SIM900_RXD - PH1
> \ SIM900_RST - PL2
> \ SIM900_PWR - PL3
>
>
> \ Для начала общения с sim900 надо выдать в порт "AT"
>
> marker =sim900=
> \ USART2
> &214 constant UDR2    \ USART I/O Data Register
> &208 constant UCSR2A    \ USART Control and Status Register A
>    $80 constant UCSR2A_RXC2 \ USART Receive Complete
>    $40 constant UCSR2A_TXC2 \ USART Transmitt Complete
>    $20 constant UCSR2A_UDRE2 \ USART Data Register Empty
>    $10 constant UCSR2A_FE2 \ Framing Error
>    $08 constant UCSR2A_DOR2 \ Data overRun
>    $04 constant UCSR2A_UPE2 \ Parity Error
>    $02 constant UCSR2A_U2X2 \ Double the USART transmission speed
>    $01 constant UCSR2A_MPCM2 \ Multi-processor Communication Mode
> &209 constant UCSR2B    \ USART Control and Status Register B
>    $80 constant UCSR2B_RXCIE2 \ RX Complete Interrupt Enable
>    $40 constant UCSR2B_TXCIE2 \ TX Complete Interrupt Enable
>    $20 constant UCSR2B_UDRIE2 \ USART Data register Empty Interrupt Enable
>    $10 constant UCSR2B_RXEN2 \ Receiver Enable
>    $08 constant UCSR2B_TXEN2 \ Transmitter Enable
>    $04 constant UCSR2B_UCSZ22 \ Character Size
>    $02 constant UCSR2B_RXB82 \ Receive Data Bit 8
>    $01 constant UCSR2B_TXB82 \ Transmit Data Bit 8
> &210 constant UCSR2C    \ USART Control and Status Register C
>    $C0 constant UCSR2C_UMSEL2 \ USART Mode Select
>    $30 constant UCSR2C_UPM2 \ Parity Mode Bits
>    $08 constant UCSR2C_USBS2 \ Stop Bit Select
>    $06 constant UCSR2C_UCSZ2 \ Character Size
>    $01 constant UCSR2C_UCPOL2 \ Clock Polarity
> &212 constant UBRR2    \ USART Baud Rate Register  Bytes
>
> &102  constant USART2__RXAddr \ USART2, Rx Complete
>
>
> &258 constant PORTH    \ PORT H Data Register
> &267 constant PORTL    \ PORT L Data Register
> 250 constant rbufsize    \ размер буфера
>
> PORTH 0 portpin: SIM900_RXD \
> PORTH 1 portpin: SIM900_TXD \
> PORTL 2 portpin: SIM900_RST \
> PORTL 3 portpin: SIM900_PWR \
>
> rbufsize buffer: rx-buf    \ Приёмный буфер / Receive buffer
> rbufsize buffer: tx-buf    \
> variable b-count    \ кол-во принятых байт / The number of bytes received
> variable cr-flag        \ флаг конца строки / the flag of the end of the
> line
>
>
> \ Включаем/выключаем питание / Included on/off power
> : sim900-pwr
> SIM900_PWR low
> 100 ms
> SIM900_PWR high
> 1000 ms
> SIM900_PWR low
> ;
>
> \ Ини
> : usart2-init ( n -- ) \ Где n - константа скорости COM-порта / Where n
> is the rate constant of the COM port
> UBRR2 c!    \
> [ UCSR2B_RXCIE2     \ Прерывение по получению символа
>    UCSR2B_RXEN2     \ Прием вкл.
>    UCSR2B_TXEN2     \ Передача вкл.
> or or ] literal UCSR2B c!
> ;
>
> \ Начинаем писать в буфер с начала
> : b2begin rx-buf rbufsize erase 0 b-count ! ;
> \ Помещаем байт в буфер
> : b2buf ( n -- ) rx-buf b-count @ + c! ;
> \  Проверяем/устанавливаем флаг конца строки
> : ?cr rx-buf b-count @ 1 cells - + @ $0a0d = cr-flag ! ;
> \ Принимаем один байт в буфер
> : 1b-rcv
> UDR2 c@
> b-count @ rbufsize <
>      if
>          b2buf 1 b-count +!
>      else
>          b2begin \ Стираем буфер и счетчик байт
>          b2buf
>      then
> ?cr
> ;
> \ Отправляем один байт / Send one byte
> : 1b-send ( n -- )
> 1000 0         \ Тупой таймаут
>      do
>      UCSR2A c@ UCSR2A_UDRE2 and
>      if leave then
> loop UDR2 c! ;
>
> : cr-send $0d 1b-send $0a 1b-send ;
>
> \ Посылаем счетную строку (RAM) / Send counting string (RAM)
> : _str-send ( adr n -- ) b2begin over + swap ?do i c@ 1b-send loop
> cr-send ;
> : str-send tx-buf asciiz> _str-send ;
>
> \ Посылаем счетную строку (FLASH) / Send counting string (FLASH)
> : fstr-send ( adr n -- ) tx-buf dup rbufsize erase imove str-send ;
>
> \ Добавить скомпилированную строку в буфер / Add compiled a string to
> the buffer
> : +txf ( adr n -- ) tx-buf +buff ;
> \ Добавить скомпилированную строку с начала буфера / Add compiled a row
> since the beginning of the buffer
> : >txf ( adr n -- ) tx-buf rbufsize erase +txf ;
>
> : +tx tx-buf +buf ;
> \ Добавить символ в буфер
> : +txc ( c -- ) tx-buf +sym ;
>
> char " constant \q
> : \" \q +txc ;
>
>
> : sim900-init
> SIM900_RXD pin_input
> SIM900_TXD pin_output
> SIM900_PWR pin_output
> SIM900_RST pin_output
> ['] 1b-rcv USART2__RXAddr int! +int    \ Устанавливаем прерывание
> ;
>
> Usage example:
>
> \ Инициализация GSM (SIM900)
> : gsm-init
> 0 cr-flag !
> b2begin
> sim900-init
> 103 usart2-init        \ Скорость 9600 / Speed  9600
> sim900-pwr        \ Включаем модуль / Power on
> 1000 ms
> s" AT+CMGF=1"  fstr-send
> s" AT+CSCS=" ( rx-tx-buf imove) >txf
> s" GSM"  +txf \"
> str-send \ tx-buf asciiz> str-send    \ Устанавливаем GSM кодировку /
> Installed GSM encoding
> s" ATE0" fstr-send    \ Убираем эхо / Remove the echo
> s" AT+CNMI=2,2,0,0,0" fstr-send    \ Сразу видим текст SMS /
> Go see text SMS
> ;
>
>
> : main
> gsm-init
> s" ATI" fstr-send 200 ms rx-buf asciiz> type cr \ Display Product
> Identification Information
> s" AT+CCLK?" fstr-send 200 ms rx-buf asciiz> type cr \ Get the value of
> the built-in clock
> ;
>
>
> The library is the word from the library strm.f
>
> \ String manipulations
> \ ~ilya
> \ 19.12.12
> marker =mystring=
> : zlen dup begin dup c@ while 1+ repeat swap - ;
> : asciiz> dup zlen ;
> : zplace ( a u buf -- ) swap over over + 0 swap c! cmove ;
> : +zplace ( a u buf -- )  asciiz> + zplace ;
> \ Добавить символ c в конец строки adr
> : +sym  ( c adr -- ) asciiz> + c! ;
>
> : +buf ( adr n adr1 -- ) +zplace ;
>
> \ Копируем строку из flash в ram
> : fmove ( f-adr r-adr n -- )
> rot swap
> dup 2/ swap over 2* - +
> over + swap
> ?do
> i @i over ! cell+
> loop
> drop
> ;
>
> : +buff ( adr n adr1 -- )  asciiz> + swap fmove ;
>
> --
> Bye!
> Илья
>
>
>
> ------------------------------------------------------------------------------
> "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
> Instantly run your Selenium tests across 300+ browser/OS combos.
> Get unparalleled scalability from the best Selenium testing platform
> available
> Simple to use. Nothing to install. Get started now for free."
> http://p.sf.net/sfu/SauceLabs
> _______________________________________________
> Amforth-devel mailing list for http://amforth.sf.net/
> Amforth-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/amforth-devel
>
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Amforth-devel mailing list for http://amforth.sf.net/
Amforth-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/amforth-devel

Reply via email to