|
Programm3r wrote: while( bytesRecv == SOCKET_ERROR )
I believe you mean to write: while (bytesRecv != SOCKET_ERROR .
Programm3r wrote: bytesRecv = recv( ConnectSocket, recvbuf, 32, 0 );
if ( bytesRecv == 0 || bytesRecv == WSAECONNRESET )
There are 3 possible return values for recv: The number of bytes received, 0 if the connection has been closed gracefully, and SOCKET_ERROR if something went wrong. In the last case, you would call WSAGetLastError to obtain the error information. recv will NOT return WSACONNRESET, so you shouldn't check for it. A slightly modified loop might work better for you:
int bytesRecv = 0;
do
{
bytesRecv = recv(ConnectSocket, recvbuf, 32, 0);
if (0 == bytesRecv)
{
printf("Connection Closed.\n");
break;
}
} while (SOCKET_ERROR != bytesRecv);
if (SOCKET_ERROR == bytesRecv)
{
printf("Socket Error: %08X\n", WSAGetLastError());
}
If you decide to become a software engineer, you are signing up to have a 1/2" piece of silicon tell you exactly how stupid you really are for 8 hours a day, 5 days a week
Zac
|
|
|
|
|
Hi,
* I have created a MFC DLL
* I added a dialog box into it and create the class for that dialog box
* I have a function that call DoModal for that dialog
* But that function failed and returns an error "1812(The specified image file did not contain a resource section.)"
*Can any one help me in that regards
Thanks in Advance
Mush
|
|
|
|
|
By chance are you missing the following:
AFX_MANAGE_STATE(AfxGetStaticModuleState());
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Hi
I am writing a vc++ MFC .net program to play the .mpg or avi video file, but I do not know where to start.
could someone pls suggest something?
Thanks
|
|
|
|
|
alex_kenobe wrote: avi video file
To play .avi files you can use CAnimateCtrl class
Do your Duty and Don't expect the Result
|
|
|
|
|
Hi
Thanks for your advice,
Actually , I need to play .mpg file too. Do it use the same CAnimateCtrl class ?
Thanks
|
|
|
|
|
if you want to play avi use CAnimateCtrl but if you want to play another formats see MCI functions
<br />
CAnimateCtrl m_Ctrl; <br />
m_Ctrl.Create(WS_CHILD|WS_VISIBLE,CRect(0,0,100,100),this,1); <br />
m_Ctrl.Open("C:\\WINDOWS\\clock.avi"); <br />
m_Ctrl.Play(0,-1,-1);<br />
|
|
|
|
|
Hi
Thanks for your advise, I am trying it now
|
|
|
|
|
Hi
I tried your suggestion and create a button to play the video.
But I can not open the video file .( I received the messagbox's open file fail message)
I check the file diectory, it is correct.
My code is as follow
CAnimateCtrl m_Ctrl1;
m_Ctrl1.Create(WS_CHILD|WS_VISIBLE,CRect(0,0,100,100),this,1);
if(m_Ctrl1.Open("E:\\@@@@@VS.NET TEST\\vc++ video\\day1_1.avi")==0)
MessageBox("open file fail",MB_OK);
else
m_Ctrl1.Play(0,-1,-1);
Thanks
|
|
|
|
|
When i see your reply i think you have problem with mci functions but now that i see your reply it seems that you have a problem with CAnimateCtrl well first you dont need to use create you can insert this control from toolbox.
You said that path is correct well if you use from example clock.avi that is in windows whats happen?
are you getting same error or not,check this file and answer to me,please
|
|
|
|
|
Hi
When I run the file clock.avi , every thing is OK
But When I use the same program with my own avi file ie: day1.avi , the program does not work.
Is there a problem with my avi file? I can run it with microsoft window media player , no problem.
Thanks
|
|
|
|
|
Hi Mr alex_kenobe
Well i dont know whats your avi file?you have a avi file or you create a avi file in a program like 3dmax and now you want to open it
but if you can open this file with media player and you sure that path is correct in your program i can say one suggestion to you.Used from mci
if you use from mci functions you can open avi,mp3,mpg and.... whit it because you can open clock.avi so your code doesnt any problem and problem is path or avi
but i guess if you can open it with medai player you can open your file with mci.
I hope its helpful for you but if you have questions if i can i help to you.
|
|
|
|
|
Hi WhiteSky
Tanks for your help, I read from msdn that CAnimateCtrl can only play non-compressed avi file.
I got the avi file from the internet and I donnot know if it is compressed. I am now trying mci and vfw hopefully can get some result.
Do you have any suggestions of how to use mci or vfw?
Thanks
|
|
|
|
|
|
Hi WhiteSky
I am trying to use mciSendString to display the video , how do I postion the vido display in relative to my dialogBased application? , or If I can you other mci commoand which allows me to position the video display.
Thanks
|
|
|
|
|
for position you need to a HWND and its not problem for you
<br />
MCI_DGV_STATUS_PARMS mciStatus;<br />
...<br />
...<br />
<br />
mciStatus.dwItem = MCI_DGV_STATUS_HWND;<br />
mciSendCommand(DeviceID,MCI_STATUS, <br />
MCI_STATUS_ITEM,(DWORD)&mciStatus);<br />
<br />
m_hWndMovie = (HWND)mciStatus.dwReturn;
|
|
|
|
|
Hi WhiteSky
Thanks for your advice, but I donot quite understand what you said, can you pls elaborate a little bit more?
|
|
|
|
|
Hi WhiteSky
I donont mean the position of the frame, I am asking how to place the video display at the location I wanted.
Thanks
|
|
|
|
|
Hi alex,
How are you,i think its morning in your country,right?
You want to set location from your video window,right?
MoveWindow(...) ,SetWindowPos(...) are for position and size(dimensions) from a window
well you want to change position from your window so you need to get a HWND of your window
for example ::MoveWindow(m_hWnd,0,0,200,200,1); .
Now when you run previous code you get a handle(HWND) and you can set new location.You can get GetClientRect(hWnd,LPRECT); ScreenToClient(LPRECT); for retrieves coordinates from window.
well whats your problem?Do you have any problem yet?
|
|
|
|
|
Hi WhiteSky
I am very thankful of your kind patient and help, very much appreciated.
Yes, I have a problem.
What I am trying to do is to crate a dialogbased application using vc++.net.
On the application dialog box, I have a "play video" button, when I press the button, I like to have a video file playing on the right hand side of the dialog box ( within the application dialogbox).
I am using mci command, my problem is how to display the video at the location I wanted.
many Thanks
|
|
|
|
|
Hi all,
I'm trying to develop a communication between my computer (which runs on windows XP) and an external device which is connected through USB. I've built a driver using libusb-w32 which seems to be running fine. Then, following some tutorials I've found, after enumerating all the USB devices I'm using CreateFile function to establish a link. The problem is, the function returns a bad pointer (0x00000fb8) but GetLastError() returns 0, so I can't figure out what's happening...
Does anyone know why this happens? Isn't there an easier way to communicate w/ a USB device or is CreateFile the easiest?
Thanks everyone...
|
|
|
|
|
Sagito wrote: The problem is, the function returns a bad pointer (0x00000fb8)
The function doesn't return a pointer but a handle. And 0x00000fb8 looks like a valid handle for a USB driver (as far as I remember). Did you try to use this handle ?
|
|
|
|
|
Yep, tried using that pointer, but ReadFile returns a error. Error 9, I think... So, after that I checked the handle and it is invalid (hUsbDev = INVALID_HANDLE_VALUE). It also seemed valid too me, but it seems it isn't... =S
However, CreateFile returns 0, so it succeeds. Now what?
Thanks...
|
|
|
|
|
Did you create:
HANDLE hdlToDevice = INVALID_HANDLE_VALUE;
HDEVINFO deviceInfo;
deviceInfo = SetupDiGetClassDevs(...);
.
.
.
hdlToDevice = CreateFile(...);
Kitty5
|
|
|
|
|
Well, my code looks like this now:
<br />
int _tmain(int argc, _TCHAR* argv[])<br />
{<br />
int erro = 0;<br />
<br />
Localizar_ZP3();<br />
<br />
cout << "A procurar abrir comunicacao com central no endereco: " << endl;<br />
cout << Devices[1] << endl;<br />
<br />
hUsbDevice = CreateFile(Devices[0].c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);<br />
<br />
erro = GetLastError();<br />
cout << endl << "Verificacao de erros no CreateFile: " << erro << endl << endl;<br />
<br />
<br />
<br />
if (!Comunicar())<br />
cout << "Erro ao estabelecer comunicacao..." << endl;<br />
else<br />
cout << "Comunicacao foi estabelecida com sucesso!" << endl;<br />
<br />
cout << "A terminar ligacao..." << endl;<br />
CloseHandle(hUsbDevice);<br />
<br />
if (0 == GetLastError())<br />
cout << "Ligacao terminada com sucesso!" << endl;<br />
else<br />
{<br />
cout << "Ocorreu um erro ao terminar ligacao..." << endl;<br />
cout << "Codigo de erro: " << GetLastError() << endl;<br />
}<br />
<br />
cout << endl;<br />
system("pause");<br />
<br />
return 0;<br />
}<br />
<br />
int Localizar_ZP3()<br />
{<br />
cout << "A entrar no loop de pesquisa de equipamentos USB..." << endl << endl;<br />
<br />
HDEVINFO hInfo = SetupDiGetClassDevs(&ZP3COMM_GUID, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);<br />
<br />
int i;<br />
<br />
for (DWORD i=0; ; ++i)<br />
{<br />
SP_INTERFACE_DEVICE_DATA Interface_Info;<br />
Interface_Info.cbSize = sizeof(Interface_Info);<br />
<br />
int erro = 0;<br />
<br />
if (!SetupDiEnumDeviceInterfaces(hInfo, NULL, (LPGUID) &ZP3COMM_GUID,i, &Interface_Info))<br />
{<br />
erro = GetLastError();<br />
<br />
if (erro == 259)<br />
cout << "Fim dos itens a listar!" << endl;<br />
<br />
cout << "Numero de iteracoes: " << i << endl << endl;<br />
<br />
SetupDiDestroyDeviceInfoList(hInfo);<br />
return(i);<br />
}<br />
<br />
DWORD needed;<br />
<br />
SetupDiGetInterfaceDeviceDetail(hInfo, &Interface_Info, NULL, 0, &needed, NULL);<br />
PSP_INTERFACE_DEVICE_DETAIL_DATA detail = (PSP_INTERFACE_DEVICE_DETAIL_DATA) malloc(needed);<br />
<br />
if (!detail)<br />
{<br />
SetupDiDestroyDeviceInfoList(hInfo);<br />
return(i);<br />
}<br />
<br />
detail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);<br />
<br />
if (!SetupDiGetInterfaceDeviceDetail(hInfo, &Interface_Info,detail, needed,NULL, NULL))<br />
{<br />
free((PVOID) detail);<br />
SetupDiDestroyDeviceInfoList(hInfo);<br />
return(i);<br />
}<br />
<br />
char name[MAX_PATH];<br />
strncpy(name, detail->DevicePath, sizeof(name));<br />
free((PVOID) detail);<br />
<br />
cout << "Endereco " << i << ": " << endl;<br />
cout << name << endl << endl;<br />
Devices[i] = name;<br />
}<br />
<br />
return 0;<br />
}<br />
<br />
bool Comunicar()<br />
{<br />
ULONG nBytes;<br />
DWORD numLidos;<br />
PVENDORPACKET pPacket = NULL;<br />
char* BufferLeitura = NULL;<br />
<br />
bool sucesso = true;<br />
<br />
sucesso = ReadFile(hUsbDevice, BufferLeitura, 80, &numLidos, NULL);
<br />
if (sucesso)<br />
{<br />
cout << "A operacao de comunicacao foi bem sucedida." << endl;<br />
cout << BufferLeitura << endl;<br />
cout << numLidos << endl;<br />
cout << endl;<br />
}<br />
else<br />
{<br />
cout << "Ocorreu um erro ao executar ReadFile()" << endl;<br />
cout << "Codigo de erro: " << GetLastError() << endl;<br />
}<br />
<br />
return sucesso;<br />
}
Think I've got something wrong in this code?
Thanks again, I'm getting really desperate w/ this...
|
|
|
|
|