Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: не опознает hid уст-во
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
whale_nik
Сделал преобразователь для джойстика от playstation в usb по схеме из радио 2007 №1
на старых компах отлично определяется как hid и работает а н новой относительно плате для которой он и нужен винда не могет его определить пишет "не опознано",
в чем проблемма ?
- пробовал запускать hid input service (хотя не других и без этой службы работало)
- копался в настройках биоса на предмет usb
- пытался чего там в реестре менять

пока резалта нет crying.gif
Spider
на D+ и D- стабилитроны на 3.3В до земли. И будет тебе счастье.
whale_nik
Цитата(Alexey Belyaev @ Nov 20 2011, 03:22) *
на D+ и D- стабилитроны на 3.3В до земли. И будет тебе счастье.

Стоят на 5 в, это критично ?
Мож питание меги до 3.3в понизить ?


ААААААА заработало !
понизил питание до 3,5в rolleyes.gif
Большое Пребольшое спасибо !
Я тут уже голову сломал все перепробовал включая частоту кварца, длинну шнурка итд итп

Джойстик заработал, теперь осталось получить данные с него в buildere,
спрошу на всякий случай может кто нить уже писал, там вроде пара функций достаточно.
Spider
я писал джойстик на гцц. Как я это делал есть на радиокоте
whale_nik
мне бы че нить по проще, невозможно все изучить.
Вот есть такой код, джойстик определяет, кол-во кнопок итд но
почему то все время (если не трогать конпки/рычаги) шлет сообщение UpdCoord и координаты не меняются при движении рычагами.
Хотя в свойствах в панели управления винды все отлично меняется, те данные джойстик присылает верные.
CODE

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Graphics.hpp>
#include <ImgList.hpp>
#include <Buttons.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:
TMemo *Memo1;
void __fastcall FormCreate(TObject *Sender);
void __fastcall UpdButton(TMessage &msg);
void __fastcall UpdCoord(TMessage &msg);
private:
int jnum;
JOYCAPS JoyCaps;
bool connect;


public:
__fastcall TForm1(TComponent* Owner);

BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(MM_JOY1BUTTONDOWN,TMessage,UpdButton)
MESSAGE_HANDLER(MM_JOY1BUTTONUP,TMessage,UpdButton)
MESSAGE_HANDLER(MM_JOY1MOVE,TMessage,UpdCoord)
MESSAGE_HANDLER(MM_JOY2BUTTONDOWN,TMessage,UpdButton)
MESSAGE_HANDLER(MM_JOY2BUTTONUP,TMessage,UpdButton)
MESSAGE_HANDLER(MM_JOY2MOVE,TMessage,UpdCoord)
END_MESSAGE_MAP(TForm)
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

//================================================================================
====

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <mmsystem.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{

MMRESULT jr;
JOYINFOEX JoyInfo;
int joycount=joyGetNumDevs();
if (joycount==0) Memo1->Lines->Add("Драйверы джойстика не установлены");
else
{
connect=false;
jr=joyGetPosEx(JOYSTICKID1,&JoyInfo);
if (jr ==JOYERR_NOERROR)
{
connect=true;
jnum= JOYSTICKID1;
}
else if (jr == MMSYSERR_INVALPARAM)
ShowMessage("Ошибка определения наличия джойстика");
else if((jr=joyGetPosEx(JOYSTICKID2,&JoyInfo)) == JOYERR_NOERROR)
{
connect = true;
jnum= JOYSTICKID2;
}
}
joyGetDevCaps(jnum,&JoyCaps, sizeof(JOYCAPS));
if (connect) Memo1->Lines->Add("Джойстик подключен") ;
else Memo1->Lines->Add("Джойстик не подключен");

Memo1->Lines->Add("Номер устройства - "+ IntToStr(jnum));
Memo1->Lines->Add("Наименование - " + AnsiString(JoyCaps.szPname));
Memo1->Lines->Add("Число кнопок - " + IntToStr(JoyCaps.wNumButtons));


if (connect)
jr=joySetCapture(Handle,jnum,500,FALSE);



}

//---------------------------------------------------------------------------

void __fastcall TForm1::UpdButton(TMessage &msg)
{

Memo1->Lines->Add("КНОПКА");

}
//---------------------------------------------------------------------------

void __fastcall TForm1::UpdCoord(TMessage &msg)
{

int x = msg.LParamLo;


Memo1->Lines->Add("x= "+IntToStr(x));

}
//---------------------------------------------------------------------------
whale_nik

Проблемма решилась,
код правильный но он не может обрабатывать больше 2 джойстиков,
а тк 1 джойстик занимает 2 позиции в винде (так выходит), то в итоге только один,
а тк прога в адаптере была на 2 джойстика, второй который и был подключен не был виден,
а подключить первый мешал дохлый порт,
перепрошивка адаптера на один джойстик и замена мс решила проблему.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.