Форум программистов, компьютерный форум, киберфорум
Программирование драйверов
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для Andreichk
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 14

Неверная передача цвета с астрокамеры

15.11.2015, 15:59. Показов 2016. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет народ, делаю астрокамеру на матрице DALSA FTF6066C. Тактированием занимается ПЛИС СПАРТАН 500, который связан с ПК по усб камнем CY7C68013A-56. на комп был установлен драйвер от libusb-win32. В общем устройство успешно подключается к компу, пересылает туда-сюда различные команды, типа открыть затвор, закрыть затвор, задать ток охлаждения Пельтье и т.д. Даже можно уже получать снимки в РАВ формате и конвертировать их в ТИФ и другие. Всё было бы ничего, но постоянно вылезает косяк в виде неверной передачи цвета при преобразовании баеровского фильтра в цвет. У меня подозрение, что это происходит из за драйвера, так как я никак не могу контролировать, что там происходит при пересылке в УСБ-кабеле, хотя может быть и причина в другом, может сам libusb-win32 косячит, а может и что-то ещё.
Прошу знающих людей подсказать, куда копать?
Вот кусок кода, который отвечает за приём данных с камеры в комп и последующую компоновку РАВ файла.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//==== перед открытием затвора и началом накопления заряда разряжаем матрицу импульсом CR =====
 byte = 0x01;//00000001
              status = flWriteChannel(handle, 1000, 0x01, 1, &byte, &error); flSleep(500);
 
//========= ПОДАЧА ПИТАНИЯ НА MAX618 ===============================================
byte = 0x02;//00000010
            status = flWriteChannel(handle, 1000, 0x01, 1, &byte, &error); flSleep(100);
 
//========= УСТАНОВКА 8 ВОЛЬТ, РЕЖИМ НАКОПЛЕНИЯ ЗАРЯДОВ =======================================
byte = 0x06;//00000110 0x04 & 0x02 
            status = flWriteChannel(handle, 1000, 0x01, 1, &byte, &error);  
 
//======================= УПРАВЛЯЕМ ЗАТВОРОМ ================================
byte = 0x86;//10000110  0x80 & 0x04 & 0x02 // затвор открыть
            status = flWriteChannel(handle, 1000, 0x01, 1, &byte, &error); flSleep(100);
 
                          flSleep(exposition_time); // задаём время экспозиции
next_time=0;  
//========= ЗАТВОР ЗАКРЫТ,ПЕРЕКЛЮЧЕНИЕ НА 11 ВОЛЬТ И СЧИТЫВАНИЕ ДАННЫХ ===============
byte=0x0A;//00001010 0x08 & 0x02
          status = flWriteChannel(handle, 1000, 0x01, 1, &byte, &error);//
 
//========= ЗАПИСЬ В БУФЕР НЕПРЕРЫВНЫМ ПОТОКОМ ==================================
      if(flReadChannel(handle, 1000, 0x00, ccd, ccd_buf, &error)!=0)//проверка
              flReadChannel(handle, 1000, 0x00, ccd, ccd_buf, &error);//без проверки
      // запись циклом, но выглядит хуже, какая-то рванина
//for(p = 0; p <= image_lines; p++) flReadChannel(handle, 1000, 0x00, image_pixs*2, &ccd_buf[p*image_pixs*2], &error);//без проверки
 
//========= СТОП ПОСЫЛКА НА СЧИТЫВАНИЕ ДАННЫХ ===================================
byte=0x00;  //00000000 отключается всё  
          status = flWriteChannel(handle, 1000, 0x01, 1, &byte, &error);
 
//=============== обрезка верхнего края кадра ======================================
if(Size_Wert_Vert){
   for(p = 0; p <= 14976; p++) {  
          if(ccd_buf[p] == 0x01) { 
               if(ccd_buf[p+1] == 0x02)  line=0;  
                                 }
                              }
                   }
//=========================================================================
        line = 0; 
    anf_kadr = Size_Wert_Vert * pixel;     // 0 - 2600 нач. значение отсчёта пикселей
//============== переписывание буфера ===========================================
for(p = anf_kadr; p <= ccd; p++) {  
                        if(ccd_buf[p] == 0x01) { 
          if(ccd_buf[p+1] == 0x02) { 
                 memcpy(&buf_out[pixel * line++], &ccd_buf[p + offset_raw], pixel);//
                                        }
                                                }
                              }
//=========================================================================
    fwrite(buf_out, sizeof(unsigned char), write_raw, fp);//записываем данные в файл. последовательная запись
    flSleep(pause_time);                                //задаём время паузы между экспозициями
    fclose(fp);                                               //закрываем созданный файл
Привожу также кусок фотки, чтобы было понятней, о чём речь.
Если кому интересно, могу на мыло скинуть весь проект со схемами и чертежами ПП. Спасибо заранее
Миниатюры
Неверная передача цвета с астрокамеры  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2015, 15:59
Ответы с готовыми решениями:

Неверная работа функции по смене цвета
Всем привет! Суть: Есть функция запускающая анимацию смены цвета блока по достижению определенного значения. Проблема: Вначале все хорошо и...

Неверная передача значения
Есть typedef enum {a, b, c, d} my; есть функция void MyF(my x) ее вызов в виде MyF(0); MyF(a); работает нормально А...

Неверная передача типа
Выходит ошибка Expected edition; ...

22
 Аватар для Andreichk
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 14
15.03.2016, 20:01  [ТС]
Студворк — интернет-сервис помощи студентам
Привет народ. Есть проблема . Дело в том, что моё приложение скомпилирована на 32-битной семёрке и там оно прекрасно работает(ну почти), но возникла необходимость попытаться перекомпилировать его на 64-битной машине на Microsoft Visual Studio 2010 . Может кто-нибудь мне с этим помочь?
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
15.03.2016, 21:03
Цитата Сообщение от Andreichk Посмотреть сообщение
Может кто-нибудь мне с этим помочь?
в чем сложность?
вы можете компилировать приложение на любой машине. Главное указать целевую платформу (32/64), если такая опция вообще имеется.
0
 Аватар для Andreichk
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 14
16.03.2016, 10:54  [ТС]
да, спасибо, я уже справился сам.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.03.2016, 10:54
Помогаю со студенческими работами здесь

Передача цвета строк и цвета текста из stringgrid в excel и обратно
Доброго дня. Интересует вопрос передачи цвета строк и цвета текста из stringgrid в excel и желательно обратно, а так же формирование шапки...

Неверная передача данных из jQuery
Здравствуйте. Проблема в том, что JQuery видит data-product_alias = &quot;{{ product.alias }}&quot; нормаль, берёт из БД(Items), а когда передаю в...

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

неверная передача данных между перменными
Добрый день. Может в честь первого апреля. Может ещё почему, а может я просто болен и не замечаю очевидного. Суть проблемы. ...

Неверная передача значений между наследуемыми классами
Помогите. проблема появилась во время разработки. есть три класса CalculationType_E_and_H() CalculationSizeWaveguide() PowerLoss() ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru