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

Знающий
   
Группа: Свой
Сообщений: 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, но этого на данном этапе недостаточно, так как надо что-то читать с АЦП и выводить на консоль. Заранее благодарен. Обещаю в случае успеха выложить красивые фотки ночного неба, если эта железка окончательно заработает.
--------------------
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 24)
|
Nov 10 2013, 16:21
|

Знающий
   
Группа: Свой
Сообщений: 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); // закрываем файл
Эскизы прикрепленных изображений
--------------------
|
|
|
|
|
Nov 12 2013, 22:36
|

Знающий
   
Группа: Свой
Сообщений: 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; }}}}}
Эскизы прикрепленных изображений
--------------------
|
|
|
|
|
Nov 24 2013, 14:14
|

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

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

Знающий
   
Группа: Свой
Сообщений: 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[])
--------------------
|
|
|
|
|
Dec 25 2013, 09:38
|

Знающий
   
Группа: Свой
Сообщений: 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") в коде присутствует. Мне непонятно, какую именно процедуру не находит в ней?
--------------------
|
|
|
|
|
Dec 25 2013, 21:50
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 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 и посмотреть что треба ышо для загрузки. более детальный анализ пока опустим. но постарайтесь найти толковый учебник по депенденси утилитке. Но думаю дальнейших телодвижений не потребуется.
Сообщение отредактировал kolobok0 - Dec 25 2013, 21:52
|
|
|
|
|
Dec 26 2013, 06:43
|

Знающий
   
Группа: Свой
Сообщений: 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;
и только после всего этого оно заработало...... щас у меня уже другие проблемы. надо научиться правильно перемещать всякие разные значения из процедур в форму и обратно, чтобы на форме какие-нить тексты писало, числа и чтобы с формы с кнопочек и ползунков задавать нужные настройки. Тут ещё вопросов миллион не меньше будет, так что борюсь с синтаксисом
--------------------
|
|
|
|
|
Nov 11 2015, 19:46
|

Знающий
   
Группа: Свой
Сообщений: 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"); спасибо
--------------------
|
|
|
|
|
Nov 12 2015, 14:31
|

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

|
Цитата(andreichk @ Feb 10 2014, 12:45)  Народ подскажите, в каком месте схему видеоусилителя подправить, чтобы убрать тянучки? Я бы С3 уменьшил. Раз в сто. По идее клампится каждый пиксель, то постоянная времени должна быть одного порядка с ним. Например, в похожей схеме с 10МГц пиксельной частотой переходной конденсатор 120пФ (пикофарад), последовательно с ним резистор 47 Ом.
--------------------
Умею молчать на 37 языках...
|
|
|
|
|
Nov 14 2015, 08:59
|

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

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