реклама на сайте
подробности

 
 
> rx_buffer, как взять данные по определенному адресу
digis14
сообщение Mar 5 2007, 16:37
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 30-09-06
Пользователь №: 20 838



посылаю в uart запрос на получение номера из телефона
приходит так AT+CPBR=1+CPBR: 1,"+79xxxxxxxxx",145,""OK
и помещается в буфер,причем помещается в буфер через раз непонятно почему
работаю с cvavr и proteus
вопрос
как мне проверить что есть плюс в номере, а также длинну и поместить сам номер в переменную ,или
поместить в eeprom чтоб я его мог в нужное время отправить обратно

Сообщение отредактировал digis14 - Mar 5 2007, 16:37
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
digis14
сообщение Mar 7 2007, 14:01
Сообщение #2





Группа: Новичок
Сообщений: 8
Регистрация: 30-09-06
Пользователь №: 20 838



вот так вот сделал
Код
#include <90s2313.h>
#include <delay.h>
// Standard Input/Output functions
#include <stdio.h>

#define SIZERX 32
char arRx[SIZERX];
unsigned char posRx = 0;

interrupt [UART_RXC] void uart_rx_isr(void)
{
char data;
data=UDR;
arRx[posRx] = data;
posRx++;                              // +1 следующий регистр
if(posRx >= SIZERX)        // если posRx больше или равно SIZERX
posRx--;          
}
// Declare your global variables here

char* UART_Recv(char* pnRecv)
{
    *pnRecv = posRx;
    return arRx;
}

char szSMSRecipientNumber[15] = "+78121234567"; // в полном формате

void main(void)
{
// Declare your local variables here

PORTB=0xFF;
DDRB=0xFF;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1H=0x00;
OCR1L=0x00;
GIMSK=0x00;
MCUCR=0x00;
TIMSK=0x00;
UCR=0x18;
UBRR=0x17;
ACSR=0x80;
//===================================================================
{              
                unsigned char cp = 0;
                char nRecv = 0;
        char* pBuf = UART_Recv(&nRecv);
        if(nRecv < 12)
        {
            //DiagOut(4); // нет номера
            //continue;
        }
//        else DiagOut(nRecv+0x80);

        //unsigned char cp = 0;
        while(pBuf[cp])
        {
            if(pBuf[cp]=='O')
            {
                //DiagOut(4);
                cp = 240; // признак ошибки
                break;
            }
            if(pBuf[cp]=='B') // +CPBR
            {
                //DiagOut(0x81);
                break;
            }
            cp++;
        }
        if(cp > 128)
            //continue; // ошибка

        while(pBuf[cp])
        {
            if(pBuf[cp]=='\"' && pBuf[cp+1]=='+'/* && pBuf[cp+13]=='\"'*/)
            {
                // нашли "+
                szSMSRecipientNumber[0] = pBuf[cp+1+2]; // 8
                szSMSRecipientNumber[1] = pBuf[cp+1+1]; // 7
                szSMSRecipientNumber[2] = pBuf[cp+1+4]; // 2
                szSMSRecipientNumber[3] = pBuf[cp+1+3]; // 1
                szSMSRecipientNumber[4] = pBuf[cp+1+6]; // 0
                szSMSRecipientNumber[5] = pBuf[cp+1+5]; // 9
                szSMSRecipientNumber[6] = pBuf[cp+1+8]; // 4
                szSMSRecipientNumber[7] = pBuf[cp+1+7]; // 3
                szSMSRecipientNumber[8] = pBuf[cp+1+10]; // 6
                szSMSRecipientNumber[9] = pBuf[cp+1+9]; // 5
                szSMSRecipientNumber[10] = 0x46; // F
                szSMSRecipientNumber[11] = pBuf[cp+1+11]; // 7
                szSMSRecipientNumber[12] = 0; // EOS
                //DiagOut(0x82);
                cp = 241;
                break;
            }
            cp++;
        }
}        
//=======================================================================
while (1)
      {
      // Place your code here

      };
}

ошибка вылетает вот здесь char* pBuf = UART_Recv(&nRecv);
non-address/-constant initializer
что ему надо ?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- digis14   rx_buffer   Mar 5 2007, 16:37
- - _Bill   Цитата(digis14 @ Mar 5 2007, 16:37) посыл...   Mar 5 2007, 16:44
- - SasaVitebsk   Вопрос совершенно непонятен. 1) Длину можно посчит...   Mar 5 2007, 16:55
|- - digis14   Цитата(SasaVitebsk @ Mar 5 2007, 16:55) В...   Mar 5 2007, 17:23
- - beer_warrior   Работать с массивом как с операндом позволяет указ...   Mar 5 2007, 17:48
|- - Faradey   я бы на вашем месте смотрел с права на лево... ска...   Mar 5 2007, 19:29
- - digis14   я не так много знаю чтоб реализовать это со слов п...   Mar 5 2007, 19:42
|- - Faradey   вот так тоже можно: Код unsigned char USART0_Rx...   Mar 5 2007, 20:12
|- - Demeny   Цитата(Faradey @ Mar 5 2007, 20:12) вот т...   Mar 6 2007, 11:30
- - digis14   переписал так unsigned char rx_buffer[RX_BUF...   Mar 5 2007, 20:59
- - digis14   RE: rx_buffer   Mar 6 2007, 12:32
|- - Demeny   Цитата(digis14 @ Mar 6 2007, 12:32) да ну...   Mar 6 2007, 14:48
- - digis14   разобраться бы что это char* pBuf = UART_Recv(...   Mar 6 2007, 21:00
|- - Demeny   Цитата(digis14 @ Mar 6 2007, 21:00) ошибк...   Mar 7 2007, 09:50
- - digis14   новый вариант и причем работает Код/**************...   Mar 7 2007, 22:12


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 00:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01406 секунд с 7
ELECTRONIX ©2004-2016