Перейти к содержанию
    

Проект на Визуал студио Си 10.0 под винду

Привет народ. Требуется помощь знающих програмистов на визуал студио 10.0 под вин7 небольшого проекта, кот. изначально был написан по юникс системы. на сайте автора вроде говорится, что и под вин должно всё работать.

Вначале я попробовал поставит визуал 10. на свою ОСь вин7. но она не встала, наверное из за того, что винда палёная. тогда я по совету друзей установил виртуалку и сунул в неё винХР и на неё положил визуал. Встало без проблем. После сознания проекта компиляция не удалась, из за отсутствия толи каких-то хедеров , толи какие-то настройки неправильные , вобщем мне непонятно. Может кто-нить возьмётся поглядеть исходники, там все несколько килобайт и скомпилит под винду простое консольное приложение?

Код должен выполнять подключение ФПГА через кипресс, прошивать его и затем выводить какую-то инфу с подключенного к ФПГА АЦП.

вся инфа была взята отсюда: http://www.makestuff.eu/wordpress/software/fpgalink/

http://www.makestuff.eu/wordpress/software...infrastructure/

 

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

Заранее благодарен. Обещаю в случае успеха выложить красивые фотки ночного неба, если эта железка окончательно заработает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Всем спасибо за активную помощь. :santa2:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Итак, проект как-то заработал, матрица стала давать картинки. Но проблема в том, что картинки имеют дефекты в виде горизонтальный полос через каждую 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);                             // закрываем файл

post-16143-1384100453_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

//======================= проверка кол-ва байтов в строке =====================
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;  
}}}}}

post-16143-1384295811_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Народ, подскажите, чтобы вывернуть сигнал ,достаточно такой простой схемы на ОУ или нужно что-то похитрее?

 

Чтобы так вывернуть сигнал - недостаточно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

поднадоела мне командная строка и всякие там батники. Решил под винду красивое приложение собрать на визуале. форму слепил

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

происходил прямо из оконного приложения.

В общем выглядит это так:

 

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[])

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

fpga(67, &string);

 

Только argc - это кол-во передаваемых параметров как правило. У вас получается передаются 67 параметров - смотрите, поаккуратнее там.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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")

в коде присутствует. Мне непонятно, какую именно процедуру не находит в ней?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...System.DllNotFoundException: Не удается загрузить DLL "libfpgalink.dll": Не найдена указанная процедура. (Исключение из HRESULT: 0x8007007F)

...либа #pragma comment (lib, "c:/winVS2010/KAF1301E/libfpgalink.lib")

в коде присутствует. Мне непонятно, какую именно процедуру не находит в ней?

 

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

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

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

 

я так понимаешь у Вас юзается не явная загрузка дэлеле.

Что нуна сделать:

1) проверить наличие указанной дэлеле по стандартным путям поиска загружаемых дэлеле. Просче всего подложить рядом с запускаемым экзешником.

2) убедиться в правильной версионности этой либы. т.е. файл описания именно от этой либы.

3) убедиться, что всё что может загружать данная дэлеле - так-же лежит рядом(лучше, пока в каталоге загрузки экзешника).

Для этого необходимо загрузить утилитку Dependency и посмотреть что треба ышо для загрузки.

 

более детальный анализ пока опустим. но постарайтесь найти толковый учебник по депенденси утилитке.

Но думаю дальнейших телодвижений не потребуется. :)

Изменено пользователем kolobok0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем andrewlekar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

дадада, спасибо вам за подсказки, я вначале совсем забыл положить дллку п папку к ехешнику, но это только полдела, понадобилось ещё внаглую завести параметры из батника прямо в переменные внутри процедуры 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;

 

и только после всего этого оно заработало......

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

прилагаю проект, то , что работает на данный момент

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...