www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

LPC1343 - UART - AT commands

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
jancek
Neznanec
Neznanec



Pridružen-a: Ned 05 Feb 2017 14:08
Prispevkov: 3
Aktiv.: 0.03

PrispevekObjavljeno: Ned Feb 05, 2017 5:12 pm    Naslov sporočila:  LPC1343 - UART - AT commands Odgovori s citatom

Izdelujem program v C-ju, kateri naj bi ob zvonjenju telefona (Siemens M35) poslal nazaj ukaze AT.
Uporabljam uart.c example
http://docs.lpcware.com/lpcopen/v1.03/l...


Trenutno mi je uspelo da LPC prejme ukaz RING in pošlje nazaj ukaz AT^SCNI
AT^SCNI je ukaz za preverjanje klicateljeve številke in telefon vrne dolgo informacijo a le delček te je kot številka.
---------------------------------------------------------------------------------------------------------------------
Koda:
const char inst1[] = "AT^SCNI";

if(key[0] == 'R' && key[1] == 'I' && key[2] == 'N' && key[3] == 'G')
{
Chip_UART_SendRB(LPC_USART, &txring, inst1, sizeof(inst1) - 1);
}

---------------------------------------------------------------------------------------------------------------------
Ta del se lepo izvede in je tudi viden preko HyperTerminala....

Težava nastane ko želim pod IF nadaljevati s telefonsko številko...
V tem primeru mi v IF stavku podpira 8 mestno številko npr:12345678
A če je dolžina številke 9 mest se if ne izvede...
---------------------------------------------------------------------------------------------------------------------
Koda:
const char inst2[] = "OPEN_DOOR";

if(key[0] == '1' && key[1] == '2' && key[2] == '3' && key[3] == '4' && key[4] == '5' && key[5] == '6' && key[6] == '7' && key[7] == '8')
{
Chip_UART_SendRB(LPC_USART, &txring, inst2, sizeof(inst2) - 1);
}

---------------------------------------------------------------------------------------------------------------------

Kakšna ideja kako bi spremenil program????




CELOTEN PROGRAM:
---------------------------------------------------------------------------------------------------------------------
Koda:

#include "chip.h"
#include "board.h"
#include "string.h"

STATIC RINGBUFF_T txring, rxring;

#define UART_RB_SIZE 64

static uint8_t rxbuff[UART_RB_SIZE], txbuff[UART_RB_SIZE];

const char inst1[] = "AT^SCNI";
const char inst2[] = "OPEN_DOOR";

void UART_IRQHandler(void)
{
Chip_UART_IRQRBHandler(LPC_USART, &rxring, &txring);
}

int main(void)
{
uint8_t key[64];

Board_Init();
Board_UART_Init();

Chip_UART_Init(LPC_USART);
Chip_UART_SetBaud(LPC_USART, 115200);
Chip_UART_ConfigData(LPC_USART, (UART_LCR_WLEN8 | UART_LCR_SBS_1BIT));
Chip_UART_SetupFIFOS(LPC_USART, (UART_FCR_FIFO_EN | UART_FCR_TRG_LEV2));
Chip_UART_TXEnable(LPC_USART);

RingBuffer_Init(&rxring, rxbuff, 1, UART_RB_SIZE);
RingBuffer_Init(&txring, txbuff, 1, UART_RB_SIZE);

Chip_UART_IntEnable(LPC_USART, (UART_IER_RBRINT | UART_IER_RLSINT));

NVIC_SetPriority(UART0_IRQn, 1);
NVIC_EnableIRQ(UART0_IRQn);


while (1)
{
Chip_UART_ReadRB(LPC_USART, &rxring, key, 32);

if(key[0] == 'R' && key[1] == 'I' && key[2] == 'N' && key[3] == 'G')
{
Chip_UART_SendRB(LPC_USART, &txring, inst1, sizeof(inst1) - 1);
}

if(key[0] == '1' && key[1] == '2' && key[2] == '3' && key[3] == '4' && key[4] == '5' && key[5] == '6' && key[6] == '7' && key[7] == '8')
{
Chip_UART_SendRB(LPC_USART, &txring, inst2, sizeof(inst2) - 1);
}


NVIC_DisableIRQ(UART0_IRQn);
Chip_UART_DeInit(LPC_USART);

return 1;
}
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Ned Feb 05, 2017 5:41 pm    Naslov sporočila:   Odgovori s citatom

Za lažje delo si poglej to knjižnico.

https://majerle.eu/projects/gsm-at-commands-parser-for-embedded-systems

Precej lažje bos implementiral tudi kaksne druge featurje.

_________________
Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3222
Aktiv.: 33.19

PrispevekObjavljeno: Pon Feb 06, 2017 12:57 pm    Naslov sporočila:   Odgovori s citatom

Poglej tudi tole
http://e.pavlin.si/2016/06/20/source-code-generator-for-command-line-interpreter-cli/

_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group