ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 ноября
700812 Топик полностью
Vit (22.09.2016 11:01 - 11:03, просмотров: 152) ответил Гудвин на Вопрос к ЦЭ-гуру: Вот эта конструкция (вывод данных из некой структуры в CSV строку) отожрала 3.5 кб программной памяти в WinAvr. Как бы соптимизировать - поубавить аппетиты?
хм... можно попробовать применить что-то типа const void * arr[]={ (const void*)&rec_bin.ves, (const void*)&rec_bin.un_kod_ttn, .... (const void*)&rec_bin.time_tara }; const void * arr1[]={ (const void*)&rec_bin.repey1brutto, (const void*)&rec_bin.n_auto, .... (const void*)&rec_bin.rec_bin.CRC_FW_DINe }; // Вес (Signed Long !) for(unsigned char i = 0; i <sizeof(arr); i++){ sprintf_P((char*)&buf[TCP_CHECKSUM_L_P+3+len],PSTR("%u,"),*(unsigned int*)arr[i]); len=add_len(buf,len); } sprintf_P((char*)&buf[TCP_CHECKSUM_L_P+3+len],PSTR("%lu,"),rec_bin.repey1ttn); len=add_len(buf,len); for(unsigned char i = 0; i <sizeof(arr1); i++){ sprintf_P((char*)&buf[TCP_CHECKSUM_L_P+3+len],PSTR("%u,"),*(unsigned int*)arr1[i]); len=add_len(buf,len); } sprintf_P((char*)&buf[TCP_CHECKSUM_L_P+3+len],PSTR("%u,"),(rec_bin.off_perim>>7)); // 0..1 len=add_len(buf,len); sprintf_P((char*)&buf[TCP_CHECKSUM_L_P+3+len],PSTR("*,")); // фотографий нет всегда len=add_len(buf,len); сложности с укладыванием указателей на флеш во флеш, конечно придется рихтануть, но я саму идейку предлагаю