Перенос кода
- Войдите на сайт для отправки комментариев
Пт, 09/09/2016 - 13:40
Уважемые форумчане. Помогите пожалуйста перевести код в понятный для ардуино
void SendString(char * SendStr, uint8_t Line) { int StrLen; unsigned char Packet[32]; int i; lcd_gotoxy(0,0); msDelay(1); if (Line == 2) { lcd_gotoxy(0,1); } msDelay(1); StrLen = strlen(SendStr); memset(Packet, 0, sizeof(Packet)); strncpy(Packet, SendStr, 16); for (i = StrLen; i <= 18; i++) { Packet[i] = 0x20; } lcd_puts(Packet); lcd_gotoxy(0,0); } //LCD Function void ClearLCD() { cd_clrscr(); }
Подключал библиотеку lcd, все равно ошибки.
код не содержит импорт lcd
Помогите пожалуйста перевести код в понятный для ардуино
Для начала попросите кого-нибудь помочь перевести Ваше сообщение в понятное для человека.
В чём Ваша проблема? Что не так? Буква l в 31 строке явно пропущена, а в остальном, объясните толком. что Вас не устраивает в этом коде?
Весь код я и не выкладывал. Он 1500 строк, без этой функции он работает.
ide 1.6.11, пишет ошибку
cc6cvSLb.ltrans1.o:(.text+0xc90): undefined reference to `lcd_gotoxy(unsigned char, unsigned char)'
Такая же на lcd_puts(Packet);
ide 1.6.11, пишет ошибку
cc6cvSLb.ltrans1.o:(.text+0xc90): undefined reference to `lcd_gotoxy(unsigned char, unsigned char)'
Такая же на lcd_puts(Packet);
Так вот с этого и надо было начинать. А то из Вашего первого сообщения вообще непонятно что там у Вас стряслось.
Ну, что, нету в Вашем проекте функции lcd_gotoxy. Она объявлена (иначе компилятор бы ругнулся), но физически её нету.
Ищите где она определена (в каком С-шном файле) и попробуйте положить этот файл в папку скетча.
Теперь такая:
\Temp\builde1c0249d87f548949c1d7632950e72df.tmp\libraries\LCD\lcd.c.o (symbol from plugin): In function `lcd_command':
(.text+0x0): multiple definition of `lcd_gotoxy'
По всем командам.
Убрал дефайн лсд, вроде ошибки ушли. Попробую протестировать.
Драгоценнейший Топик Стартер (ТС)!
В мире ардуино множество экранов и библиотек к ним. Если Вы хотите найти ошибку в своем коде, то нужно, по крайней мере, указать тип экрана и используемую библиотеку. Таких наименований, как Вы привели в типовых библиотеках нет. Но и посоветовать никто ничего не сможет, пока нет понимания, что Вы испотльзуете. Возможно, что эта функция - т.н. "прокладка" между функциями библиотеки и программой. Ведь код не Вы писали, как я понимаю? Тогда обращайтесь к автору или уж нанимайте исполнителя в другом разделе.
Евгений - правильно написал, посмотрите где именно описана функция, которую не может найти линковшик.
Вобще нетрудно догадаться что lcd_gotoxy(0,0) меняется на lcd.setCursor(0,0); в стандартной библе, а lcd_puts(Packet); на lcd.print(Packet); и так далее :)
Дисплей на HD44780 16х2. Библиотека lcd. По совету Евгения положил лсд.с в папку со скетчем и убрал из кода её дефайн, код скомпилировался. Но дисплей вообще не реагирует. Автора кода найти нет возможности.
Абсолютно солидарен. Именно так я и сделал сначала. Но дисплей выдал нечитаемый язык)
kimmel.dima, Логично, это же массив. Выводите по-байту, организовав цикл.
kimmel.dima, Логично, это же массив. Выводите по-байту, организовав цикл.
Это сложнее( Никогда так не делал. Как это должно выглядеть?
Всем спасибо за участие. Вот этот код отображает всё корректно: