|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
jancek Neznanec
Pridružen-a: Ned 05 Feb 2017 14:08 Prispevkov: 3 Aktiv.: 0.03
|
Objavljeno: Ned Feb 05, 2017 5:12 pm Naslov sporočila: LPC1343 - UART - AT commands |
|
|
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 |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.21 Kraj: Črnomelj
|
|
Nazaj na vrh |
|
|
mosqito Član
Pridružen-a: Čet 07 Apr 2016 23:22 Prispevkov: 3234 Aktiv.: 33.08
|
|
Nazaj na vrh |
|
|
|
|
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: 69 dni
Powered by phpBB © 2001, 2005 phpBB Group
|