源程序:【程序】Marvell 88W8801 WiFi模块创建或连接热点,并使用lwip2.1.2建立http服务器(20200208版)_ZLK1214的专栏-CSDN博客
更新包下载地址:百度网盘 请输入提取码(提取码:2zc0)
本次更新主要内容如下:
(1)适用于lwip2.0.3和lwip2.1.2的DHCP服务器(DHCPD):
用netif_ip4_addr(state->netif)代替了ip_2_ip4(&state->netif->ip_addr)
用netif_ip4_netmask(state->netif)代替了&state->netif->netmask
ip4_addr_set(&packet->siaddr, netif_ip4_addr(state->netif)); // DHCP服务器IP地址
dhcpd_add_option(packet, DHCP_OPTION_SUBNET_MASK, 4, netif_ip4_netmask(state->netif)); // 子网掩码
dhcpd_add_option(packet, DHCP_OPTION_ROUTER, 4, netif_ip4_addr(state->netif)); // 默认网关
(2)数据发送速度测试器V1.3版本:
新增了Windows 7系统下任务栏图标上显示测试进度的功能
实现Win7任务栏图标进度条显示的代码如下:
(XP系统不支持任务栏图标进度条显示,返回的pTaskbar指针为空)
(实际上,用纯C也能实现任务栏进度设置。详情请参阅:【C语言调用Win32 COM组件】C语言通过COM创建快捷方式、设置Win7任务栏图标进度条、使用MSXML6.0的IXMLDOMDocument读取XML文件的方法_ZLK1214的专栏-CSDN博客)
#include
/* 设置Win7任务栏图标进度条指示 */
int Taskbar_SetProgress(HWND hWnd, TBPFLAG state, ULONGLONG value, ULONGLONG total)
{
ITaskbarList3 *pTaskbar;
CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pTaskbar));
if (pTaskbar != NULL)
{
pTaskbar->HrInit();
pTaskbar->SetProgressValue(hWnd, value, total);
pTaskbar->SetProgressState(hWnd, state);
pTaskbar->Release();
curr_state = state;
return 0;
}
// XP系统下无法设置任务栏进度条, 会返回-1
return -1;
}
/* 在Win7任务栏图标上显示进度 */
static void display_taskbar_progress(int complete)
{
int curr_pos, curr_max, test_pos, test_max, total_pos, total_max;
FLASHWINFO flash;
if (complete == 2)
{
// 全部完成
Taskbar_SetProgress(hdlgMain, TBPF_NOPROGRESS, 0, 0);
flash.cbSize = sizeof(FLASHWINFO);
flash.dwFlags = FLASHW_TIMERNOFG | FLASHW_TRAY; // 一直闪烁到用户切换回窗口
flash.dwTimeout = 0;
flash.hwnd = hdlgMain;
flash.uCount = 3;
FlashWindowEx(&flash); // 任务栏图标闪烁 (黄色)
}
else
{
curr_pos = (int)SendMessage(hwndProgress[0], PBM_GETPOS, 0, 0); // 本次测试进度
curr_max = (int)SendMessage(hwndProgress[0], PBM_GETRANGE, FALSE, 0); // 每次测试量
test_pos = (int)SendMessage(hwndProgress[1], PBM_GETPOS, 0, 0); // 已完成的测试次数
test_max = (int)SendMessage(hwndProgress[1], PBM_GETRANGE, FALSE, 0); // 用户设定的测试次数
if (complete == 0)
total_pos = curr_pos + test_pos * curr_max; // 本次测试未完成: 本次测试进度 + 已完成的测试次数 x 每次测试量
else
total_pos = test_pos * curr_max; // 本次测试已完成: 已完成的测试次数 x 每次测试量
total_max = test_max * curr_max; // 用户设定的测试次数 x 每次测试量
Taskbar_SetProgress(hdlgMain, TBPF_NORMAL, total_pos, total_max);
}
}
连接开发板时任务栏滚动进度条(TBPF_INDETERMINATE):
数据接收过程中任务栏显示进度(TBPF_NORMAL):
连接开发板失败,任务栏图标为红色背景(TBPF_ERROR):
测试完成,任务栏图标为黄色背景(FlashWindowEx):
没有连接板子时,任务栏图标为透明背景(TBPF_NOPROGRESS):
XP系统下只有测试完毕时FlashWindowEx的黄色提示:
【参考资料】
Win7任务栏介绍:Taskbar Extensions - Win32 apps | Microsoft Docs
FlashWindowEx函数:FlashWindowEx function (winuser.h) - Win32 apps | Microsoft Docs
ITaskbarList3接口的SetProgressState函数:ITaskbarList3::SetProgressState (shobjidl_core.h) - Win32 apps | Microsoft Docs
ITaskbarList3接口的SetProgressValue函数:ITaskbarList3::SetProgressValue (shobjidl_core.h) - Win32 apps | Microsoft Docs