PPC上如何实现无线路由器的自动切换

hqfcsw 2007-03-02 10:47:00
根据无线路由器信号强弱 自动切换到信号强的无线路由器。
小弟是菜鸟,只懂得MFC和socket方面的简单知识,对于无线更是没有研究过,
请教要 实现这一个功能 需要哪些方面的知识?
各位大虾 能不能给点建议?
...全文
291 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
suwyhoho 2009-11-18
  • 打赏
  • 举报
回复
LZ说的是无线漫游功能吧

大概的思路就是先设一个门限,这个门限可以是信号强度也可以是别的参数比如beacon,低于这个门限的时候开始搜索周围符合条件(SSID或MAC)的AP,找到了就切过去

功能实现比较简单,在驱动或是应用层都可以做,应用层CE下的话微软给了一些API比如WZCXXX或者用NDIS的ioctl都可以实现,驱动的话就要看看模块商给的代码了

问题在于大多数消费级的WIFI模块在搜索AP的时候会造成通信中断(因为Channel换了),如果模块不支持,又不能改firmware的话,这个问题就比较难解决

LZ如果要做的话,改改驱动吧,微软给的那些API在重新连接时会切断连接的,而且响应速度比较慢
zhujinqiang 2009-11-17
  • 打赏
  • 举报
回复
关注。
91program 2009-11-17
  • 打赏
  • 举报
回复
思路应该是:枚举所有有效网络,得到各个网络的信号进行比较。
枚举网络是可能做到的,有API支持。但是如何得到各个网络的信号强度,不清楚。
jimmy54 2009-11-17
  • 打赏
  • 举报
回复

void WifiOn()
{
DevicePowerNotify(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), D0, POWER_NAME);
SetDevicePower(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), POWER_NAME, D0);
}

void WifiOff()
{
DevicePowerNotify(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), D4, POWER_NAME);
SetDevicePower(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), POWER_NAME, D4);
}




//实现部分的电源功能

#include "pwrmgr.h"

typedef DWORD (__stdcall *DevicePowerNotifyProc)(PVOID,CEDEVICE_POWER_STATE,DWORD);
typedef DWORD (__stdcall *SetDevicePowerProc)(PVOID,DWORD,CEDEVICE_POWER_STATE);

DWORD DevicePowerNotify(PVOID pvDevice,CEDEVICE_POWER_STATE DeviceState,DWORD Flags)
{
HINSTANCE hCoreDll = LoadLibrary(_T("coredll.dll"));
DevicePowerNotifyProc procSet =
(DevicePowerNotifyProc)GetProcAddress(hCoreDll, _T("DevicePowerNotify"));
DWORD dwResult = procSet(pvDevice,DeviceState,Flags);
::FreeLibrary(hCoreDll);

return dwResult;
}

DWORD SetDevicePower(PVOID pvDevice,DWORD dwDeviceFlags,CEDEVICE_POWER_STATE dwState)
{
HINSTANCE hCoreDll = LoadLibrary(_T("coredll.dll"));
SetDevicePowerProc procSet =
(SetDevicePowerProc)GetProcAddress(hCoreDll, _T("SetDevicePower"));
DWORD dwResult = procSet(pvDevice,dwDeviceFlags,dwState);
::FreeLibrary(hCoreDll);

return dwResult;
}


加分给源码。。。。。。。。。。。
ruritanian 2009-11-17
  • 打赏
  • 举报
回复
你是做应用还是驱动的?
如果是做应用的话,你只需要用conneection manager API建立无线网络连接就可以了,无线网络的信号切换是由驱动做的事情,应用程序不需要也不应该管的。
GARY 2009-10-20
  • 打赏
  • 举报
回复
这个还真么接触过,帮顶。

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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