реклама на сайте
подробности

 
 
> Проект на Визуал студио Си 10.0 под винду, требуется помощь по настройке и компиляции
andreichk
сообщение Oct 2 2013, 07:00
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Привет народ. Требуется помощь знающих програмистов на визуал студио 10.0 под вин7 небольшого проекта, кот. изначально был написан по юникс системы. на сайте автора вроде говорится, что и под вин должно всё работать.
Вначале я попробовал поставит визуал 10. на свою ОСь вин7. но она не встала, наверное из за того, что винда палёная. тогда я по совету друзей установил виртуалку и сунул в неё винХР и на неё положил визуал. Встало без проблем. После сознания проекта компиляция не удалась, из за отсутствия толи каких-то хедеров , толи какие-то настройки неправильные , вобщем мне непонятно. Может кто-нить возьмётся поглядеть исходники, там все несколько килобайт и скомпилит под винду простое консольное приложение?
Код должен выполнять подключение ФПГА через кипресс, прошивать его и затем выводить какую-то инфу с подключенного к ФПГА АЦП.
вся инфа была взята отсюда: http://www.makestuff.eu/wordpress/software/fpgalink/
http://www.makestuff.eu/wordpress/software...infrastructure/

Опережая события , скажу, что железка, которая подключается ко всему этому ,работает, и может прошиваться готовым эксешником flcli.exe, но этого на данном этапе недостаточно, так как надо что-то читать с АЦП и выводить на консоль.
Заранее благодарен. Обещаю в случае успеха выложить красивые фотки ночного неба, если эта железка окончательно заработает.


--------------------
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 24)
andreichk
сообщение Oct 7 2013, 05:57
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Ура !!! Проект удачно скомилировался и заработал. Оказывается надо было просто внешнюю библиотеку подключить: #pragma comment(lib, "c:/tmp/libfpgalink.lib") rolleyes.gif
Всем спасибо за активную помощь. santa2.gif


--------------------
Go to the top of the page
 
+Quote Post
andreichk
сообщение Nov 10 2013, 16:21
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Итак, проект как-то заработал, матрица стала давать картинки. Но проблема в том, что картинки имеют дефекты в виде горизонтальный полос через каждую 25 строку , начиная с третьей.

Програмисты - Сишники , допоможите убогому от полос избавиться, замучился уже.....
вот код записи данных с буфера, в который собрались данные с потока, кот. считан с АЦП:

Код
st=0x00;stt=0x00;line=0;p=0;
newline: //==========  поиск заголовка новой строки  ======================================
for(p=0; p<2689248; ++p)
     {                                          
  if(buf[p]==0x55){
       if(buf[p+1]==0xAA){  
           if(buf[p+4]==st
            && buf[p+5]==stt) {
                         if(p==2689248) goto newline; //обходим запись по достижении конца счёта битов
                                 else { // обрезка справа. тут только нечётное число
         if(line!=line+27) memcpy(&buf2[line*2613], &buf[p], 2613); // запись во второй буфер
                                        goto countline;             // считаем строки
                                      }
                              }
                        }
                 }
    }
//===============================================================================
for(ever){
countline:   if(st++ == 254){stt++;st=0;}   // считаем строки
             if(++line == 1027) break;      // прыжок на запись в файл по окончании записи  
                    else goto newline;      // подпрыгиваем вверх на поиск новой строки
          }//===============================================================================
tut:       fwrite(buf2,sizeof(uint8),2689248,file);  // запись в файл
           fclose(file);                             // закрываем файл

Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
andreichk
сообщение Nov 12 2013, 22:36
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



зачистка произведена........ просто тупо выпилил дефектные строки

Код
//======================= проверка кол-ва байтов в строке =====================
line=0;
for(p=0;p<2689248;++p)
{                         cc++;// считаем кол-во байт данных после маркера.

             if(buf[p]==0x55) {
                    if(buf[p+1]==0xAA) {  
                                  if(buf[p+2]==0x00){
                                          if(buf[p+3]==0x00){
                                                
if(cc==2612) memcpy(&buf4[++line*2611], &buf[p-cc], 2611); //выпиливаем бракованные строки

                                             cc = 0;  
}}}}}

Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
andreichk
сообщение Nov 24 2013, 11:01
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



исправил на правильную схему


--------------------
Go to the top of the page
 
+Quote Post
OlegH
сообщение Nov 24 2013, 14:14
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 186
Регистрация: 14-01-06
Из: Украина, г.Харьков
Пользователь №: 13 168



Цитата(andreichk @ Nov 24 2013, 13:01) *
Народ, подскажите, чтобы вывернуть сигнал ,достаточно такой простой схемы на ОУ или нужно что-то похитрее?


Чтобы так вывернуть сигнал - недостаточно.
Go to the top of the page
 
+Quote Post
andreichk
сообщение Nov 24 2013, 18:17
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



спасибо, я уже нашёл правильную схему


--------------------
Go to the top of the page
 
+Quote Post
andreichk
сообщение Dec 1 2013, 20:53
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Цитата(andreichk @ Nov 24 2013, 12:01) *
исправил на правильную схему



--------------------
Go to the top of the page
 
+Quote Post
andreichk
сообщение Dec 25 2013, 00:24
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



поднадоела мне командная строка и всякие там батники. Решил под винду красивое приложение собрать на визуале. форму слепил
и даже как-то пришил исходники, которые прошивают и запускают консоль. Но мне ходелось бы сделать так, чтобы инит железки
происходил прямо из оконного приложения.
В общем выглядит это так:

Код
int fpga(int argc, const char *argv[]) {
....................................тут код
}


а вызов процедуры я пытаюсь сделать так:

Код
char string[] = "-i 04b4:8613 -v 04b4:8613 -p -x c:/winVS2010/KAF1301E/kaf1301.xsvf";
   fpga(67, string);


только он ниразу не хочет компилиться и пишет мне что:

1>c:\winvs2010\kaf1301e\ASTROKAMERA.h(1024): error C2664: fpga: невозможно преобразовать параметр 2 из "char [67]" в "const char *[]"
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции

а я в толк не возьму, чего ему от меня надо? Подскажите приз, как правильно аргументы загонять в int fpga(int argc, const char *argv[])


--------------------
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Dec 25 2013, 04:50
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



fpga(67, &string);

Только argc - это кол-во передаваемых параметров как правило. У вас получается передаются 67 параметров - смотрите, поаккуратнее там.
Go to the top of the page
 
+Quote Post
andreichk
сообщение Dec 25 2013, 09:38
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Спасибо, я попробовал как вы советуете,

char *string = "-i 04b4:8613 -v 04b4:8613 -p -x c:/winVS2010/KAF1301E/kaf1301.xsvf";
fpga(6, &string);

теперь компилит, но при попытке вызова выскакивает ошибка



************** Текст исключения **************
System.DllNotFoundException: Не удается загрузить DLL "libfpgalink.dll": Не найдена указанная процедура. (Исключение из HRESULT: 0x8007007F)
в flFreeFile(Byte* )
в fpga(Int32 argc, SByte** argv)
в KAF1301E.ASTROKAMERA.kAF1301EToolStripMenuItem1_Click(Object sender, EventArgs e)
в System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
в System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
в System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
в System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
в System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
в System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
в System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
в System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ScrollableControl.WndProc(Message& m)
в System.Windows.Forms.ToolStrip.WndProc(Message& m)
в System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


ну и конечно ничего не работает. хотя либа #pragma comment (lib, "c:/winVS2010/KAF1301E/libfpgalink.lib")
в коде присутствует. Мне непонятно, какую именно процедуру не находит в ней?


--------------------
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Dec 25 2013, 21:50
Сообщение #12


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(andreichk @ Dec 25 2013, 13:38) *
...System.DllNotFoundException: Не удается загрузить DLL "libfpgalink.dll": Не найдена указанная процедура. (Исключение из HRESULT: 0x8007007F)
...либа #pragma comment (lib, "c:/winVS2010/KAF1301E/libfpgalink.lib")
в коде присутствует. Мне непонятно, какую именно процедуру не находит в ней?


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

я так понимаешь у Вас юзается не явная загрузка дэлеле.
Что нуна сделать:
1) проверить наличие указанной дэлеле по стандартным путям поиска загружаемых дэлеле. Просче всего подложить рядом с запускаемым экзешником.
2) убедиться в правильной версионности этой либы. т.е. файл описания именно от этой либы.
3) убедиться, что всё что может загружать данная дэлеле - так-же лежит рядом(лучше, пока в каталоге загрузки экзешника).
Для этого необходимо загрузить утилитку Dependency и посмотреть что треба ышо для загрузки.

более детальный анализ пока опустим. но постарайтесь найти толковый учебник по депенденси утилитке.
Но думаю дальнейших телодвижений не потребуется. sm.gif

Сообщение отредактировал kolobok0 - Dec 25 2013, 21:52
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Dec 26 2013, 05:16
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Я так понял, что дллка раньше загружалась, а в новом проекте не загружается. Для начала нужно проверить, как советовал kolobok0, есть ли дллка рядом с запускаемой программой. Если есть, но всё равно не работает, то причина может быть в преобразовании имён функций C/C++. Если дело в преобразовании имён, то как чинить не знаю. Гуглите "dll name mangling".

Сообщение отредактировал andrewlekar - Dec 26 2013, 05:17
Go to the top of the page
 
+Quote Post
andreichk
сообщение Dec 26 2013, 06:43
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



дадада, спасибо вам за подсказки, я вначале совсем забыл положить дллку п папку к ехешнику, но это только полдела, понадобилось ещё внаглую завести параметры из батника прямо в переменные внутри процедуры fpga(). То есть именно вот так:

//const char *vp = NULL, *ivp = NULL, *jtagPort = NULL, *xsvfFile = NULL, *dataFile = NULL;
const char *vp = "04b4:8613",
*ivp = "04b4:8613",
*jtagPort = NULL,
*xsvfFile = "c:/winVS2010/KAF1301E/kaf1301.xsvf",
*dataFile = NULL;
bool scan = false,
usbPower = true;//false;


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


--------------------
Go to the top of the page
 
+Quote Post
andreichk
сообщение Dec 26 2013, 19:56
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Народ подскажите , где в сети нормальный полноценный букварь найти по визуалу? Реально не могу вкурить, как с этих разных кнопочек параметры в код заталкивать
прилагаю проект, то , что работает на данный момент


--------------------
Go to the top of the page
 
+Quote Post
andreichk
сообщение Dec 28 2013, 11:05
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Разобрался с кнопочками и зависаниями, теперь приложение не залипает во время экспозиции. Могу вводить разные параметры с ползунков и прочих кнопок.Продолжаю развиваться.... smile3046.gif


--------------------
Go to the top of the page
 
+Quote Post
andreichk
сообщение Jan 1 2014, 22:01
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



народ, подскажите битте, как эту строку, кот. определена в одном файле
InfoText->Text = L"Запись в file"+ number_of_file +".raw";

а значение number_of_file высчитывается в другом, оформить так, чтобы оно выводилось на экран не по нажатию какой-нить кнопочки напр., а само обновлялось.....спасибо заранее


--------------------
Go to the top of the page
 
+Quote Post
Leopoldius
сообщение Jan 2 2014, 01:10
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 23-03-11
Из: Россия
Пользователь №: 63 824



Цитата(andreichk @ Jan 2 2014, 00:01) *
...
а значение number_of_file высчитывается в другом, оформить так, чтобы оно выводилось на экран не по нажатию какой-нить кнопочки напр., а само обновлялось
...


Для этого в языках высокого уровня, в той же студии смотрите компонент Timer. Он позволяет через равные промежутки выполнять какие то действия. Скажем завести глобальную переменную, в нее ложить данные. Если изменились - взвести флаг. В таймере обработать изменение, сбросить флаг. Сори, без примера. Я из противоположного стана Delphi и паскалей)) Студией только игрался

Немного про таймер для сишарпа
Go to the top of the page
 
+Quote Post
andreichk
сообщение Jan 4 2014, 14:37
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



спасибо за подсказку, вроде даже как-то получилось

Код
void textinformation(void)//тексты на экран
   {
      
               Col->Text = ""+color;
               Jar->Text = ""+jarkost;
               Kon->Text = ""+kontrast;
          TempText->Text = (float)Temp_Peltier/5 + L" °C";
          InfoText->Text = L"Запись в file"+ number_of_file +L".raw";
            TPtext->Text = L"Т.CCD: " + (float) peltier_current(Temp_Peltier)/10 + L" °C";// Т.пельтье  на экран
   }

private:

void InitializeTimer()
   {
      // Run this procedure in an appropriate event.
      timer1->Interval = 500;
      timer1->Enabled = true;
      // Hook up timer's tick event handler.
      this->timer1->Tick += gcnew System::EventHandler(this, &ASTROKAMERA::timer1_Tick);
   }

void timer1_Tick(System::Object ^ sender, System::EventArgs ^ e)
   {
     if (number_of_file)
        {
         timer1->Enabled = false;
         textinformation();//ВЫВОД ТЕКСТОВОЙ ИНФОРМАЦИИ КАЖДЫЕ 500 мсек
         timer1->Enabled = true;
        }
   }

немного подшлифовать и будет то, что доктор прописал... rolleyes.gif


--------------------
Go to the top of the page
 
+Quote Post
gosha-z
сообщение Jan 14 2014, 07:48
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 327
Регистрация: 30-10-05
Пользователь №: 10 288



Я как-то упустил момент, в который plain C превратился в Managed C++...
Go to the top of the page
 
+Quote Post
andreichk
сообщение Jan 14 2014, 20:16
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Цитата(gosha-z @ Jan 14 2014, 08:48) *
Я как-то упустил момент, в который plain C превратился в Managed C++...
я как-то вашего вопроса не понял.... laughing.gif


--------------------
Go to the top of the page
 
+Quote Post
andreichk
сообщение Feb 10 2014, 09:45
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Народ подскажите, в каком месте схему видеоусилителя подправить, чтобы убрать тянучки?
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
andreichk
сообщение Nov 11 2015, 19:46
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Привет народ, подскажите плиз, как мне организовать возможность дождаться конца создания файла, чтобы затем вывести его на форму ?

Код
char* cmd_line = (char*)(void*)Marshal::StringToHGlobalAnsi("c:\\Astrokamera_Dalsa\\Release\\GnuWin32\\bin\\raw2tiff.exe -H0 -w "\
                 +Size_Wert_Hor_to_file+" -l "+Size_Wert_Vert_to_file+" -b1 -dshort -ipixel -p minisblack -L c:\\file\\FTF5066C_"\
             +Size_Wert_Hor_to_file+"x"+Size_Wert_Vert_to_file+"_flat_"+numb+".raw c:\\file\\FTF5066C_"+Size_Wert_Hor_to_file+"x"\
        +Size_Wert_Vert_to_file+"_flat_"+numb+".tif");

        WinExec(cmd_line, SW_SHOW);

        Marshal::FreeHGlobal((System::IntPtr)cmd_line);
}

вот в этом месте надо организовать возможность дождаться конца создания файла
//===========последовательный вывод на экран картинок из каталога======================================================

  this->  pictureBox1->BackgroundImage = BackgroundImage->FromFile("c:\\file\\FTF5066C_"+Size_Wert_Hor_to_file+"x"+Size_Wert_Vert_to_file+"_flat_"+numb+".tif");


спасибо


--------------------
Go to the top of the page
 
+Quote Post
Gorby
сообщение Nov 12 2015, 14:31
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 449
Регистрация: 28-10-04
Из: Украина
Пользователь №: 1 002



Цитата(andreichk @ Feb 10 2014, 12:45) *
Народ подскажите, в каком месте схему видеоусилителя подправить, чтобы убрать тянучки?

Я бы С3 уменьшил. Раз в сто. По идее клампится каждый пиксель, то постоянная времени должна быть одного порядка с ним.
Например, в похожей схеме с 10МГц пиксельной частотой переходной конденсатор 120пФ (пикофарад), последовательно с ним резистор 47 Ом.


--------------------
Умею молчать на 37 языках...
Go to the top of the page
 
+Quote Post
andreichk
сообщение Nov 14 2015, 08:59
Сообщение #25


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Gorby ,с этим я уже разобрался, спасибо.
У меня другая проблема возникла.
Вобщем я добился последовательного вывода картинок на экран, просто тупо вставил временную задержку в 1 секунду между
созданием файла и его выводом. Но при этом я не могу удалить или переписать эти ТИФы из папки, так как они оказываются
открытыми в моём приложении и чтобы удалить их или переписать, нужно вначале приложение закрыть, что не совсем удобно.
Как можно сделать это, не закрывая приложение?
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 00:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01635 секунд с 7
ELECTRONIX ©2004-2016