roboforum.ru

Технический форум по робототехнике.

работа с String in CVAVR

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

работа с String in CVAVR

Сообщение chinga » 27 сен 2011, 11:33

Здравствуйте!
помогите вот с такой проблемой)
я с терминала пишу и отправляю слово(из нескольких букв) и это должно выводиться на ЛСД дисплее, получается с char, но с string не выходит.
Код: Выделить всёРазвернуть
#include <mega32.h>
#include <delay.h>
#include <stdio.h>
#include <string.h>

#include <alcd.h>
#asm
   .equ __lcd_port=0x12; PORTB   
#endasm     

void main(void)
{
int k = 0;
int n = 0;

PORTA=0x00;
DDRA=0x00;

PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

PORTD=0x00;
DDRD=0xFF;

UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

   
    lcd_init( 16 );               
    lcd_clear( );                 
    lcd_gotoxy( 4,0 );             
    lcd_putsf( "LCD 16x02" );     
    lcd_gotoxy( 0,1 );           
    lcd_putsf( "CodeVision1.25.4" );
    delay_ms(1000);
    lcd_clear();


while (1){
char asd; 
   
    while(UCSRA.7==1){
        asd = UDR;
       
        if(asd == 'q'){   
            PORTC = 0b00000001;
            lcd_gotoxy( k, n );             
            lcd_putsf("q");
            k++;
        }
        if(asd[0] == 'w'){
            PORTC = 0b00000010;
            lcd_gotoxy( k, n );             
            lcd_putsf("w");
            k++;           
        }                       
        if(asd[0] == 'e'){       
            PORTC = 0b00000100;
            lcd_gotoxy( k,n );             
            lcd_putsf("e");     
            k++;
        }
    }   
}
}

как выводить string?
chinga
 
Сообщения: 203
Зарегистрирован: 24 дек 2008, 17:55
Откуда: Актюбинск

Re: работа с String in CVAVR

Сообщение Роботов » 27 сен 2011, 12:28

Можно так:
1. Принимаете посылку из нескольких символов.
2. Записываете посылку в некий массив.
3. Выводите из массива посимвольно на дисплей.
Аватара пользователя
Роботов
 
Сообщения: 14
Зарегистрирован: 06 сен 2011, 08:16
Откуда: Московская обл.
ФИО: Сергей

Re: работа с String in CVAVR

Сообщение chinga » 27 сен 2011, 13:19

ну теория как бы понятно) вот как реализовать)
chinga
 
Сообщения: 203
Зарегистрирован: 24 дек 2008, 17:55
Откуда: Актюбинск

Re: работа с String in CVAVR

Сообщение HarryStar » 27 сен 2011, 13:26

А что не выходит-то? Все отлично работает и со строками.

Создаете массив типа char string_from_terminal[100]; делаете счетчик (например k)с 0 и поступающие символы пихаете в массив string_from_terminal[k++] = asd; lcd_putchar(asd); lcd_gotoxy можно не делать, он сам по умолчанию сдвигает текущее знакоместо. В string_from_terminal у вас получается введенная с терминала строка. Если вы ее где-то собрались использовать, то нужно закрыть ее нулем string_from_terminal[k]=0;

Добавлено спустя 1 минуту 9 секунд:
почти так же как у вас, изменения то минимальны
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР


Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8