Код
//============ WRITE USB
unsigned length;
memcpy(buf,(void const*)&FHW_INS,sizeof(struct FHW_ins));
pCDC.Write(&pCDC, buf, sizeof(struct FHW_ins));
//============ READ USB
length = pCDC.Read(&pCDC, buf, sizeof(struct FHW_outs),100010);
if(length!=sizeof(struct FHW_outs))
{
SoftClosed = 1;
goto MainLoop;
}
else
memcpy((void*)&FHW_OUTS,buf,sizeof(struct FHW_outs));
unsigned length;
memcpy(buf,(void const*)&FHW_INS,sizeof(struct FHW_ins));
pCDC.Write(&pCDC, buf, sizeof(struct FHW_ins));
//============ READ USB
length = pCDC.Read(&pCDC, buf, sizeof(struct FHW_outs),100010);
if(length!=sizeof(struct FHW_outs))
{
SoftClosed = 1;
goto MainLoop;
}
else
memcpy((void*)&FHW_OUTS,buf,sizeof(struct FHW_outs));
На ПК:
Код
fr = new FileRead(dev_name + "\\PIPE01");//01
if (fr.handle == 0)
return false;
fw = new FileWrite(dev_name + "\\PIPE00");//00
if (fw.handle == 0)
return false;
if (fr.handle == 0)
return false;
fw = new FileWrite(dev_name + "\\PIPE00");//00
if (fw.handle == 0)
return false;
При работе с драйвером atm6124.sys все ОК.
Ставлю bulkusb.sys из DDK XP и 2003 пробовал.
new FileRead(dev_name + "\\PIPE01");
а точнее
handle = CreateFile(filename,
GENERIC_READ/* | GENERIC_WRITE*/,
0,//FILE_SHARE_READ,
0,
OPEN_EXISTING,
0,
0);
возвращает -1;
меняю PIPE00 и 01 местами.
Код
fr = new FileRead(dev_name + "\\PIPE00");//01
...
fw = new FileWrite(dev_name + "\\PIPE01");//00
...
...
fw = new FileWrite(dev_name + "\\PIPE01");//00
...
FileRead открывается, FileWrite нет(код 87="ERROR_INVALID_PARAMETER").
Если открывать и FileWrite для PIPE00 открывает, но после этого ReadFile() "залипает" и
бесконечно ждет данные.
dev_name возвращается правильный т.к. с атмеловским драйвером все работает
на всякий случай вот он
"\\\\?\\usb#vid_03eb&pid_6124#5&79ebe7c&0&4#{a5dcbf10-6530-11d2-901f-00c04fb951ed}"
Может дело в программе на МК? Если кто успешно работал с этим драйером, киньте плз
код для МК.. И для ПК тоже было бы неплохо.. Ну или мысли по поводу сего )
Спасибо )