Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 04.10.2011, 10:32   #1
CERGEI
Senior Member
 
Аватар для CERGEI
 
Регистрация: 11.07.2009
Возраст: 38
Сообщений: 526
Вес репутации: 183/46
CERGEI has a spectacular aura aboutCERGEI has a spectacular aura about
По умолчанию МСС18 преобразование строк,сборка

Вот думал что столкнул с этим в будущем и вот пришлось копаться с строках.Задача такая имеются числа ip адрес типом unsiged int.Нужно собрать строку типа "in_s3 192.168.0.76".Вот и думаю как добавлять символы в строку,посмотрел на strcpypgm2ram(добавления константных строк),но ей надо указатель в массиве где стоит 0 массива для копирования в конец.Конечно придется искать конец массива строки.Может в МСС18 поудобней функция добавления в конец строки символа.По логике вообще думаю собрать строчку в ручную,преобразовывая числа функцией itoa() и вставляя в конец строки символ через указатель.Потом уже через strcpy копировать.
Может кто предложит способ поумней.

Код:
#include <p18cxxx.h>
#include <delays.h>
#include <string.h>
#include "LCDBlocking.h"


#pragma config OSC = HS
#pragma config PWRT = ON,LPT1OSC = ON
#pragma config BOREN = OFF,PBADEN = OFF
#pragma config WDT = OFF,XINST = OFF
#pragma config FCMEN = ON
#pragma config LVP = OFF

// LCD Module I/O pins
    #define LCD_DATA0_TRIS        (TRISCbits.TRISC3)        // Multiplexed with LED6
    #define LCD_DATA0_IO        (LATCbits.LATC3)
    #define LCD_DATA1_TRIS        (TRISCbits.TRISC2)
    #define LCD_DATA1_IO        (LATCbits.LATC2)
    #define LCD_DATA2_TRIS        (TRISCbits.TRISC1)
    #define LCD_DATA2_IO        (LATCbits.LATC1)
    #define LCD_DATA3_TRIS        (TRISCbits.TRISC0)        // Multiplexed with LED3
    #define LCD_DATA3_IO        (LATCbits.LATC0)
    #define LCD_RS_TRIS            (TRISCbits.TRISC6)
    #define LCD_RS_IO            (LATCbits.LATC6)
    #define LCD_E_TRIS            (TRISCbits.TRISC7)
    #define LCD_E_IO            (LATCbits.LATC7)
    
    #define BYTE                unsigned char

void main (void)
{
    unsigned char string[]="in_s3 ";   //тест создания строки
    unsigned char string_temp[15];
    static unsigned int IP_ADDR_BYTE1=192,IP_ADDR_BYTE2=168,IP_ADDR_BYTE3=0,IP_ADDR_BYTE4=76;
    LCDInit();
    //Delay10KTCx(10);
    //memcpypgm2ram((void*)&LCDText[16],"in_s3: " sotni "        ", 15);
    strcpypgm2ram((char*)LCDText, "TCPStack VERSION");
    strcpypgm2ram((char*)LCDText, "   ON");
    LCDUpdate();
    //string[]="in_s3 ";
    itoa(IP_ADDR_BYTE1,string);
    while(1);
}
CERGEI вне форума   Ответить с цитированием
Старый 04.10.2011, 10:51   #2
IgorV
Senior Member
 
Аватар для IgorV
 
Регистрация: 25.02.2007
Адрес: всем пока
Возраст: 49
Сообщений: 4,100
Вес репутации: 1883/108
IgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant future
Отправить сообщение для IgorV с помощью Skype™
По умолчанию Re: МСС18 преобразование строк,сборка

Цитата:
Сообщение от CERGEI Посмотреть сообщение
Вот думал что столкнул с этим в будущем и вот пришлось копаться с строках.Задача такая имеются числа ip адрес типом unsiged int.Нужно собрать строку типа "in_s3 192.168.0.76".Вот и думаю как добавлять символы в строку,посмотрел на strcpypgm2ram(добавления константных строк),но ей надо указатель в массиве где стоит 0 массива для копирования в конец.Конечно придется искать конец массива строки.Может в МСС18 поудобней функция добавления в конец строки символа.По логике вообще думаю собрать строчку в ручную,преобразовывая числа функцией itoa() и вставляя в конец строки символ через указатель.Потом уже через strcpy копировать.
Может кто предложит способ поумней.
1. чем проще напишешь тем быстрее потом разберешься. И главное не запутаешься. Не надо пытаться вые.нуться на каждой строчке. Есть решение - используй.
2.И главным образом оно точно есть. Не образец конечно, потому как код индусский, но рабочий. PICDEMNET2, например, содержит ЖКИ и как раз для него IP адрес собирается. Не помню как. Может тупо печатается по октетно, но ничего не мешает также напечатать пооктетно в массив а не в ЖКИ.
3. все эти strcpy достаточно простые, но есть варианты когда ну вот чуток не так бы, ничего не мешает сделать как хочется самому, а не стараться вывернуться через стандартные функции. Там же все эти функции максимум в 5 строчек
IgorV вне форума   Ответить с цитированием
Старый 04.10.2011, 11:07   #3
CERGEI
Senior Member
 
Аватар для CERGEI
 
Регистрация: 11.07.2009
Возраст: 38
Сообщений: 526
Вес репутации: 183/46
CERGEI has a spectacular aura aboutCERGEI has a spectacular aura about
По умолчанию Re: МСС18 преобразование строк,сборка

Да я так и понял.
Что то не могу взять указатель с функции itoa(),делаю так:
Код:
char* p_string;
static unsigned int IP_ADDR_BYTE1=192;
p_string=itoa(IP_ADDR_BYTE1,string);
обижается что тип указателя не тот

Код:
C:\test_ethernet_lcd\main.c:43:Error [1131] type mismatch in assignment
Полезу в саму функцию гляну тогда....
CERGEI вне форума   Ответить с цитированием
Старый 04.10.2011, 11:20   #4
pal1222@yandex.ru
Senior Member
 
Регистрация: 30.09.2008
Сообщений: 1,531
Вес репутации: 3332/91
pal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond repute
По умолчанию Re: МСС18 преобразование строк,сборка

Цитата:
Сообщение от CERGEI Посмотреть сообщение
Да я так и понял.
Что то не могу взять указатель с функции itoa(),делаю так:
Код:
char* p_string;
static unsigned int IP_ADDR_BYTE1=192;
p_string=itoa(IP_ADDR_BYTE1,string);
обижается что тип указателя не тот

Код:
C:\test_ethernet_lcd\main.c:43:Error [1131] type mismatch in assignment
Полезу в саму функцию гляну тогда....
Это не шарп и не ждава. Объект надо создать руками: char p_string[ну, хоть 8]; кроме того, не задано основание системы, тоже "ругаться будет"
pal1222@yandex.ru вне форума   Ответить с цитированием
Старый 04.10.2011, 15:27   #5
air
Senior Member
 
Регистрация: 26.02.2007
Адрес: Moscow
Возраст: 53
Сообщений: 130
Вес репутации: 253/52
air is a jewel in the roughair is a jewel in the roughair is a jewel in the rough
Отправить сообщение для air с помощью Skype™
По умолчанию Re: МСС18 преобразование строк,сборка

А чем sprintf не нравится, например:

Код:
char buffer[46];
unsigned char* ch = (unsigned char*)memoryData.IP_addr;
sprintf(buffer,"AT+CIPSTART=\"TCP\",\"%u.%u.%u.%u\",\"%u\"\r",ch[1],ch[0],ch[3],ch[2],memoryData.IP_port);
air вне форума   Ответить с цитированием
Старый 04.10.2011, 17:12   #6
2AplusA
Senior Member
 
Аватар для 2AplusA
 
Регистрация: 26.02.2007
Адрес: Penza
Возраст: 38
Сообщений: 1,383
Вес репутации: 1267/74
2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of
По умолчанию Re: МСС18 преобразование строк,сборка

Цитата:
Сообщение от air Посмотреть сообщение
А чем sprintf не нравится, например:

Код:
char buffer[46];
unsigned char* ch = (unsigned char*)memoryData.IP_addr;
sprintf(buffer,"AT+CIPSTART=\"TCP\",\"%u.%u.%u.%u\",\"%u\"\r",ch[1],ch[0],ch[3],ch[2],memoryData.IP_port);
если бы не был sprintf такой тормозной, то цены ему бы не было.
__________________
Лучше день потерять, потом за час долететь!
2AplusA вне форума   Ответить с цитированием
Старый 05.10.2011, 06:26   #7
CERGEI
Senior Member
 
Аватар для CERGEI
 
Регистрация: 11.07.2009
Возраст: 38
Сообщений: 526
Вес репутации: 183/46
CERGEI has a spectacular aura aboutCERGEI has a spectacular aura about
По умолчанию Re: МСС18 преобразование строк,сборка

Цитата:
Сообщение от pal1222@yandex.ru Посмотреть сообщение
Это не шарп и не ждава. Объект надо создать руками: char p_string[ну, хоть 8]; кроме того, не задано основание системы, тоже "ругаться будет"
Так я и не понял как надо Посмотрел что возвращается адрес в регистрах PRODL и PRODH,но это мне ничего не дает.Можно примерчик если не трудно.
CERGEI вне форума   Ответить с цитированием
Старый 05.10.2011, 06:49   #8
CERGEI
Senior Member
 
Аватар для CERGEI
 
Регистрация: 11.07.2009
Возраст: 38
Сообщений: 526
Вес репутации: 183/46
CERGEI has a spectacular aura aboutCERGEI has a spectacular aura about
По умолчанию Re: МСС18 преобразование строк,сборка

Сделал примерно так
Код:
char string[15];   //тест создания строки
    char string_temp[15];
    static unsigned int IP_ADDR_BYTE1=192,IP_ADDR_BYTE2=168,IP_ADDR_BYTE3=0,IP_ADDR_BYTE4=76;
    char* p_string=&string;
    char* p_string_temp=&string_temp;
    LCDInit();
    memcpypgm2ram((void*)&string[0],"in_s3: ", 7);
    itoa(IP_ADDR_BYTE1,string_temp);
    //ищем конец строки у массива строк
    while(*p_string)
        p_string++;
    //скидываем из string_temp в string
    while(*p_string_temp)
    {    *p_string=*p_string_temp;
        p_string++;
        p_string_temp++;
    }
    *p_string=0;
CERGEI вне форума   Ответить с цитированием
Старый 05.10.2011, 07:03   #9
2AplusA
Senior Member
 
Аватар для 2AplusA
 
Регистрация: 26.02.2007
Адрес: Penza
Возраст: 38
Сообщений: 1,383
Вес репутации: 1267/74
2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of
По умолчанию Re: МСС18 преобразование строк,сборка

Цитата:
Сообщение от CERGEI Посмотреть сообщение
Сделал примерно так
Код:
char string[15];   //тест создания строки
    char string_temp[15];
    static unsigned int IP_ADDR_BYTE1=192,IP_ADDR_BYTE2=168,IP_ADDR_BYTE3=0,IP_ADDR_BYTE4=76;
    char* p_string=&string;
    char* p_string_temp=&string_temp;
    LCDInit();
    memcpypgm2ram((void*)&string[0],"in_s3: ", 7);
    itoa(IP_ADDR_BYTE1,string_temp);
    //ищем конец строки у массива строк
    while(*p_string)
        p_string++;
    //скидываем из string_temp в string
    while(*p_string_temp)
    {    *p_string=*p_string_temp;
        p_string++;
        p_string_temp++;
    }
    *p_string=0;
Получилось немного избыточно. Весь этот код нужно будет вызвать 4 раза. чтобы весь IP-адрес обработать. Тогда уж лучше реально sprintf вызвать по скорости одинаково получится.
Или так.
Код:
char string[15];   //тест создания строки
    static unsigned int IP_ADDR_BYTE1=192,IP_ADDR_BYTE2=168,IP_ADDR_BYTE3=0,IP_ADDR_BYTE4=76;
    char* p_string=&string;
    LCDInit();
    memcpypgm2ram((void*)&string[0],"in_s3: ", 7);
    //прыгаем на конец строки у массива строк
    p_string+=7;
    itoa(IP_ADDR_BYTE1,p_string);
__________________
Лучше день потерять, потом за час долететь!

Последний раз редактировалось 2AplusA; 05.10.2011 в 07:19.
2AplusA вне форума   Ответить с цитированием
Старый 05.10.2011, 07:37   #10
CERGEI
Senior Member
 
Аватар для CERGEI
 
Регистрация: 11.07.2009
Возраст: 38
Сообщений: 526
Вес репутации: 183/46
CERGEI has a spectacular aura aboutCERGEI has a spectacular aura about
По умолчанию Re: МСС18 преобразование строк,сборка

Спасибо ваш вариант будет лучше.И заметил что функция memcpypgm2ram не ставит после копирования 0х00,по которому можно было найти конец строки перебором.
Да наверно придется с sprintf поиграться,но все равно как учеба это полезно.Давно со строками не игрался.

Вот попробывал ваш вариант,красиво
Миниатюры
Снимок.png   Снимок-1.png  

Последний раз редактировалось CERGEI; 05.10.2011 в 07:46.
CERGEI вне форума   Ответить с цитированием
Старый 05.10.2011, 07:49   #11
CERGEI
Senior Member
 
Аватар для CERGEI
 
Регистрация: 11.07.2009
Возраст: 38
Сообщений: 526
Вес репутации: 183/46
CERGEI has a spectacular aura aboutCERGEI has a spectacular aura about
По умолчанию Re: МСС18 преобразование строк,сборка

Цитата:
Сообщение от IgorV Посмотреть сообщение
блин я уже написал. если работает - оставь как есть. Тем не менее вставлю 5 копееек:
char string_temp[15]; - вот это лишнее

есть ещё функция lenght, итого указатель для itoa необходимо смещать по массиву устанавливая его на конец уже созданного. И никаких доп движений не будет.
Так надо же у кого то учится,каждый кто что то дополнит научусь я и люди.
Я не спец в этом,я тока учусь.Сейчас попробую lenght.

Не смог найти в документации hlpC18Lib.chm на lenght.
CERGEI вне форума   Ответить с цитированием
Старый 05.10.2011, 07:51   #12
IgorV
Senior Member
 
Аватар для IgorV
 
Регистрация: 25.02.2007
Адрес: всем пока
Возраст: 49
Сообщений: 4,100
Вес репутации: 1883/108
IgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant future
Отправить сообщение для IgorV с помощью Skype™
По умолчанию Re: МСС18 преобразование строк,сборка

Цитата:
Сообщение от CERGEI Посмотреть сообщение
Так надо же у кого то учится,каждый кто что то дополнит научусь я и люди.
Я не спец в этом,я тока учусь.Сейчас попробую lenght.
strlen(const char *);
IgorV вне форума   Ответить с цитированием
Старый 05.10.2011, 08:00   #13
IgorV
Senior Member
 
Аватар для IgorV
 
Регистрация: 25.02.2007
Адрес: всем пока
Возраст: 49
Сообщений: 4,100
Вес репутации: 1883/108
IgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant future
Отправить сообщение для IgorV с помощью Skype™
По умолчанию Re: МСС18 преобразование строк,сборка

Цитата:
Сообщение от CERGEI Посмотреть сообщение
Так надо же у кого то учится,каждый кто что то дополнит научусь я и люди.
Я не спец в этом,я тока учусь.Сейчас попробую lenght.

Не смог найти в документации hlpC18Lib.chm на lenght.
в голове несколько языков, прародителем все таки английский, итого написал просто слово "длина" т.е. искать строковые и не только по "str"
например для С30 нашелся сразу хедер
Код:
#ifndef _STRING_H_
#define _STRING_H_

/* String functions */

#ifndef _STDDEF_H_
#include <stddef.h>
#endif /* _STDDEF_H_ */

extern void *	memcpy(void *, const void *, size_t);
extern void *	memmove(void *, const void *, size_t);
extern void *	memset(void *, int, size_t);

extern char *	strcat(char *, const char *);
extern char *	strcpy(char *, const char *);
extern char *	strncat(char *, const char *, size_t);
extern char *	strncpy(char *, const char *, size_t);
extern char *	strdup(const char *);
extern char *	strtok(char *, const char *);

extern int	memcmp(const void *, const void *, size_t);
extern int	strcmp(const char *, const char *);
extern int	strncmp(const char *, const char *, size_t);
extern  void *	memchr(const void *, int, size_t);
extern size_t	strcspn(const char *, const char *);
extern  char *	strpbrk(const char *, const char *);
extern size_t	strspn(const char *, const char *);
extern  char *	strstr(const char *, const char *);
extern char *	strerror(int);
extern size_t	strlen(const char *);
extern  char *	strchr(const char *, int);
extern  char *	strrchr(const char *, int);

#endif /* _STRING_H_ */
а тут все что может быть в данном языке

itoa даст строку с нультемринатором, конец найти просто указатель + длина - новое положение указателя для дозаписи
IgorV вне форума   Ответить с цитированием
Старый 05.10.2011, 08:58   #14
2AplusA
Senior Member
 
Аватар для 2AplusA
 
Регистрация: 26.02.2007
Адрес: Penza
Возраст: 38
Сообщений: 1,383
Вес репутации: 1267/74
2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of
По умолчанию Re: МСС18 преобразование строк,сборка

Цитата:
Сообщение от CERGEI Посмотреть сообщение
Да наверно придется с sprintf поиграться,но все равно как учеба это полезно.Давно со строками не игрался.
Я тоже со строками на си редко когда работал. Но когда занялся Web-сервером, там без строк вообще никуда.
__________________
Лучше день потерять, потом за час долететь!
2AplusA вне форума   Ответить с цитированием
Старый 05.10.2011, 10:37   #15
CERGEI
Senior Member
 
Аватар для CERGEI
 
Регистрация: 11.07.2009
Возраст: 38
Сообщений: 526
Вес репутации: 183/46
CERGEI has a spectacular aura aboutCERGEI has a spectacular aura about
По умолчанию Re: МСС18 преобразование строк,сборка

Цитата:
Сообщение от 2AplusA Посмотреть сообщение
Я тоже со строками на си редко когда работал. Но когда занялся Web-сервером, там без строк вообще никуда.
Вывод строк куда делаете? интересно,я пока с жки приделал,для разработки под пинг,но думаю не выйдет ничего,так как ест много проц с включеном изернет модулем(150 мА средне),думал сделать переносной пингер он батарейки.

Вот что получилось,там мне удобней,так как при наборе IP выгодно так.Всем спасибо за помощь и советы.

Код:
void main (void)
{
    char string[15];   //тест создания строки
    char* p_string=&string;
    static unsigned int IP_ADDR_BYTE1=192,IP_ADDR_BYTE2=168,IP_ADDR_BYTE3=0,IP_ADDR_BYTE4=76;
    LCDInit();
    memset(string,0,15);
    memcpypgm2ram((void*)&string[0],"in_s3: ", 7);
    p_string+=strlen(&string);
    itoa(IP_ADDR_BYTE1,p_string);    
    while(1);
}
CERGEI вне форума   Ответить с цитированием
Старый 05.10.2011, 11:21   #16
IgorV
Senior Member
 
Аватар для IgorV
 
Регистрация: 25.02.2007
Адрес: всем пока
Возраст: 49
Сообщений: 4,100
Вес репутации: 1883/108
IgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant future
Отправить сообщение для IgorV с помощью Skype™
По умолчанию Re: МСС18 преобразование строк,сборка

Цитата:
Сообщение от CERGEI Посмотреть сообщение
Вывод строк куда делаете? интересно,я пока с жки приделал,для разработки под пинг,но думаю не выйдет ничего,так как ест много проц с включеном изернет модулем(150 мА средне),думал сделать переносной пингер он батарейки.

Вот что получилось,там мне удобней,так как при наборе IP выгодно так.Всем спасибо за помощь и советы.

Код:
void main (void)
{
    char string[15];   //тест создания строки
    char* p_string=&string;
    static unsigned int IP_ADDR_BYTE1=192,IP_ADDR_BYTE2=168,IP_ADDR_BYTE3=0,IP_ADDR_BYTE4=76;
    LCDInit();
    memset(string,0,15);
    memcpypgm2ram((void*)&string[0],"in_s3: ", 7);
    p_string+=strlen(&string);
    itoa(IP_ADDR_BYTE1,p_string);    
    while(1);
}
чето не вижу как остальные октеты печатаются, там же ещё
*p_string='.'; p_string++; и ещё itoa(IP_ADDR_BYTE2,p_string);
и т.п.
IgorV вне форума   Ответить с цитированием
Старый 05.10.2011, 11:33   #17
CERGEI
Senior Member
 
Аватар для CERGEI
 
Регистрация: 11.07.2009
Возраст: 38
Сообщений: 526
Вес репутации: 183/46
CERGEI has a spectacular aura aboutCERGEI has a spectacular aura about
По умолчанию Re: МСС18 преобразование строк,сборка

Это тестовая программа,учился работать со строками.Позже буду делать набор пингующего адреса.Если код интересен выложу.
Пока что сделал выбор IP для самого устройства из трех сетей 0.2 , 1.2 и 2.2. Все можно поменять и добавить.
CERGEI вне форума   Ответить с цитированием
Старый 05.10.2011, 11:39   #18
IgorV
Senior Member
 
Аватар для IgorV
 
Регистрация: 25.02.2007
Адрес: всем пока
Возраст: 49
Сообщений: 4,100
Вес репутации: 1883/108
IgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant future
Отправить сообщение для IgorV с помощью Skype™
По умолчанию Re: МСС18 преобразование строк,сборка

Цитата:
Сообщение от CERGEI Посмотреть сообщение
Это тестовая программа,учился работать со строками.Позже буду делать набор пингующего адреса.Если код интересен выложу.
Пока что сделал выбор IP для самого устройства из трех сетей 0.2 , 1.2 и 2.2. Все можно поменять и добавить.
ну мне то этот код не нужен, а вот кому нить может и сгодится, только найти его будет сложно, чего спрашивать то в поисковике? А по названию темы тоже не найти чего ищешь.
Вот если добить хотябы тегами и тему перименовать, или в тексте что-то конкретно указать, чтобы было зацепиться. Иначе зачем выкладывать готовые коды, если их поисковик не найдет?
IgorV вне форума   Ответить с цитированием
Старый 19.10.2011, 04:26   #19
CERGEI
Senior Member
 
Аватар для CERGEI
 
Регистрация: 11.07.2009
Возраст: 38
Сообщений: 526
Вес репутации: 183/46
CERGEI has a spectacular aura aboutCERGEI has a spectacular aura about
По умолчанию Re: МСС18 преобразование строк,сборка

Цитата:
Сообщение от IgorV Посмотреть сообщение
Вот если добить хотябы тегами и тему перименовать
Выложу код и схему,Все делается на интересе тока.Главное добить
Заметил проблему с memcpypgm2ram.
1) Ругается на нее компилятор
2) В железе то отобразится,то нет
Решил свою написать memcpypgm2ram_,но вот как передать строку через указатель не могу сообразить.Делал так:
Код:
memcpypgm2ram_(&LCDText,"in_s3: ");
Код:
void memcpypgm2ram_(char* buf,char* source)
{
    //копируем из source в buf
    while(*source!=0)
    {
        *buf=*source;
        buf++;
        source++;
    }
}
С первым аргументов все впорядке,но вот со вторым указывает на память с нулями.Создавать кучу массивов с разными строками шаблонами накладно,делая указатели вторым аргументом.
CERGEI вне форума   Ответить с цитированием
Старый 19.10.2011, 06:24   #20
IgorV
Senior Member
 
Аватар для IgorV
 
Регистрация: 25.02.2007
Адрес: всем пока
Возраст: 49
Сообщений: 4,100
Вес репутации: 1883/108
IgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant future
Отправить сообщение для IgorV с помощью Skype™
По умолчанию Re: МСС18 преобразование строк,сборка

Цитата:
Сообщение от CERGEI Посмотреть сообщение
Выложу код и схему,Все делается на интересе тока.Главное добить
Заметил проблему с memcpypgm2ram.
1) Ругается на нее компилятор
2) В железе то отобразится,то нет
Решил свою написать memcpypgm2ram_,но вот как передать строку через указатель не могу сообразить.Делал так:
Код:
memcpypgm2ram_(&LCDText,"in_s3: ");
Код:
void memcpypgm2ram_(char* buf, const char* source)
{
    //копируем из source в buf
    while(*source!=0)
    {
        *buf=*source;
        buf++;
        source++;
    }
}
С первым аргументов все впорядке,но вот со вторым указывает на память с нулями.Создавать кучу массивов с разными строками шаблонами накладно,делая указатели вторым аргументом.
const char *
IgorV вне форума   Ответить с цитированием
Старый 20.10.2011, 04:02   #21
CERGEI
Senior Member
 
Аватар для CERGEI
 
Регистрация: 11.07.2009
Возраст: 38
Сообщений: 526
Вес репутации: 183/46
CERGEI has a spectacular aura aboutCERGEI has a spectacular aura about
По умолчанию Re: МСС18 преобразование строк,сборка

Цитата:
Сообщение от IgorV Посмотреть сообщение
const char *
Не помогло,ругается что тип не подходит при вызове функции моей.
Миниатюры
Снимок.png  
Вложения
Тип файла: rar test_ethernet_lcd.rar (39.5 Кб, 2 просмотров)
CERGEI вне форума   Ответить с цитированием
Старый 20.10.2011, 09:26   #22
Machine slave
Senior Member
 
Аватар для Machine slave
 
Регистрация: 18.01.2008
Возраст: 37
Сообщений: 4,264
Вес репутации: 2731/115
Machine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond repute
По умолчанию Re: МСС18 преобразование строк,сборка

Код:
void memcpypgm2ram_(char* buf, const rom char* source)
{
    while(*source != 0)
    *buf++ = *source++;
}
Machine slave вне форума   Ответить с цитированием
Старый 27.10.2011, 05:53   #23
CERGEI
Senior Member
 
Аватар для CERGEI
 
Регистрация: 11.07.2009
Возраст: 38
Сообщений: 526
Вес репутации: 183/46
CERGEI has a spectacular aura aboutCERGEI has a spectacular aura about
По умолчанию Re: МСС18 преобразование строк,сборка

Есть ли функция или прием такой,что после itoa мне надо увеличить указатель на преобразованное число? Что то типа size_of если не ошибаюсь в Си.
CERGEI вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование строки НЕХ символов smart_pic Продукция MICROCHIP 24 28.09.2011 14:03
Преобразование DC в DC по таблице. Artyuha Вопросы начинающих 224 15.08.2010 10:19
Преобразование 8битного двоично-десятичного кода в 5битный двоичный Vadim_ya Вопросы начинающих 17 15.01.2010 21:56
МСС18. Используемый размер программного стека. majorPAE Продукция MICROCHIP 0 05.10.2008 23:17
Преобразование чисел с плавающей точкой в двоично-десятичные числа messenger Микроконтроллеры других производителей 3 18.06.2008 22:32


Часовой пояс GMT +3, время: 14:01.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot