Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 [3] 4  Все   Вниз
  Печать  
Автор Тема: CY7C68013 и C++ Builder С чего начать?  (Прочитано 116948 раз)
0 Пользователей и 1 Гость смотрят эту тему.
xenetron
Интересующийся

ru
Offline Offline

« Ответ #60 : 28-03-2013 21:31 » 

Я как раз обратил внимание что вначале дока говорится, что типа для простого обмена данными пригодится метод open close и xferdata. щас вот обрабатываю файлы bulkloopdlg, bulkloop, где как бы эти методы используются. но вот проблема. все пилилось на вижуале. и это очень заметно. Потому что вопервых: используется библиотека stdafx.h, вовторых постоянно идет связка с afx* библиотеками, которые идут с MFC. В инете посмотрел, что аналога stdafx в билдере нет. и никак обыграть не получиться. после того, как я комменчу всю инфу, связанную с afx и stdafx, появляется следующая ошибка
Код: (C++)
// BulkLoop.h : main header file for the BULKLOOP application
//

#if !defined(AFX_BULKLOOP_H__94303D2D_6EC6_4505_BE2A_85BDF0C7D94F__INCLUDED_)
#define AFX_BULKLOOP_H__94303D2D_6EC6_4505_BE2A_85BDF0C7D94F__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//#ifndef __AFXWIN_H__
//      #error include 'stdafx.h' before including this file for PCH
//#endif

#include "resource.h"           // main symbols

/////////////////////////////////////////////////////////////////////////////
// CBulkLoopApp:
// See BulkLoop.cpp for the implementation of this class
//

class CBulkLoopApp : public CWinApp
{
public:
        CBulkLoopApp();

// Overrides
        // ClassWizard generated virtual function overrides
        //{{AFX_VIRTUAL(CBulkLoopApp)
        public:
        virtual BOOL InitInstance();
        //}}AFX_VIRTUAL

// Implementation

        //{{AFX_MSG(CBulkLoopApp)
                // NOTE - the ClassWizard will add and remove member functions here.
                //    DO NOT EDIT what you see in these blocks of generated code !
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()
};


/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_BULKLOOP_H__94303D2D_6EC6_4505_BE2A_85BDF0C7D94F__INCLUDED_)
[BCC32 Error] BulkLoop.h(23): E2303 Type name expected
[BCC32 Error] BulkLoop.h(23): E2303 Type name expected
[BCC32 Error] BulkLoop.h(31): E2462 'virtual' can only be used with non-template member functions
[BCC32 Error] BulkLoop.h(31): E2303 Type name expected
[BCC32 Error] BulkLoop.h(31): E2139 Declaration missing ;
[BCC32 Error] BulkLoop.h(41): E2040 Declaration terminated incorrectly
[BCC32 Error] BulkLoopDlg.h(17): E2303 Type name expected
[BCC32 Error] BulkLoopDlg.h(20): E2293 ) expected
[BCC32 Error] BulkLoopDlg.h(23): E2303 Type name expected
[BCC32 Error] BulkLoopDlg.h(23): E2139 Declaration missing ;

и в общем теперь билдер просто помоему начал капризничать? или я может немного не понимаю, что именно не так объявлено. с объявлением класса вроде все норм. подскажите если знаете.
« Последнее редактирование: 28-03-2013 21:35 от xenetron » Записан
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #61 : 29-03-2013 10:28 » 

Улыбаюсь
Что касается CyАpi меня вопрос только в объявлении параметров Сypressa, его EP и т.д.

Добавлено через 3 часа, 22 минуты и 8 секунд:
xenetron, у меня та же фигня была. Из-за чего готовые примеры Cypressa рассматривать в Билдере было невозможно.
« Последнее редактирование: 29-03-2013 13:50 от Shakesbeer » Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #62 : 29-03-2013 19:46 » 

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

все. дискуссию закрываю. в дальнейшем, подобного рода вопросы, простите, буду отправлять в помойку.
« Последнее редактирование: 29-03-2013 19:49 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
xenetron
Интересующийся

ru
Offline Offline

« Ответ #63 : 01-04-2013 13:56 » 

Shakesbeer,  можешь попробовать поработать с проектом FxEEPROM. Он как раз под билдер сделан.
Ochkarik,  такая вот проблема, я подгрузил все файлы FxEEPROM в проект билдера, и вылезает такая ошибка

файлы проекта и фото ошибки прилагаются.http://zalil.ru/34401540

* ошибка дебагера.JPG (220.73 Кб - загружено 2788 раз.)
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #64 : 01-04-2013 15:48 » 

xenetron    Жизнь хороша, когда пьеш не спешаГлавное - кучность!
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
xenetron
Интересующийся

ru
Offline Offline

« Ответ #65 : 01-04-2013 17:02 » 

что в этот раз не так?
Записан
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #66 : 12-04-2013 11:00 » 

Не могу разобраться какие параметры надо задавать для bulk передачи.
Если кто-нибудь знает ресурс или статьи, где обсуждается это скиньте плииз)

P.S. Пишу на C++ Builder.

Добавлено через 6 дней, 3 часа, 45 минут и 42 секунды:
Использую Bulk передачу и прием.
В случае единичной передачи все проходит хорошо, без ошибок, посылает пакет, принимает:
Код: (C++)
 void __fastcall TForm1::Button4Click(TObject *Sender)
{
 USBDevice = new CCyUSBDevice(NULL);
 OVERLAPPED outOvLap, inOvLap;
 outOvLap.hEvent = CreateEvent(NULL, false, false, "CYUSB_OUT");
 //unsigned char buffer[128] = "1s";//(unsigned char*)Form1->Edit1->Text.c_str();
 //LONG length = 128;
 AnsiString stryng = Form1->Edit1->Text.c_str();
 char* buffer=new char[stryng.Length()+1];
 strcpy(buffer,stryng.c_str());
 LONG length = stryng.Length()+1;
 UCHAR *outContext = USBDevice->BulkOutEndPt->BeginDataXfer(buffer, length, &outOvLap);
 USBDevice->BulkOutEndPt->WaitForXfer(&outOvLap,100);
 USBDevice->BulkOutEndPt->FinishDataXfer(buffer, length, &outOvLap,outContext);
 CloseHandle(outOvLap.hEvent);
 unsigned char inBuf[128];
 ZeroMemory(inBuf, 128);
 inOvLap.hEvent = CreateEvent(NULL, false, false, "CYUSB_IN");
 UCHAR *inContext = USBDevice->BulkInEndPt->BeginDataXfer(inBuf, length, &inOvLap);
 USBDevice->BulkInEndPt->WaitForXfer(&inOvLap,100);
 USBDevice->BulkInEndPt->FinishDataXfer(inBuf, length, &inOvLap,inContext);
 CloseHandle(inOvLap.hEvent);
 Memo2->Lines->Add(AnsiString((char *)inBuf));
}

Создал поток передачи и приема, при нажатии на SpeedButton начинаются передача и прием, при повторном нажатии прекращаются.
Описание thread приема и передачи:
Код: (C++)
CCyUSBDevice *USBDevice;
OVERLAPPED outOvLap, inOvLap;
char* buffer;
unsigned char inBuf[512];
LONG length;

//---------------------------------------------------------------------------
//----------------------Reading----------------------------------------------
//---------------------------------------------------------------------------
class ReadThread : public TThread
{
private:
         void __fastcall Printing();   
protected:
        void __fastcall Execute();    
public:
        __fastcall ReadThread(bool CreateSuspended);  
};
//---------------------------------------------------------------------------
ReadThread *reader;     //îáúåêò ïîòîêà ReadThread
//---------------------------------------------------------------------------
__fastcall ReadThread::ReadThread(bool CreateSuspended) : TThread(CreateSuspended)
{}
//---------------------------------------------------------------------------
void __fastcall ReadThread::Execute()
{
 inOvLap.hEvent = CreateEvent(NULL, false, false, "CYUSB_IN");
 while(!Terminated)
  {
   UCHAR *inContext = USBDevice->BulkInEndPt->BeginDataXfer(inBuf, length, &inOvLap);
   USBDevice->BulkInEndPt->WaitForXfer(&inOvLap,100);
   USBDevice->BulkInEndPt->FinishDataXfer(inBuf, length, &inOvLap,inContext);
   Synchronize(Printing);
  }
 CloseHandle(inOvLap.hEvent);
}
//---------------------------------------------------------------------------
void __fastcall ReadThread::Printing()
{
 Form1->Label2->Caption = Form1->Label2->Caption.ToInt() + strlen(inBuf);
 Form1->Memo2->Lines->Add(AnsiString((char *)inBuf));
 ZeroMemory(inBuf, 512);
}
//---------------------------------------------------------------------------
//----------------------Writing----------------------------------------------
//---------------------------------------------------------------------------
class WriteThread : public TThread
{
private:
  void __fastcall Printing();
protected:
        void __fastcall Execute();
public:
        __fastcall WriteThread(bool CreateSuspended);
};
//-----------------------------------------------------------------------------
//............................ WriteThead ...............................
//-----------------------------------------------------------------------------

WriteThread *writer;     //îáúåêò ïîòîêà WriteThread

//---------------------------------------------------------------------------
__fastcall WriteThread::WriteThread(bool CreateSuspended) : TThread(CreateSuspended)
{}
//---------------------------------------------------------------------------
void __fastcall WriteThread::Execute()
{
 AnsiString stryng = Form1->Edit1->Text.c_str();
 buffer=new char[stryng.Length()+1]
 strcpy(buffer,stryng.c_str());
 length = stryng.Length()+1;
 //length = strlen(buffer);
 outOvLap.hEvent = CreateEvent(NULL, false, false, "CYUSB_OUT");
 UCHAR *outContext;
                                     
 while(!Terminated)
  {
   outContext = USBDevice->BulkOutEndPt->BeginDataXfer(buffer, length, &outOvLap);
   USBDevice->BulkOutEndPt->WaitForXfer(&outOvLap,100);
   USBDevice->BulkOutEndPt->FinishDataXfer(buffer, length, &outOvLap,outContext);
  }
 CloseHandle(outOvLap.hEvent);
}
//---------------------------------------------------------------------------
void __fastcall WriteThread::Printing()                               //               Stop sending data
{
}
//---------------------------------------------------------------------------
Сама кнопка SpeedButton:
Код: (C++)
 void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
 USBDevice  = new  CCyUSBDevice(NULL);
 if (SpeedButton1->Down)
  {
   Form1->Label2->Caption = "0";
   SpeedButton1->Caption = "Stop transfer";
   writer = new WriteThread(false);
   writer->FreeOnTerminate = true;
   reader = new ReadThread(false);
   reader->FreeOnTerminate = true;
  }
  else
  {
   SpeedButton1->Caption = "Begin transfer";
   if(writer)writer->Terminate();
   if(reader)reader->Terminate();
   CloseHandle(outOvLap.hEvent);  
   CloseHandle(inOvLap.hEvent);
  }
}
Некорректно завершается передача и прием при остановке потока, периодически возникают ошибка во время передачи.
Что не так сделал, объясните, плииз)

* 18.04.13.rar (513.65 Кб - загружено 811 раз.)
« Последнее редактирование: 18-04-2013 14:46 от Shakesbeer » Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #67 : 18-04-2013 15:37 » 

сто раз уже говорил. ну сколько можно то!
где проверки статусов?
ошибка - какая ошибка?
некорректно - в чем это "некорректно"?
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #68 : 19-04-2013 09:08 » 

сто раз уже говорил. ну сколько можно то!
где проверки статусов?
ошибка - какая ошибка?
некорректно - в чем это "некорректно"?
Каких статусов? Endpoit задается корректно.
Надо проверять статус каждый раз в потоке?
По поводу ошибки не точно выразился. При вторичном нажатии кнопки прием-передача должна быть остановлена, но процесс не останавливается, либо начинает принимать пустые байты.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #69 : 19-04-2013 09:25 » 

while(!Terminated)
Terminated - это что за переменная? и где оно выставляется
if(writer)writer->Terminate(); -  что эта функция делает? нить убивает? а в какой момент?
сайпрес - засланцы. описание функции у них все таки безобразное... назначение поля OVERLAPPED в этих функциях?
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #70 : 19-04-2013 10:36 » 

while(!Terminated)
Terminated - это что за переменная? и где оно выставляется
if(writer)writer->Terminate(); -  что эта функция делает? нить убивает? а в какой момент?
сайпрес - засланцы. описание функции у них все таки безобразное... назначение поля OVERLAPPED в этих функциях?
if(writer)writer->Terminate(); - это как раз прекращение потока, т.е. Terminated присваивается true, соответственно while(!Terminated) прекращает цикл.
Это я взял из своей старой программы работы с COM портом, там было все без проблем и прекрасно работало.

А пример передачи через CCyUSBDevice с OVERLAPPED и т.д. просто скопировал с примера Bulk из CyAPI.

Добавлено через 19 минут и 19 секунд:
Сделал такую защиту в потоке:

Код: (C++)
void __fastcall ReadThread::Execute()
{
 while(!Terminated)
  {  
 inOvLap.hEvent = CreateEvent(NULL, false, false, "CYUSB_IN");
   UCHAR *inContext = USBDevice->BulkInEndPt->BeginDataXfer(inBuf, length, &inOvLap);
   USBDevice->BulkInEndPt->WaitForXfer(&inOvLap,100);
   succesIn = USBDevice->BulkInEndPt->FinishDataXfer(inBuf, length, &inOvLap,inContext);
   if((!succesIn) || (!succesOut))   //Если прием или передача с ошибкой произошли
    {
     reader->Terminate();            //Прекращаем поток приема
     Form1->SpeedButton1->Caption = "Begin transfer";
     Form1->SpeedButton1->Down = false;
    }
   Synchronize(Printing);  
 CloseHandle(inOvLap.hEvent);
  }
}
Но все равно происходят сбои, я так понимаю что это просто потому что одновременно работают два потока: один записывает, а другой считывает. Для такой работы наверное стоит соединить их в один thread)

У меня появился вопрос по поводу другого принципа из CyAPI:
Код: (C++)
 USBDevice  = new  CCyUSBDevice(NULL);
 
 CCyControlEndPoint *eptOut  = USBDevice->ControlEndPt;
 
 AnsiString stryng = Form1->Edit1->Text.c_str();
 //char* bufOut1=new char[stryng.Length()+1];//length возвращает длинну без нуль-терминатора,поэтому +1

 eptOut->Target    = TGT_DEVICE;
 eptOut->ReqType   = REQ_VENDOR;
 eptOut->Direction = DIR_TO_DEVICE;
 eptOut->ReqCode   = 0x05;
 eptOut->Value     = 1;
 eptOut->Index     = 0;
 unsigned char  bufOut[512];
 ZeroMemory(bufOut, 512);
 LONG bufOutlen = 512;
// LONG bufOutlen = stryng.Length()+1;
 strcpy(bufOut,stryng.c_str());
 bool resSent = eptOut->XferData(bufOut, bufOutlen);
 if (resSent) Memo2->Lines->Add("Sending Ok");
   else Memo2->Lines->Add("Sending failed");

 CCyControlEndPoint  *eptIn = USBDevice->ControlEndPt;
 eptIn->Target  = TGT_DEVICE;
 eptIn->ReqType = REQ_VENDOR;
 eptOut->Direction = DIR_FROM_DEVICE;
 eptIn->ReqCode = 0x07;
 eptIn->Value   = 1;
 eptIn->Index   = 0;
 unsigned char  bufIn[512];
 LONG bytesToRead = bufOutlen;
 bool resRes = eptIn->Read(bufIn, bytesToRead);
 if (resRes) Memo2->Lines->Add("Recieving Ok");
   else Memo2->Lines->Add("Recieving failed");
 
 Memo2->Lines->Add(AnsiString((char *)bufIn));
Никак не разберусь какая величина ept указывает на номер Enpointa, на который будут передаваться или с которого будут считываться данные. А черт его знает...
« Последнее редактирование: 19-04-2013 10:56 от Shakesbeer » Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #71 : 19-04-2013 12:32 » 

конечная точка типа Control.
номер видимо либо eptIn->Value   = 1 или  eptIn->Index   = 0;

Добавлено через 3 минуты и 50 секунд:
Цитата
Но все равно происходят сбои, я так понимаю что это просто потому что одновременно работают два потока: один записывает, а другой считывает. Для такой работы наверное стоит соединить их в один thread)"
не вижу препятствий для одновременной работы двух нитей... если только интерфейс библиотеки сайпреса не позволяет.
а функция терминации меня все равно смущает. хрень какая то) если в нити не проверять эту переменную - нить никогда не остановится что ли?
« Последнее редактирование: 19-04-2013 12:36 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #72 : 19-04-2013 12:47 » 

не вижу препятствий для одновременной работы двух нитей... если только интерфейс библиотеки сайпреса не позволяет.
а функция терминации меня все равно смущает. хрень какая то) если в нити не проверять эту переменную - нить никогда не остановится что ли?
Смысл terminate в прекращении ReadThread или WriteThread.
Вот только почему-то после прекращения потока, работа системы с микросхемой продолжается до тех пор, пока не отсоединишь устройство.

Добавлено через 4 минуты и 41 секунду:
Я исправил ошибку, объединив два потока в один. Похоже они просто накладывались друг на друга  Какой был слон...
« Последнее редактирование: 19-04-2013 13:12 от Shakesbeer » Записан
xenetron
Интересующийся

ru
Offline Offline

« Ответ #73 : 19-04-2013 13:15 » 

Shakesbeer, твоя прога ж работает только на I/O?

Записан
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #74 : 19-04-2013 13:27 » 

Shakesbeer, твоя прога ж работает только на I/O?
Не понял вопроса.
Вот программа, там сделал три потока: на чтение из USb порта, на запись и на последовательные запись и чтение.
прописываешь Bulkloop.hex с помощью ControlCenter и юзаешь. Надеюсь поможет   Пиво!

* 19.04.13.rar (515.36 Кб - загружено 855 раз.)
Записан
xenetron
Интересующийся

ru
Offline Offline

« Ответ #75 : 19-04-2013 13:36 » 

Shakesbeer, у меня выскачила вот такая ошибка - [BCC32 Error] Unit1.cpp(304): E2285 Could not find a match for 'CCyUSBConfig::CCyUSBConfig(const CCyUSBConfig&)'
Код:
CCyUSBConfig cfg = USBDevice->GetUSBConfig(c);
в 304 строчке и при build-е спрашивает где находится package dss.bpi
Записан
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #76 : 19-04-2013 13:43 » 

Shakesbeer, у меня выскачила вот такая ошибка - [BCC32 Error] Unit1.cpp(304): E2285 Could not find a match for 'CCyUSBConfig::CCyUSBConfig(const CCyUSBConfig&)'
Код:
CCyUSBConfig cfg = USBDevice->GetUSBConfig(c);
в 304 строчке и при build-е спрашивает где находится package dss.bpi
Я использую Borland C++ Builder 6 и соответственно кипресовскую библиотеку CyApi.lib, которую брал из папки USB Suite->lib->BC6. Если используешь другую программу, то может и библиотеку стоит прикрепить другую? При переходе с одной программы на другую возникает множество проблем с библиотеками, попробуй поискать ответы в интернете о несовместимости.
Записан
xenetron
Интересующийся

ru
Offline Offline

« Ответ #77 : 19-04-2013 13:48 » 

Shakesbeer, странно. я тоже пользуюсь 6 билдером. посмотрел в дереве - и CyApi.h  и *.Lib подкл
Записан
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #78 : 19-04-2013 13:52 » 

Shakesbeer, странно. я тоже пользуюсь 6 билдером. посмотрел в дереве - и CyApi.h  и *.Lib подкл
В System кидал библиотеки usb100.h usb200.h и т.д.?
Записан
xenetron
Интересующийся

ru
Offline Offline

« Ответ #79 : 19-04-2013 13:57 » 

Shakesbeer,
Shakesbeer, странно. я тоже пользуюсь 6 билдером. посмотрел в дереве - и CyApi.h  и *.Lib подкл
В System кидал библиотеки usb100.h usb200.h и т.д.?
в систем в смысле в виндовскую папку?

Добавлено через 32 минуты и 34 секунды:
Shakesbeer, c этой ошибкой я разобрался. но теперь он от меня требует dss.bpi

Добавлено через 6 минут и 52 секунды:
Shakesbeer, все, я разобрался)
« Последнее редактирование: 19-04-2013 14:37 от xenetron » Записан
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #80 : 19-04-2013 14:40 » 

Shakesbeer, все, я разобрался)

Класс! Красавчик!
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #81 : 19-04-2013 15:01 » 

после завершения нити, попробуйте на всякий пожарный проверить статус завершения нити.
WaitForXfer(&inOvLap,100); - 100 - это время ожидания? пакеты гарантированно доставляются за это время? можно ли вызывать FinishDataXfer() если ожидание завершилось по таймауту?
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #82 : 20-04-2013 13:43 » 

Код:
после завершения нити, попробуйте на всякий пожарный проверить статус завершения нити.
WaitForXfer(&inOvLap,100); - 100 - это время ожидания? пакеты гарантированно доставляются за это время? можно ли вызывать FinishDataXfer() если ожидание завершилось по таймауту?
Специально ввел проверку
Код: (C++)
 succesIn = USBDevice->BulkInEndPt->FinishDataXfer(inBuf, length, &inOvLap,inContext); //Заканчиваем Bulk прием (прием пакета)
   if(!succesIn)   //Если прием или передача с ошибкой произошли
    {
     writereader->Terminate();            //Прекращаем поток передачи-приема
     Form1->SpeedButton1->Caption = "Begin transfer";
     Form1->SpeedButton1->Down = false;
    }
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #83 : 21-04-2013 00:49 » 

Shakesbeer, пардон,  на предыдущую версию кода видимо посмотрел.
там есть какие нибудь функции статус последней операции EP посмотреть?
при передаче по USB транзакция может быть завершена с ошибкой, в этом случае там надо ресет EndPoint-a делать. правда возможно это драйвер сайпреса автоматом делает - не знаю.
у меня полные затыки были когда аппаратно поток не правильно был сформирован.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
xenetron
Интересующийся

ru
Offline Offline

« Ответ #84 : 23-04-2013 08:47 » 

Shakesbeer, сможешь скинуть конфигурацию твоего builder'a? не могу понять почему твоя и некоторые другие программы нехотят полностью компилироваться
Записан
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #85 : 23-04-2013 09:02 » 

Использую Bulk передачи, получается около 1 Мбит/с. Писали что с CyAPI легко сделать 48, как достичь такой скорости?
Записан
xenetron
Интересующийся

ru
Offline Offline

« Ответ #86 : 23-04-2013 13:30 » 

Shakesbeer, а зачем тебе в проге нужен TImage??
Записан
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #87 : 23-04-2013 13:49 » 

xenetron, потому что принятые байты вывожу на экран в виде изображения, где 1 байт равен цвету одного пиксела.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #88 : 23-04-2013 14:40 » 

Использую Bulk передачи, получается около 1 Мбит/с. Писали что с CyAPI легко сделать 48, как достичь такой скорости?
48 не видел. на форуме на сайпреса пишут, что приложение на основе streamer(или как там его) с соответствующей прошивкой дает если не путаю порядка 40.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #89 : 23-04-2013 14:40 » 

Ochkarik, Похоже надо что-то делать с reset, потому что ошибка периодически выскакивает и поток тормозится.
В CyApI написано что нужно использовать Abort вместо Reset. Я так понимаю что Abort возвращает в начальное состояние Endpoint, после чего поток можно сразу же продолжать?
Записан
Страниц: 1 2 [3] 4  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines