300分,求调用系统蓝牙模块发送文件的代码!

avisnet 2007-06-12 10:08:56
可用后马上结贴!
...全文
321 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
漫步青云OK 2008-07-18
  • 打赏
  • 举报
回复
(60475306)智能软件开发群
wangjs720 2008-07-17
  • 打赏
  • 举报
回复
HRESULT ObexHelper::SendFile(IObexDevice *pDevice, const WCHAR *pszPath, HWND hWnd)
{
HRESULT hr = S_OK;

//
// Opens the specified file.
//
FILE *pFile = _wfopen(pszPath, L"r");
if (pFile == NULL)
{
return E_FILE_NOT_FOUND;
}

//
// Extracts the file name(include extersion).
//
const WCHAR *pszName = wcsrchr(pszPath, L'\\');
pszName == 0 ? pszName = pszPath : pszName++;

IHeaderCollection *pConnectHeaders = 0;
hr = CoCreateInstance(__uuidof(HeaderCollection), NULL, CLSCTX_INPROC_SERVER, __uuidof(IHeaderCollection), (void**)&pConnectHeaders);
if (FAILED(hr))
{
return hr;
}

if (g_bAbort)
{
pConnectHeaders->Release();
return E_ABORT;
}

//if (dwFlags & DEV_SERVICE_FTP)
//hr = pConnectHeaders->AddTarget(sizeof(CLSID_FileExchange_NetOrder), (UCHAR*)&CLSID_FileExchange_NetOrder);

//
// Connects to the remote device.
//
SendMessage(hWnd, WM_OBEX_INFO, (WPARAM)pDevice, OBEX_INFO_CONNECT);
hr = pDevice->Connect(NULL, 0, pConnectHeaders);
if (FAILED(hr))
{
pConnectHeaders->Release();
SendMessage(hWnd, WM_OBEX_INFO, (WPARAM)pDevice, OBEX_INFO_FAIL);
return hr;
}

if (g_bAbort)
{
pDevice->Disconnect(pConnectHeaders);
pConnectHeaders->Release();
return E_ABORT;
}

//
// Transfer binary data.
//
SendMessage(hWnd, WM_OBEX_INFO, (WPARAM)pDevice, OBEX_INFO_TRANSFERDATA);

IHeaderCollection *pFileHeaders = NULL;
hr = CoCreateInstance(__uuidof(HeaderCollection), NULL, CLSCTX_INPROC_SERVER, __uuidof(IHeaderCollection), (void**)&pFileHeaders);
if (FAILED(hr))
{
pDevice->Disconnect(pConnectHeaders);
pConnectHeaders->Release();
SendMessage(hWnd, WM_OBEX_INFO, (WPARAM)pDevice, OBEX_INFO_FAIL);
return hr;
}

if (g_bAbort)
{
pFileHeaders->Release();
pDevice->Disconnect(pConnectHeaders);
pConnectHeaders->Release();
return E_ABORT;
}

hr = pFileHeaders->AddName(pszName);
if (FAILED(hr))
{
pFileHeaders->Release();
pDevice->Disconnect(pConnectHeaders);
pConnectHeaders->Release();
SendMessage(hWnd, WM_OBEX_INFO, (WPARAM)pDevice, OBEX_INFO_FAIL);
return hr;
}

if (g_bAbort)
{
pFileHeaders->Release();
pDevice->Disconnect(pConnectHeaders);
pConnectHeaders->Release();
return E_ABORT;
}

IStream *pStream = NULL;
hr = pDevice->Put(pFileHeaders, &pStream);
if (hr == S_OK)
{
//
// Calculates the size of the file.
//
fseek(pFile, 0, SEEK_END);
LONG iFileSize = ftell(pFile);
fseek(pFile, 0, SEEK_SET);

char *pszBuffer = new char[PM_LOG_BUFSIZE];
if (pszBuffer == NULL)
{
pStream->Release();
pFileHeaders->Release();
pDevice->Disconnect(pConnectHeaders);
pConnectHeaders->Release();
return E_OUTOFMEMORY;
}

while (iFileSize > 0)
{
size_t cbReaded = fread(pszBuffer, 1, PM_LOG_BUFSIZE, pFile);
if (cbReaded == 0)
{
break;
}

DWORD dwBytesWritten;
hr = pStream->Write(pszBuffer, cbReaded, &dwBytesWritten);
if (FAILED(hr))
{
iFileSize -= cbReaded;
continue;
}
ASSERT(cbReaded == dwBytesWritten);

//DWORD dwBytesWrittenTotle = 0;
//char *pszTemp = pszBuffer;
//while (dwBytesWrittenTotle < cbReaded)
//{
// hr = pStream->Write(pszTemp, cbReaded, &dwBytesWritten);
// if (FAILED(hr))
// {
// break;
// }
// pszTemp += dwBytesWritten;
// dwBytesWrittenTotle += dwBytesWritten;
//}

iFileSize -= cbReaded;
}
delete[] pszBuffer;

fclose(pFile);

pStream->Commit(STGC_DEFAULT);
pStream->Release();
}


pFileHeaders->Release();
pDevice->Disconnect(pConnectHeaders);
pConnectHeaders->Release();

return hr;
}
dyw 2007-10-10
  • 打赏
  • 举报
回复
SDK中有一个例子可以参考:BthChat,在发送文件前告诉对方发送的是文件内容就行了。
C:\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CPP\win32\Bluetooth\BthChat
codesphere 2007-10-09
  • 打赏
  • 举报
回复
可以看WM6的文档自己做一个啊,用SOCKET或VCOM来写,应该不太难吧
CathySun118 2007-06-12
  • 打赏
  • 举报
回复
没有做过

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧