Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
18 / 18 / 3
Регистрация: 16.02.2010
Сообщений: 243
1

Управление устройством через USB

20.06.2011, 14:02. Показов 3953. Ответов 12
Метки нет (Все метки)

Как мне управлять вот такой вот вещью через usb из своей проги?

Вот исходник на Borland C++
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2011, 14:02
Ответы с готовыми решениями:

Управление рулем (периферийным устройством)
всем привет. у меня возникло несколько трудностей с моей семестровой. главной моей проблемой стало ...

Управление телефоном через USB интерфейс (на примере Sony Erricson R300i) на C#
Доброго времени суток, уважаемые форумчане:) Поставили задачу написать программу для управления...

Обмен данными с устройством через com-порт
Здравствуйте. Я работаю с Акип'ом и мне нужно считывать с него измерения. Проблема в том, что я...

Управление Mosfet через USB
Добрый день. Как можно реализовать подачу импульсов заданной частоты и длительности на порт RS 232,...

12
179 / 175 / 14
Регистрация: 17.01.2011
Сообщений: 349
20.06.2011, 15:54 2
В конце текста по вашей же ссылке:
Или коммадной строкой типа "MP709.exe RELE_0=ON RELE_1=ON" (см описание).
Собственно, кроме System.Diagnostics.Process.Start ничего и не нужно.
0
Mobile Developer
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
20.06.2011, 21:01 3
Насколько я понимаю это всетаки UART, а значит к нему можно подключится через SerialPort в шарпе.
Единственная загвоздка это протокол, а точнее комманды которые он принимаетЭ, но их можно вытащить из исходника на С++, хотя после беглово просмотра, придется всеже дебаггером пробежаться по методам USB_GET(SET)_FEATURE() и посмотреть что отсылается а что принимается, после чего отправлять данные комманды через SerialPort в C#
0
178 / 179 / 54
Регистрация: 01.06.2011
Сообщений: 507
20.06.2011, 21:27 4
Slap, прав. В описании сказано о всех функциях, управление ведётся двумя способами - через файлы .set и ещё какой-то или через командную строку. Но для этого необходимо установить программу (что-то на подобие драйвера) . Хочется только дополнить об этом:
Если Вы хотите чтобы программа всегда висела в трее - тогда управляйте ей через файл MP709.local.set.
0
Mobile Developer
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
20.06.2011, 21:44 5
Если нужно управлять из своей программы зачем использовать костыли и запускать стороннии программы когда можно в свою добавить пару строк кода и пару кнопок?ИМХО.
0
178 / 179 / 54
Регистрация: 01.06.2011
Сообщений: 507
20.06.2011, 22:07 6
Цитата Сообщение от lifestyle Посмотреть сообщение
Если нужно управлять из своей программы зачем использовать костыли и запускать стороннии программы когда можно в свою добавить пару строк кода и пару кнопок?ИМХО.
А это что?
Как можно управлять MP709 из своей программы, написанной например в Delphi?
При запущенной программе через файлы MP709.local.set и MP709.local.shd (см описание).
Или коммадной строкой типа "MP709.exe RELE_0=ON RELE_1=ON" (см описание).
0
Mobile Developer
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
20.06.2011, 22:10 7
ushim, как я это вижу-это запуск их программы + постороннии файлы, которые нужно редактировать.А я говорю о управлении напрямую из своей программы по средством передачи команд через порт на релле.
0
178 / 179 / 54
Регистрация: 01.06.2011
Сообщений: 507
20.06.2011, 22:11 8
А так же:
Описание программного обеспечения (ПО)
Для работы с устройством необходимо скачать программу MP709.exe тут
Добавлено через 53 секунды
lifestyle, а тебе нужно свой собственный сигнал на usb подавать?
0
Mobile Developer
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
20.06.2011, 22:14 9
Цитата Сообщение от ushim Посмотреть сообщение
А так же:
у этой программы есть исходный код, который и отправляет и получает сообщения, я взглянул одним глазом явных комманд там не было , но есть возможность через дебаггер посмотреть что она отправляет и что получает.или вы думаете что этим релле только через их программу можно управлять?))

Добавлено через 1 минуту
Цитата Сообщение от ushim Посмотреть сообщение
А так же:


Добавлено через 53 секунды
lifestyle, а тебе нужно свой собственный сигнал на usb подавать?
мне ничего не нужно, но ТС хотел управлять этим релле ИЗ СВОЕЙ программы, так зачем заниматься костылестроением использовать сторонние файлы и программы , если можно напрямик?)
0
ushim
20.06.2011, 22:15
  #10

Не по теме:

lifestyle, я думаю так. Понятия не имею что это за устройство и с чем его едят - это раз. Зачем изобретать велосипед? Можно просто упросить себе жизнь - это два.

0
Mobile Developer
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
20.06.2011, 22:21 11
Цитата Сообщение от ushim Посмотреть сообщение

Не по теме:

lifestyle, я думаю так. Понятия не имею что это за устройство и с чем его едят - это раз. Зачем изобретать велосипед? Можно просто упросить себе жизнь - это два.

Не по теме:


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

0
178 / 179 / 54
Регистрация: 01.06.2011
Сообщений: 507
20.06.2011, 22:23 12
От туда интересно это:
C++
1
2
3
4
5
6
7
8
9
10
//**************************************************************************************************************************************************************
void __fastcall TMain::STATE__ON(TObject *Sender)
{   //  включение
    if (USB_SET_PORT(0x00)) StatusBar->SimpleText="Нагрузка включена";
}
//**************************************************************************************************************************************************************
void __fastcall TMain::STATE__OFF(TObject *Sender)
{   //  выключение
    if (USB_SET_PORT(0x19)) StatusBar->SimpleText="Нагрузка отключена";
}
А так же 2 метода: Запись в буфер устройства и чтение из него.
0
0 / 0 / 0
Регистрация: 18.01.2015
Сообщений: 2
22.03.2015, 05:40 13
Цитата Сообщение от lifestyle Посмотреть сообщение
я взглянул одним глазом явных комманд там не было
явные команды есть
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool TMain::USB_SET_PORT(unsigned char PS)
{   //  запись состояния порта, 2ms
    USB_BUF_CLEAR();                     // здесь обнуляются массивы USB_BUFO и USB_BUFI
    bool RESULT=false;
    USB_BUFO[1]=0xE7;                   // записывается в массив какой-то контрольный байт
    USB_BUFO[2]=PS;                      // это байт из методов STATE__ON и STATE__OFF
    int i=3;   //  число попыток
    while (!RESULT & ((i--)>0))
        if (USB_SET_FEATURE())          // здесь массив USB_BUFO отправляется непосредственно на устройство
            if (USB_GET_FEATURE())      // здесь получаем ответ в виде массива USB_BUFI
                 { RESULT=(USB_BUFI[1]==0xE7)&(USB_BUFI[2]==PS)&(USB_BUFI[3]==PS); }
    if (!RESULT) StatusBar->SimpleText="Ошибка записи PORT";
    return RESULT;
}
в обоих массивах USB_BUFO и USB_BUFI всего по 9 байт.
Как теперь это реализовать на C#

Добавлено через 19 минут
библиотеки LibUsbDotNet,
C#
1
2
3
4
5
6
7
8
UsbDeviceFinder MyUsbFinder = new UsbDeviceFinder(0x16c0, 0x05df);
UsbDevice MyUsbDevice = UsbDevice.OpenUsbDevice(MyUsbFinder);
UsbSetupPacket packet = new UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Vendor |
    UsbCtrlFlags.Recipient_Device | UsbCtrlFlags.Direction_Out), 1, (short)1, 0, 0);
int countIn;
byte[] data = new byte[9];
data[1] = 0x7e;
MyUsbDevice.ControlTransfer(ref packet, data, 0, out countIn);
USBHIDDRIVER,
C#
1
2
3
4
5
USBHIDDRIVER.USBInterface usb = 
                new USBHIDDRIVER.USBInterface("vid_16c0", "pid_05df");
byte[] byt = new byte[9];
byt[1] = 0x7e;
usb.write(byt);
UsbLibrary, взятой отсюда не помогли, скорей всего сам чего не понимаю
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2015, 05:40

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Работа с устройством, подключенным по USB
Добрый день. У меня есть конкретная задача наладить связь между MAX3420 USB контроллером и ПК. ...

Управление устройством через COM (RS-232)
Помогите пожалуйста . Имеется Пк и подключенная к нему плата через rs-232 . На плате уже стоит...

Управление устройством через GPIB
Здравствуйте, реализовал подключение к генератору сигналов через Lan, но также стоит задача...

Подключение и управление usb-камерой
Здравствуйте. Если вопрос поднимался, киньте ссылкой Где можно посмотреть про подключение и...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.