TVout - в чем проблема?

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

Добрый всем вечер.

Столкнулся опять-таки с непонятной ситуацией.

Скетч для вывода через TVout, содержащий:

#include <TVout.h>

 

компилируется и выполняется без проблем. Но если взять любую программу со строками:

#include <TVout.h>
#include <fontALL.h>

она уже не компилируется! Причем сразу же - не находит fontALL.h Я качал три разных версии библиотеки "TVout" и ни в одной не было этого fontALL.h. Отдельно на гитхабе я находил этот файл, но там вокруг него еще масса других файлов. Я, для верности, скопировал все что там были в папку с библиотекой, но компиляция все равно не проходит.

Еще что странно, как только в программе встречается вызов типа: TV.set_cursor(0,6); - сразу пишет: 'TV' was not declared in this scope.

Я поискал по форуму - вроде никто не сталкивался с такой проблемой.

Что я делаю не так на этот раз?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

TV у Вас не объявлен, а файл fontALL.h не находится.

Buzzer2010 пишет:

Что я делаю не так на этот раз?

Давайте подождём пока какой-нибудь Сноуден украдёт у Вас код и выложит его в сеть. Тогда и посмотрим. А так, без кода, ХЗ что Вы там делаете.

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

ЕвгенийП пишет:

TV у Вас не объявлен, а файл fontALL.h не находится.

Да, спасибо. Это именно то, что я имел ввиду.

ЕвгенийП пишет:

Buzzer2010 пишет:

Что я делаю не так на этот раз?

Давайте подождём пока какой-нибудь Сноуден украдёт у Вас код и выложит его в сеть. Тогда и посмотрим. А так, без кода, ХЗ что Вы там делаете.

Да ничего особенного и не делаю, собственно: беру пример из библиотеки и пытаюсь его запустить на ардуино и при этом - что-то увидеть на экране. Но зачастую пример даже не компилируется. Меняю библиотеку - тоже самое. Читаю что пишет компилятор и оказывается что он просто не находит чего-то там где-то там. Начинаю вникать, а оказывается "WProgram.h" давно уже переименовали в "Arduino.h", просто единственное место где об этом можно узнать, это там, куда я, случайно, зашел.

В общем взял самую последнюю бэту TVout, кое-как добился компиляции без замечаний, заливаю скетч, но на экране ничего. Причем более ранняя версия отображала на экране свой простенький пример, но функционал у той библиотеки просто-таки не впечатляет:

_NTSC	LITERAL1
_PAL	LITERAL1

TVout	KEYWORD1

begin	KEYWORD2
pause	KEYWORD2
resume	KEYWORD2
hres	        KEYWORD2
vres	        KEYWORD2
char_line	KEYWORD2
clear_screen	KEYWORD2
fill	        KEYWORD2
delay	KEYWORD2
set_pixel	KEYWORD2
get_pixel	KEYWORD2
draw_line	KEYWORD2
print_char	KEYWORD2
print_str	KEYWORD2
invert	KEYWORD2
fs_bitmap	KEYWORD2
tone  	KEYWORD2

Как видите, никакого намека на "TV.set_cursor"...

Я уже почти слышу как Вы начинаете негодовать, особенно после слов: "кое-как". Вот "то", что не вызывает возражений у компилятора, но напроч не запускается:

#include <TVout.h>
#include <fontALL.h>
#include "TVOlogo.h"

TVout TV;

void setup() 
{

  TV.begin(PAL,120,96);
  TV.select_font(font6x8);
  intro();
delay(1000);
}
void loop()
{
 }


  void intro() 
{
unsigned char w,l,wb;
  int index;
  w = pgm_read_byte(TVOlogo);
  l = pgm_read_byte(TVOlogo+1);
  if (w&7)
    wb = w/8 + 1;
  else
    wb = w/8;
  index = wb*(l-1) + 2;
  for ( unsigned char i = 1; i < l; i++ ) {
    TV.bitmap((TV.hres() - w)/2,0,TVOlogo,index,w,i);
    index-= wb;
    TV.delay(50);
  }
  for (unsigned char i = 0; i < (TV.vres() - l)/2; i++) {
    TV.bitmap((TV.hres() - w)/2,i,TVOlogo);
    TV.delay(50);
  }
  TV.delay(3000);
  TV.clear_screen();
}

 

Это был длинный пример из бэты TVout, который я свел к минимуму, лишь бы что-то увидеть. "fontALL.h" и "TVOlogo.h" не трогал, надеясь что там всё впорядке.

То есть, другими словами - проблему со шрифтами я уже решил: библиотека "TVoutfonts", в которой и хранится "fontALL.h", присутствовала только в комплекте с "TVoutBeta1". Однако же, исходя из того что это-таки бэта, я даже не могу надеятся на то, что Вы попытаетесь разобраться в чем дело.

Сама библиотека: http://www30.zippyshare.com/v/YL6FIBlO/file.html

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Buzzer2010 пишет:

Я качал три разных версии библиотеки "TVout" и ни в одной не было этого fontALL.h. Отдельно на гитхабе я находил этот файл, но там вокруг него еще масса других файлов. Я, для верности, скопировал все что там были в папку с библиотекой, но компиляция все равно не проходит.

Вот от СЮДА качаешь папки TVout, TVoutfonts. Кладешь их в папку C:\Users\%UserName%\Documents\Arduino\libraries

P.S. Не надо копировать всё в одну папку TVout. Они должны лежать раздельно, как и на гитхабе.

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

Jeka_M пишет:

Buzzer2010 пишет:

Я качал три разных версии библиотеки "TVout" и ни в одной не было этого fontALL.h. Отдельно на гитхабе я находил этот файл, но там вокруг него еще масса других файлов. Я, для верности, скопировал все что там были в папку с библиотекой, но компиляция все равно не проходит.

Вот от СЮДА качаешь папки TVout, TVoutfonts. Кладешь их в папку C:\Users\%UserName%\Documents\Arduino\libraries

P.S. Не надо копировать всё в одну папку TVout. Они должны лежать раздельно, как и на гитхабе.

А что библиотеки не обязательно должны находиться в папке с компилятором? Или они должны быть и там и в папке с моими скетчами?

Папка "libraries" есть же и в "C:\Users\%UserName%\Documents\Arduino"  и в папке с компилятором.

1. После распаковки в "C:\Users\%UserName%\Documents\Arduino\libraries"  получается папка "arduino-tvout-master". Это так и должно быть?

2. А если эту папку поместить в такую же "libraries", но в папке компилятора, это будет правильно, не правильно или некритично?

3. Найдёт ли компилятор "TVout.h"  в папке "arduino-tvout-master" ?

---------------------------------------------------------------------------------

Если распаковать в корень без папки ""arduino-tvout-master"", то вылазит вот что:

Arduino: 1.6.8 Hourly Build 2016/02/19 10:33 (Windows 8), Плата:"Arduino/Genuino Uno"

C:\Users\Admin\Documents\Arduino\libraries\TVout\TVout.cpp:96:18: error: no 'void TVout::end()' member function declared in class 'TVout'

  void TVout::end() {

                  ^

C:\Users\Admin\Documents\Arduino\libraries\TVout\TVout.cpp: In member function 'void TVout::draw_line(uint8_t, uint8_t, uint8_t, uint8_t, char)':

C:\Users\Admin\Documents\Arduino\libraries\TVout\TVout.cpp:307:25: error: 'draw_column' was not declared in this scope

   draw_column(x0,y0,y1,c);

                         ^

C:\Users\Admin\Documents\Arduino\libraries\TVout\TVout.cpp:309:22: error: 'draw_row' was not declared in this scope

   draw_row(y0,x0,x1,c);

                      ^

C:\Users\Admin\Documents\Arduino\libraries\TVout\TVout.cpp: At global scope:

C:\Users\Admin\Documents\Arduino\libraries\TVout\TVout.cpp:388:71: error: no 'void TVout::draw_row(uint8_t, uint16_t, uint16_t, uint8_t)' member function declared in class 'TVout'

 void TVout::draw_row(uint8_t line, uint16_t x0, uint16_t x1, uint8_t c) {

                                                                       ^

C:\Users\Admin\Documents\Arduino\libraries\TVout\TVout.cpp:442:73: error: no 'void TVout::draw_column(uint8_t, uint16_t, uint16_t, uint8_t)' member function declared in class 'TVout'

 void TVout::draw_column(uint8_t row, uint16_t y0, uint16_t y1, uint8_t c) {

                                                                         ^

C:\Users\Admin\Documents\Arduino\libraries\TVout\TVout.cpp: In member function 'void TVout::draw_rect(uint8_t, uint8_t, uint8_t, uint8_t, char, char)':

C:\Users\Admin\Documents\Arduino\libraries\TVout\TVout.cpp:505:25: error: 'draw_row' was not declared in this scope

    draw_row(i,x0,x0+w,fc);

                         ^

C:\Users\Admin\Documents\Arduino\libraries\TVout\TVout.cpp: In member function 'void TVout::draw_circle(uint8_t, uint8_t, uint8_t, char, char)':

C:\Users\Admin\Documents\Arduino\libraries\TVout\TVout.cpp:543:37: error: 'draw_row' was not declared in this scope

   draw_row(y0,x0-radius,x0+radius,fc);

                                     ^

C:\Users\Admin\Documents\Arduino\libraries\TVout\TVout.cpp:564:31: error: 'draw_row' was not declared in this scope

     draw_row(y0+y,x0-x,x0+x,fc);

                               ^

C:\Users\Admin\Documents\Arduino\libraries\TVout\TVout.cpp:568:31: error: 'draw_row' was not declared in this scope

     draw_row(y0+x,x0-y,x0+y,fc);

                               ^

Несколько библиотек найдено для "TVout.h"
 Используется: C:\Users\Admin\Documents\Arduino\libraries\TVout
Не используется: C:\Users\Admin\Documents\Arduino\libraries\arduino-tvout-master
exit status 1
Ошибка компиляции.
Неверная библиотека найдена в C:\Users\Admin\Documents\Arduino\libraries\examples: C:\Users\Admin\Documents\Arduino\libraries\examples
Неверная библиотека найдена в C:\Users\Admin\Documents\Arduino\libraries\examples: C:\Users\Admin\Documents\Arduino\libraries\examples

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

 

Если распаковать библиотекой ""arduino-tvout-master"", то тогда вот что:

Arduino: 1.6.8 Hourly Build 2016/02/19 10:33 (Windows 8), Плата:"Arduino/Genuino Uno"

C:\Users\Admin\Documents\Arduino\TV_OUT_BETA\TV_OUT_BETA.ino:2:21: fatal error: fontALL.h: No such file or directory

 #include <fontALL.h>

                     ^

compilation terminated.

exit status 1
Ошибка компиляции.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Buzzer2010 пишет:

А что библиотеки не обязательно должны находиться в папке с компилятором? Или они должны быть и там и в папке с моими скетчами?

Пользовательские библиотеки должны быть там, где я написал - C:\Users\%UserName%\Documents\Arduino\libraries

Buzzer2010 пишет:

1. После распаковки в "C:\Users\%UserName%\Documents\Arduino\libraries"  получается папка "arduino-tvout-master". Это так и должно быть?

Нет. Распакуйте архив на рабочий стол. Из папки arduino-tvout-master извлеките папки TVout, TVoutfonts и поместите их в вышеуказанную папку libraries.

Buzzer2010 пишет:

2. А если эту папку поместить в такую же "libraries", но в папке компилятора, это будет правильно, не правильно или некритично?

Некритично. Но пользовательские библиотеки желательно устанавливать в Documents (Мои документы)

Buzzer2010 пишет:

3. Найдёт ли компилятор "TVout.h"  в папке "arduino-tvout-master" ?

Нет. Структура папок библиотек должна быть чёткая и не должно быть никаких лишних папок (уровнем выше). Откройте и посмотрите структуру нескольких библиотек.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Что-то Вы там кучу библиотек в разные места пораспихали. Так не должно быть. Удалите из C:\Users\Admin\Documents\Arduino\libraries\ папки arduino-tvout-master и examples. Должны остаться только TVout и TVoutfonts.

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

Jeka_M пишет:

Что-то Вы там кучу библиотек в разные места пораспихали. Так не должно быть. Удалите из C:\Users\Admin\Documents\Arduino\libraries\ папки arduino-tvout-master и examples. Должны остаться только TVout и TVoutfonts.

Так у меня так и было сначала! Вот так:

Jeka_M пишет:

P.S. Не надо копировать всё в одну папку TVout. Они должны лежать раздельно, как и на гитхабе.

Я не делал! Я и размещал только папки "TVout" и "TVoutfonts" в корневом "libraries" !

Дело в том что в корне папки "arduino-tvout-master" лежат еще какие-то файлы...

А изначально у меня были только папки "TVout" и "TVoutfonts", и лежали они не в папке со скетчами/libraries, а в папке с компилятором/libraries и он прекрасно их находил, но скетчи, хоть и компилировались в белый, все равно не работали.

В общем я считаю что либо проблема в железе, либо в библиотеках. Потому что я с этой версией библиотеки пытался вывести на экран что-то через "TV.print(x,y,"Hello")" и на экране была всё та же пустота. Но если менять координаты строки - начинало что-то мигать, огромное такое.

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Buzzer2010 пишет:

Добрый всем вечер.

Столкнулся опять-таки с непонятной ситуацией.

Скетч для вывода через TVout, содержащий:

#include <TVout.h>

 

компилируется и выполняется без проблем. Но если взять любую программу со строками:

#include <TVout.h>
#include <fontALL.h>

она уже не компилируется! Причем сразу же - не находит fontALL.h Я качал три разных версии библиотеки "TVout" и ни в одной не было этого fontALL.h. Отдельно на гитхабе я находил этот файл, но там вокруг него еще масса других файлов. Я, для верности, скопировал все что там были в папку с библиотекой, но компиляция все равно не проходит.

Еще что странно, как только в программе встречается вызов типа: TV.set_cursor(0,6); - сразу пишет: 'TV' was not declared in this scope.

Я поискал по форуму - вроде никто не сталкивался с такой проблемой.

Что я делаю не так на этот раз?

Маленький совет за одно примерно о том же - очистить папку TEMP иной раз помогает, особенн новой супер глючной версии 1.6.8.

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

faeton пишет:
Маленький совет за одно примерно о том же - очистить папку TEMP иной раз помогает, особенн новой супер глючной версии 1.6.8.

Спасибо, попробую что получится. А какая версия самая неглючная?

----------------

Вот поставил 1.6.7, которая раньше стояла и ни один скетч не компилируется:

Arduino: 1.6.7 (Windows XP), Плата:"Arduino/Genuino Uno"

Exception 0xc000001d 0x1003f 0x0 0x508549
PC=0x508549

math.initВ·1()
	c:/go/src/math/pow10.go:34 +0x19
math.init()
	c:/go/src/math/unsafe.go:21 +0x3f
strconv.init()
	c:/go/src/strconv/quote.go:455 +0x45
os/exec.init()
	c:/go/src/os/exec/lp_windows.go:123 +0x54
main.init()
	c:/jenkins/workspace/arduino-builder-windows/main.go:386 +0x49

goroutine 2 [runnable]:
runtime.forcegchelper()
	c:/go/src/runtime/proc.go:90
runtime.goexit()
	c:/go/src/runtime/asm_386.s:2287 +0x1

goroutine 3 [runnable]:
runtime.bgsweep()
	c:/go/src/runtime/mgc0.go:82
runtime.goexit()
	c:/go/src/runtime/asm_386.s:2287 +0x1
eax     0x10c8e068
ebx     0x633d88
ecx     0x10c84000
edx     0x633d88
edi     0x0
esi     0x4ba8
ebp     0x0
esp     0x10c8df88
eip     0x508549
eflags  0x10206
cs      0x1b
fs      0x3b
gs      0x0
arduino-builder возвратил 2

Ошибка компиляции.

  Это сообщение будет содержать больше информации чем
  "Отображать вывод во время компиляции"
  включено в Файл > Настройки

 

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Buzzer2010 пишет:

faeton пишет:
Маленький совет за одно примерно о том же - очистить папку TEMP иной раз помогает, особенн новой супер глючной версии 1.6.8.

Спасибо, попробую что получится. А какая версия самая неглючная?

Фиг его знает! У меня была какая-то 1.0.5 R2 что ли, скачал по первой же нагугленной ссылке работало всё без проблем. Отличалось лишь видом списка примеров. Вот решил обновиться и получил западло и с платой Леонардо, и с отказом компилировать на ровном месте (комментирую строку или переношу чуть ниже - все отлично), и при загрузке в UNO то и дело выдаёт ошибка загрузки, хотя оно уже внутри и работает как надо... Хлам!

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

faeton пишет:
Фиг его знает! У меня была какая-то 1.0.5 R2 что ли, скачал по первой же нагугленной ссылке работало всё без проблем. Отличалось лишь видом списка примеров. Вот решил обновиться и получил западло и с платой Леонардо, и с отказом компилировать на ровном месте (комментирую строку или переношу чуть ниже - все отлично), и при загрузке в UNO то и дело выдаёт ошибка загрузки, хотя оно уже внутри и работает как надо... Хлам!

Короче, я думал только у меня эта хрень происходит.

История такая. Скачал сразу обе 1.6.7 и 1.6.8, однако 1.6.8 называлась "windows nightly" и я ее пока отложил в сторону. Пока юзал только 1.6.7 - было всё нормально (винда -8.1х64). Потом решил попробовать 1.6.8 и в результате похерились обе - не компилируют заранее рабочие скетчи, хоть ты тресни! После глубокой чистки компьютера стал пользоваться 1.6.8 потому что только она захотела хоть что-то делать. У меня "portable" версии обоих и устанавливать их не приходилось.

Параллельно с ардуиной мучался мой приятель, но у него была предустановлена 1.6.7, (установочный пакет на хрюше) и что странно - когда я давал ему исходники скетчей, отлаженные в моей 1.6.8, у него они напроч не компилировались с какими-то совершенно дикими ошибками, навроде тех, что я показал выше. Я дал ему свою 1.6.8 и дело, вроде, пошло. Так мы и остановились на это версии.

А вчера после Вашего замечания,  попробовал перейти назад на 1.6.7 и результат: на обоих системах - 8.1х64 и ХР - не пошло!

talexey
Offline
Зарегистрирован: 10.12.2016

Попробуй найти папку tvout

В ней есть папка TVoutfonts скинуть все файлы в tvout.