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

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

ru
Offline Offline

« Ответ #30 : 22-03-2013 14:19 » 

Народ, а не подскажите, почему у меня   Bulk Loop не может распознать мою плату ?  хотя CyConsole и ControlCenter нормально видят
Записан
Ochkarik
Модератор

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

« Ответ #31 : 22-03-2013 15:28 » 

xenetron, там прошивка соответствующая лежит в папке проекта.
Записан

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

ru
Offline Offline

« Ответ #32 : 22-03-2013 18:33 » 

файл cyusb.lib ?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #33 : 23-03-2013 09:31 » 

Ochkarik, *наливает ведро валерянки* ))
Записан

Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #34 : 26-03-2013 09:34 » 

В статье http://www.efo.ru/cgi-bin/go?2524 имеется описание некоторых функций и файлов. Но вот где достать эти файлы, которые указаны в статье? В CySuiteUSB_3_4_7_B204.exe не все.
Например где найти PERIPH.C и DSCR.A51?
Записан
Ochkarik
Модератор

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

« Ответ #35 : 26-03-2013 12:01 » 

Shakesbeer,
Cypress\Cypress Suite USB 3.4.4\Firmware\Endpoint_Interrupts\Firmware\Endpoint_Interrupts\periph.c
Cypress\Cypress Suite USB 3.4.4\Firmware\Endpoint_Interrupts\Firmware\Endpoint_Interrupts\dscr.a51
не думаю что они могли куда то исчезнуть в следующей версии

Добавлено через 1 минуту и 47 секунд:
xenetron, пардон, не увидел последний вопрос.
файл прошивки для данного контроллера имеет расширение hex.

Алексей++, спасибо))) помогло))))
« Последнее редактирование: 26-03-2013 12:02 от Ochkarik » Записан

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

ru
Offline Offline

« Ответ #36 : 26-03-2013 13:35 » new

Shakesbeer, скажи, а где ты в Firmware нашел такую папку Endpoint...? у меня просто такой нету.
Записан
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #37 : 26-03-2013 13:46 » 

В CySuiteUSB_3.4.7 такого нет вообще.  А черт его знает...

Добавлено через 38 секунд:
Shakesbeer, скажи, а где ты в Firmware нашел такую папку Endpoint...? у меня просто такой нету.
Я такого не находил, потому и спрашиваю)
« Последнее редактирование: 26-03-2013 13:46 от Shakesbeer » Записан
xenetron
Интересующийся

ru
Offline Offline

« Ответ #38 : 26-03-2013 13:52 » 

Ochkarik, а можешь скинуть мне эти два файла - periph.c и dscr.a51. у меня просто версия программы 3.4.7, наверно забыли положить эти файлы или залили в какие то.
Записан
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #39 : 26-03-2013 13:59 » 

Аналогично и я попрошу)
Если есть возможность кинь архив с этими файлами
Записан
xenetron
Интересующийся

ru
Offline Offline

« Ответ #40 : 26-03-2013 14:00 » 

Shakesbeer, у тебя есть уже какие то наработке для программы обмена данных между контроллером и компом?
Записан
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #41 : 26-03-2013 14:06 » 

Shakesbeer, у тебя есть уже какие то наработке для программы обмена данных между контроллером и компом?
Да какие там наработки)
Мксимум - определение устройства с его VIDом и PIDом.
С Bulkloop и Streamer не разобрался. У меня ещё проблема в том что пишу на C++ Builder 6
Но всегда буду рад каким-либо примерам)
« Последнее редактирование: 26-03-2013 14:09 от Shakesbeer » Записан
xenetron
Интересующийся

ru
Offline Offline

« Ответ #42 : 26-03-2013 14:11 » 

Shakesbeer, я как бы тоже в той же ситуации нахожусь. В принципе как бы мне нужно как на подобе проги bulk или СyControl - передача данных и чтение их. Начал читать исх код Bulk. но что именно конкретно нужно пока не очень понятно.
Записан
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #43 : 26-03-2013 14:15 » 

А в какой программе пишем в Buildere или в Visuale?
Записан
xenetron
Интересующийся

ru
Offline Offline

« Ответ #44 : 26-03-2013 14:15 » 

Shakesbeer,  билдере
Записан
Ochkarik
Модератор

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

« Ответ #45 : 26-03-2013 14:15 » 

а какие примеры у вас вообще есть? там пол любому должны быть примеры и проекты для контроллера.
и вообще забыл а что за железо у вас? демоборда какая то или что?
Записан

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

ru
Offline Offline

« Ответ #46 : 26-03-2013 14:20 » 

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

Добавлено через 25 секунд:
CY7C68013 именно эта микросхема стоит.
« Последнее редактирование: 26-03-2013 14:20 от xenetron » Записан
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #47 : 26-03-2013 14:23 » 

а какие примеры у вас вообще есть? там пол любому должны быть примеры и проекты для контроллера.
и вообще забыл а что за железо у вас? демоборда какая то или что?
Кроме http://www.efo.ru/cgi-bin/go?2524 этой статьи я не нашел подробного описания для работы с Cypressoм.
Отладочная у меня Atlys(CY7C68013). Для неё нашел что-то вроде лабы на Dejazzer.com и Makestuff.eu там лампочками поморгать можно и проверить их статус.
Записан
xenetron
Интересующийся

ru
Offline Offline

« Ответ #48 : 26-03-2013 14:43 » 

что то заглохло всё)))
Записан
Shakesbeer
Постоялец

ru
Offline Offline

« Ответ #49 : 26-03-2013 14:47 » 

что то заглохло всё)))
Ждем подсказок)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #50 : 26-03-2013 14:58 » 

Ochkarik, да нивапрос! )
Записан

Ochkarik
Модератор

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

« Ответ #51 : 26-03-2013 15:00 » 

там на сайте примеров кучка, вы их смотрели?
http://www.cypress.com/?id=193&rtID=76

Добавлено через 14 минут и 48 секунд:
так. посмотрел новую, там проект для прерываний отсутствует. ну и фиг с ним)
смотрите примеры builk передачи или CyStreamer. для начала подойдет

Добавлено через 1 минуту и 17 секунд:
дальше. читаем по ссылкам что такое USB  и с чем его едят.
https://forum.shelek.ru/index.php/topic,14645.msg257887.html#msg257887

потом еще раз смотрим документацию от сайпреса.
« Последнее редактирование: 26-03-2013 15:15 от Ochkarik » Записан

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

ru
Offline Offline

« Ответ #52 : 26-03-2013 15:18 » 

так. посмотрел новую, там проект для прерываний отсутствует. ну и фиг с ним)
смотрите примеры builk передачи или CyStreamer. для начала подойдет
это ты о чем конкретно говорил?
Записан
Ochkarik
Модератор

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

« Ответ #53 : 26-03-2013 15:29 » 

это ты о чем конкретно говорил?
о чтении документации и о файле periph.c в SDK
а он вам вообще зачем был нужен?))
Записан

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

ru
Offline Offline

« Ответ #54 : 26-03-2013 15:33 » 

Ochkarik, да там просто автор статьи на сайте ego... говорит что для проекта нужны 4 файла, в том числе и файл прерываний. я в общем посмотрел доки на сайте cypress-а. вообще ничего не понял что нужно. если где то в названии содержалось что либо о bulk, то после открытия файла - ничего полезного в содержимом не нашел...
Записан
Ochkarik
Модератор

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

« Ответ #55 : 26-03-2013 20:11 » 

xenetron, сути там все основные функции в примерах по одному шаблону построены.
возьмите пример builk передачи из SDK - думаю вам будет не приципиально, это как раз пример с передачей данных. не знаю как в новой версии SDK но в предыдущих этот проект был для Keil студии, контроллер usb на С51 ядре собран.
далее втыкаете ваше устройство, оно опознается драйвером сайпреса (если в нем прошивки из eeprom по i2c не залито). дальше их утилитой заливаете в контроллер скомпилированный проект, устройство переобноруживается в соответствии с заданными VID-PID. если в inf прописать - тоже встанет драйвер от сайпреса.
дальше той же утилитой можно будет почитать пописать/почитать в контроллер по USB - builk передачи.
проект довольно простенький, но для его понимания надо знать физику работы USB и доку. у них там есть что то типа программинг гайд (не помню как дословно называлась). там все тоже более менее внятно, если знать что такое USB шина и с чем ее едят. да и надо разобраться с их регистрами контроллера - там их довольно много. все учить не надо, но хотя бы общее назначение надо знать.
как-то так)

PS статью глянул. ну собстно там ничего нет... чего нет в документации. просто краткая выжимка. это не избавляет от необходимости читать доку.
« Последнее редактирование: 26-03-2013 20:17 от Ochkarik » Записан

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

ru
Offline Offline

« Ответ #56 : 27-03-2013 11:44 » 

У меня основная проблема состоит в том что я работaю на Buildere, а большинство программ написано на Visuale. Есть какие-нибудь примеры на нём?
А то при переходе может возникнуть множество проблем...
Записан
Ochkarik
Модератор

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

« Ответ #57 : 27-03-2013 13:10 » 

Shakesbeer, честно говоря,  мне не совсем ясны проблемы которые могут возникнуть) это ж просто компилятор с линкером) ну выкиньте визуализацию, делов то)
Записан

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

ru
Offline Offline

« Ответ #58 : 28-03-2013 14:14 » 

Нашел хороший пример, но перевести на Builder пока не смог)
Код: (C++)
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using CyUSB;

namespace BulkLoop
{
    public partial class Form1 : Form
    {
        CyUSBDevice myDevice = null;                                                    // Create a USB device for our application called myDevice
        USBDeviceList usbDevices = null;                                                // Find all USBDevice objects that represent all USB devices
        CyBulkEndPoint BulkInEndPt = null;                                              // We need one Bulk IN endpoint
        CyBulkEndPoint BulkOutEndPt = null;                                             // We need one Bulk OUT endpoint

        Thread tXfers;
       
        bool bRunning = false;

        int value,value1,value2,value3;
        int byteCount = 0;

        long outCount, inCount;

        const int XFERSIZE = 512;
        byte[] outData = new byte[XFERSIZE];
        byte[] inData = new byte[XFERSIZE];
        //bool bres;
        // These 2 needed for TransfersThread to update the UI
        delegate void UpdateUICallback();
        UpdateUICallback updateUI;
        protected override void OnPaint(PaintEventArgs e)
        {
            Bitmap bitmap = new Bitmap(80, 60);// может ещё захочешь куда пиксел сунтуть поэтому 10 на 10;
            for (int i = 0; i < 80; i++)
                for (int j = 0; j < 60; j++)
                    bitmap.SetPixel(i, j, Color.Black);

            e.Graphics.DrawImage(bitmap, new Point(30, 450));

            base.OnPaint(e);
        }
        public Form1()
        {
            InitializeComponent();                                                       // All components of the form are initialized

            // Setup the callback routine for updating the UI
            updateUI = new UpdateUICallback(StatusUpdate);                               // Setup the callback routine for updating the UI
            tXfers = new Thread(new ThreadStart(TransfersThread));
            tXfers.IsBackground = true;
            tXfers.Priority = ThreadPriority.Highest;
             //Create a list of CYUSB devices
            usbDevices = new USBDeviceList(CyConst.DEVICES_CYUSB);                       // All devices served by CyUSB.sys is added to the list usbDevices
            GetDevice();                                                                //This function gets the device with particular VID and PId
                                                                                        //and assign EP2 as BulkoutEP, EP6 as BilkInEP

            //Adding event handlers for device attachment and device removal
            usbDevices.DeviceAttached += new EventHandler(usbDevices_DeviceAttached);   // Eventhandler assigned to DeviceAttached
                                                                                        // to handle the event when a device is attached
            usbDevices.DeviceRemoved += new EventHandler(usbDevices_DeviceRemoved);     // Eventhandler assigned to DeviceRemoved
                                                                                        // to handle the event when a device is removed
        }
        /* Summary
           This is the event handler for Device Attachment event.
       */

        public void usbDevices_DeviceAttached(object sender, EventArgs e)               // Eventhandler assigned to DeviceAttached
        {
             GetDevice();                                                               //This function gets the device with particular VID and PId
                                                                                        //and assign EP2 as BulkoutEP, EP6 as BilkInEP
        }

        /* Summary
            This is the event handler for Device removal event.
        */

        public void usbDevices_DeviceRemoved(object sender, EventArgs e)                 // Eventhandler assigned to DeviceRemoved
        {
            //if (tXfers.IsAlive)
            //{
            //    tXfers.Abort();
            //    tXfers.Join();
            //    tXfers = null;
            //    MessageBox.Show("thread alive");
            //}
            //BulkInEndPt.Abort();
            //BulkOutEndPt.Abort();
            myDevice = usbDevices[0x04b4, 0x1004] as CyUSBDevice;                        // Assign all devices with VID/PID of 0x04B4/0x1004 to myDevice
            if (myDevice == null)                                                        // If myDevice doesnt exist
            {
                bRunning = false;
                StartBtn.Text = "Start";
                StartBtn.BackColor = Color.Aquamarine;

                //if (tXfers.IsAlive)
                //{
                //    tXfers.Abort();
                //    tXfers.Join();
                //    tXfers = null;
                //    if (myDevice != null) myDevice.Dispose();
                //    MessageBox.Show("BulkLoop Device Not connected");
                //}
                 
                label1.Text = "BulkLoop Device Not Connected";
                StartBtn.Enabled = false;
            }
           
           
        }

        /* Summary
            The function gets the device, as the one having VID=04b4 and PID=1004
            This will detect only the devices with the above VID,PID combinations
        */

        public void GetDevice()
        {

            myDevice = usbDevices[0x04b4, 0x1004] as CyUSBDevice;              // Assign all devices with VID/PID of 0x04B4/0x1004 to myDevice
               
                if (myDevice != null)                                          // If myDevice exists
                {
                    BulkOutEndPt = myDevice.EndPointOf(0x02) as CyBulkEndPoint;     //Assign EP2 as BulkOutEP and EP6 as BulkInEP
                    BulkInEndPt = myDevice.EndPointOf(0x86) as CyBulkEndPoint;
                    label1.Text = "Bulkloop Device connected";
                    StartBtn.Enabled = true;
                }
                else
                    label1.Text = "No Bulkloop Device Detected";
        }

        /* Summary
                    Executes on Start button click
        */

        private void StartBtn_Click(object sender, EventArgs e)
        {
            if (!bRunning)
            {
                if (ValBox.Text != "")
                {
                    byte[] byteArray = Encoding.ASCII.GetBytes(ValBox.Text);
                    byteCount = Encoding.ASCII.GetByteCount(ValBox.Text);
                    value = value1 = value2 = value3 = 0;

                    if(byteCount >= 1) value = Convert.ToInt32(Encoding.ASCII.GetString(byteArray, 0, 1), 16);
                    if(byteCount >= 2) value = Convert.ToInt32(Encoding.ASCII.GetString(byteArray, 0, 2), 16);
                    if(byteCount >= 3) value1 = Convert.ToInt32(Encoding.ASCII.GetString(byteArray, 2, 1), 16);
                    if(byteCount >= 4) value1 = Convert.ToInt32(Encoding.ASCII.GetString(byteArray, 2, 2), 16);
                    if(byteCount >= 5) value2 = Convert.ToInt32(Encoding.ASCII.GetString(byteArray, 4, 1), 16);
                    if(byteCount >= 6) value2 = Convert.ToInt32(Encoding.ASCII.GetString(byteArray, 4, 2), 16);
                    if(byteCount >= 7) value3 = Convert.ToInt32(Encoding.ASCII.GetString(byteArray, 6, 1), 16);
                    if(byteCount >= 8) value3 = Convert.ToInt32(Encoding.ASCII.GetString(byteArray, 6, 2), 16);
                }        
                else
                    //tell user that he need to put correct value. -- open
               
                outCount = 0;
                inCount = 0;

                OutdataBox.Text = "";
                InDataBox.Text = "";
               
                bRunning = true;
                StartBtn.Text = "Stop";
                StartBtn.BackColor = Color.Pink;

                //creates new thread
                tXfers = new Thread(new ThreadStart(TransfersThread));
                tXfers.IsBackground = true;
                tXfers.Priority = ThreadPriority.Highest;
                //Starts the new thread
                tXfers.Start();
            }
            else
            {
                //Makes the thread stop and aborts the thread
                bRunning = false;
                StartBtn.Text = "Start";
                StartBtn.BackColor = Color.Aquamarine;

                if (tXfers == null) return;

                if (tXfers.IsAlive)
                {
                    tXfers.Abort();
                    tXfers.Join();
                    tXfers = null;
                }
            }
        }

        /* Summary
           Called from TransfersThread().When you click on start button, it will create and start a new thread named 'TransfersThread'.
            The function outputs the bytes transfered to outData[] buffer.
        */

        private void SetOutputData()
        {
            for (int i = 0; i < XFERSIZE; i++)
            {
                if((byteCount >= 1) && (i < XFERSIZE)) outData = (byte)value;
                if((byteCount >= 3) && (++i < XFERSIZE)) outData = (byte)value1;
                if((byteCount >= 5) && (++i < XFERSIZE)) outData = (byte)value2;
                if((byteCount >= 7) && (++i < XFERSIZE)) outData = (byte)value3;
            }
                         
        }
       
        /* Summary
           This thread is initiated on start button click.Run the thread and executes the transfer and invokes the StatusUpdate to update the UI
        */


        public void TransfersThread()
        {
            int xferLen = XFERSIZE;

            bool bResult = true;

            // Loop stops if either an IN or OUT transfer fails
            for (; bRunning && bResult; )
            {
                SetOutputData();                                                         //this function sets the bytes in outData to be transferred to OUT EP

                xferLen = XFERSIZE;
                //calls the XferData function for bulk transfer(OUT) in the cyusb.dll
                bResult = BulkOutEndPt.XferData(ref outData, ref xferLen);
                outCount += xferLen;

                if (bResult)
                {
                    //calls the XferData function for bulk transfer(IN) in the cyusb.dll
                    bResult = BulkInEndPt.XferData(ref inData, ref xferLen);
                    inCount += xferLen;
                }

                // Call StatusUpdate() in the main thread
                this.Invoke(updateUI);
                //bres = bResult;
            }

            bRunning = false;

            // Call StatusUpdate() in the main thread
            this.Invoke(updateUI);
        }
        /* Summary
          This is the call back function for updating the UI(user interface) and is called from TransfersThread. This updates the OutdataBox,InDataBox
           with the Bytes transferred; and NumBytesOut,NumBytesIn with the number of Bytes transferred.
         
       */

        public void StatusUpdate()
        {
            StringBuilder dataStrOut = new StringBuilder();
            StringBuilder dataStrIn = new StringBuilder();
           
            if (bRunning)
            {
                for (int i = 0; i < XFERSIZE; i++)
                {
                    if ((i % 16) == 0) dataStrOut.Append(string.Format("\r\n{0:X4}", i));
                    dataStrOut.Append(string.Format(" {0:X2}", outData));
                }
                dataStrOut.Append(string.Format("\r\n"));
                OutdataBox.Text += dataStrOut.ToString();                                   //This updates the OutdataBox with bytes transferred OUT

                for (int i = 0; i < XFERSIZE; i++)
                {
                    if ((i % 16) == 0) dataStrIn.Append(string.Format("\r\n{0:X4}", i));
                    dataStrIn.Append(string.Format(" {0:X2}", inData));
                }
                dataStrIn.Append(string.Format("\r\n"));
                InDataBox.Text += dataStrIn.ToString();                                      //This updates the InDataBox with bytes transferred IN
            }


            NumBytesOut.Text = outCount.ToString();                                          //This updates the NumBytesOut with number of bytes transferred OUT
            NumBytesIn.Text = inCount.ToString();                                           //This updates the NumBytesIn with number of bytes transferred IN
            Refresh();

            StartBtn.Text = bRunning ? "Stop" : "Start";
            StartBtn.BackColor = bRunning ? Color.Pink : Color.Aquamarine;

            //Text = bres.ToString();

           
        }
        /* Summary
            closing the open form
        */

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            // If close was selected while running the loopback, shut it down.
            if (bRunning)
                StartBtn_Click(this, null);

            if (usbDevices != null) usbDevices.Dispose();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}
Тут ещё появляется небольшая разница в библиотеках CyUSB.dll и CyAPI.lib
Поставить вместо USBDevice CyUSBDevice я догадался, но вот USBDeviceList в CyAPI.lib нету, правда сразу нашел описание класса:
Код: (C++)
 #region Сборка CyUSB.dll, v2.0.50727
// D:\Programming\CYPRESS_USB\Cypress\AN70983\Bulkloop\Application\Source\BulkLoop\bin\Debug\CyUSB.dll
#endregion

using System;
using System.Collections;
using System.Reflection;

namespace CyUSB
{
    public class USBDeviceList : IDisposable, IEnumerable
    {
        public USBDeviceList(byte DeviceMask);
        public USBDeviceList(byte DeviceMask, App_PnP_Callback fnCallBack);

        public int Count { get; }

        public USBDevice this[int index] { get; set; }
        public USBDevice this[string infName] { get; }
        public USBDevice this[int VID, int PID] { get; }
        public CyHidDevice this[string sMfg, string sProd] { get; }
        public CyHidDevice this[int VID, int PID, int UsagePg, int Usage] { get; }
        public CyHidDevice this[string sMfg, string sProd, int UsagePg, int Usage] { get; }

        public event EventHandler DeviceAttached;
        public event EventHandler DeviceRemoved;

        public USBDevice Add();
        public byte DeviceIndex(USBDevice dev);
        public void Dispose();
        protected virtual void Dispose(bool isDisposing);
        public IEnumerator GetEnumerator();
        public void Remove(CySafeFileHandle hDev);
        public void Remove(IntPtr hDev, USBEventArgs e);
    }
}
Этого я пока не пробовал, но с другой стороны всегда можно определить устройство банально открывая все USB и сравнивая VID и PID...

Аналогичная проблема с Thread:
Код: (C++)
 #region Сборка mscorlib.dll, v2.0.50727
// C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll
#endregion

using System;
using System.Globalization;
using System.Runtime.ConstrainedExecution;
using System.Runtime.InteropServices;
using System.Runtime.Remoting.Contexts;
using System.Security.Principal;

namespace System.Threading
{
    // Сводка:
    //     Создает и контролирует поток, задает приоритет и возвращает статус.
    [ClassInterface(ClassInterfaceType.None)]
    [ComVisible(true)]
    [ComDefaultInterface(typeof(_Thread))]
 public sealed class Thread : CriticalFinalizerObject, _Thread
    {
 public Thread(ParameterizedThreadStart start);
public Thread(ThreadStart start);
public Thread(ParameterizedThreadStart start, int maxStackSize);
public Thread(ThreadStart start, int maxStackSize);
[Obsolete("The ApartmentState property has been deprecated.  Use GetApartmentState, SetApartmentState or TrySetApartmentState instead.", false)]
        public ApartmentState ApartmentState { get; set; }
public static Context CurrentContext { get; }
 public CultureInfo CurrentCulture { get; set; }
public static IPrincipal CurrentPrincipal { get; set; }
public static Thread CurrentThread { get; }
public CultureInfo CurrentUICulture { get; set; }
public ExecutionContext ExecutionContext { get; }
public bool IsAlive { get; }
public bool IsBackground { get; set; }
public bool IsThreadPoolThread { get; }
 public int ManagedThreadId { get; }
public string Name { get; set; }
public ThreadPriority Priority { get; set; }
public ThreadState ThreadState { get; }
public void Abort();
public void Abort(object stateInfo);
public static LocalDataStoreSlot AllocateDataSlot();
public static LocalDataStoreSlot AllocateNamedDataSlot(string name);
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
public static void BeginCriticalRegion();
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
public static void BeginThreadAffinity();
public static void EndCriticalRegion();
        public static void EndThreadAffinity();
        public static void FreeNamedDataSlot(string name);
        public ApartmentState GetApartmentState();
        [Obsolete("Thread.GetCompressedStack is no longer supported. Please use the System.Threading.CompressedStack class")]
        public CompressedStack GetCompressedStack();
        public static object GetData(LocalDataStoreSlot slot);
        public static AppDomain GetDomain();
        public static int GetDomainID();
        [ComVisible(false)]
        public override int GetHashCode();
        public void Interrupt();
        public void Join();
        public bool Join(int millisecondsTimeout);
        public bool Join(TimeSpan timeout);
        public static void MemoryBarrier();
        public static void ResetAbort();
System.Security.Permissions.SecurityPermission.
        [Obsolete("Thread.Resume has been deprecated.  Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources.  http://go.microsoft.com/fwlink/?linkid=14202", false)]
        public void Resume();
        public void SetApartmentState(ApartmentState state);
        [Obsolete("Thread.SetCompressedStack is no longer supported. Please use the System.Threading.CompressedStack class")]
        public void SetCompressedStack(CompressedStack stack);
        public static void SetData(LocalDataStoreSlot slot, object data);
        public static void Sleep(int millisecondsTimeout);
        public static void Sleep(TimeSpan timeout);
        [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
        public static void SpinWait(int iterations);
        public void Start();
        public void Start(object parameter);
System.Security.Permissions.SecurityPermission.
        [Obsolete("Thread.Suspend has been deprecated.  Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources.  http://go.microsoft.com/fwlink/?linkid=14202", false)]
        public void Suspend();
        public bool TrySetApartmentState(ApartmentState state);
        public static byte VolatileRead(ref byte address);
        public static double VolatileRead(ref double address);
        public static float VolatileRead(ref float address);
        public static int VolatileRead(ref int address);
        public static IntPtr VolatileRead(ref IntPtr address);
        public static long VolatileRead(ref long address);
        public static object VolatileRead(ref object address);
        [CLSCompliant(false)]
        public static sbyte VolatileRead(ref sbyte address);
        public static short VolatileRead(ref short address);
        [CLSCompliant(false)]
        public static uint VolatileRead(ref uint address);
        [CLSCompliant(false)]
        public static UIntPtr VolatileRead(ref UIntPtr address);
        [CLSCompliant(false)]
        public static ulong VolatileRead(ref ulong address);
        [CLSCompliant(false)]
        public static ushort VolatileRead(ref ushort address);
        public static void VolatileWrite(ref byte address, byte value);
        public static void VolatileWrite(ref double address, double value);
        public static void VolatileWrite(ref float address, float value);
        public static void VolatileWrite(ref int address, int value);
        public static void VolatileWrite(ref IntPtr address, IntPtr value);
        public static void VolatileWrite(ref long address, long value);
        public static void VolatileWrite(ref object address, object value);
        [CLSCompliant(false)]
        public static void VolatileWrite(ref sbyte address, sbyte value);
        public static void VolatileWrite(ref short address, short value);
        [CLSCompliant(false)]
        public static void VolatileWrite(ref uint address, uint value);
        [CLSCompliant(false)]
        public static void VolatileWrite(ref UIntPtr address, UIntPtr value);
        [CLSCompliant(false)]
        public static void VolatileWrite(ref ulong address, ulong value);
        [CLSCompliant(false)]
        public static void VolatileWrite(ref ushort address, ushort value);
    }
}
С этим потоком совсем непонятно, честно говоря. Чем его можно заменить или переправить в Builder?

Столкнулся я с другой проблемой - delegate, я так понял тут можно вызывать какую-нибудь функции взамен.
Записан
Ochkarik
Модератор

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

« Ответ #59 : 28-03-2013 19:19 » 

Shakesbeer,
Cypress CyAPI Programmer's Reference
Цитата
1 Overview
Library Overview
CyAPI.lib provides a simple, powerful C++ programming interface to USB devices. More specifically, it
is a C++ class library that provides a high-level programming interface to the CyUsb.sys device driver.
The library is only able to communicate with USB devices that are served by (i.e. matched to) this driver.
Rather than communicate with the driver via Windows API calls such as SetupDiXxxx and
DeviceIoControl, applications call simpler CyAPI methods such as Open, Close, and XferData to
communicate with USB devices.
To use the library, you need to include the header file, CyAPI.h, in files that access the CCyUSBDevice
class. In addition, the statically linked CyAPI.lib file must be linked to your project. Versions of the .lib
file are available for use with Microsoft Visual Studio 2008, 2010 and Borland C++ Builder 6.0. Please
refer section How to Link to CyAPI.lib for more detail.

The library employs a Device and EndPoints use model. To use the library you must create an
instance of the CCyUSBDevice class using the new keyword. A CCyUSBDevice object knows how
many USB devices are attached to the CyUsb.sys driver and can be made to abstract any one of those
devices at a time by using the Open method. An instance of CCyUSBDevice exposes several methods
and data members that are device-specific, such as DeviceName, DevClass, VendorID, ProductID, and
SetAltIntfc.
When a CCyUSBDevice object is open to an attached USB device, its endpoint members provide an
interface for peforming data transfers to and from the device's endpoints. Endpoint-specific data
members and methods such as MaxPktSize, TimeOut, bIn, Reset and XferData are only accessible
through endpoint members of a CCyUSBDevice object.
In addition to its simplicity, the class library facilitates creation of sophisticated applications as well.
The CCyUSBDevice constructor automatically registers the application for Windows USB Plug and Play
event notification. This allows your application to support "hot plugging" of devices. Also, the
asynchronous BeginDataXfer/WaitForXfer/FinishDataXfer methods allow queueing of multiple data
transfer requests on a single endpoint, thus enabling data streaming from the application level.
мне продолжить? или все таки сами начнете читать?)
« Последнее редактирование: 28-03-2013 19:23 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Страниц: 1 [2] 3 4  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines