【程序更新】Marvell 88W8801测速器上位机程序和lwip2.1.2 dhcpd服务器更新(20200213)

此DHCP服务器已被证明有严重bug,请勿在正式产品中使用

源程序:【程序】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):

【程序更新】Marvell 88W8801测速器上位机程序和lwip2.1.2 dhcpd服务器更新(20200213)_第1张图片

数据接收过程中任务栏显示进度(TBPF_NORMAL):

【程序更新】Marvell 88W8801测速器上位机程序和lwip2.1.2 dhcpd服务器更新(20200213)_第2张图片

连接开发板失败,任务栏图标为红色背景(TBPF_ERROR):

【程序更新】Marvell 88W8801测速器上位机程序和lwip2.1.2 dhcpd服务器更新(20200213)_第3张图片

测试完成,任务栏图标为黄色背景(FlashWindowEx):

【程序更新】Marvell 88W8801测速器上位机程序和lwip2.1.2 dhcpd服务器更新(20200213)_第4张图片

没有连接板子时,任务栏图标为透明背景(TBPF_NOPROGRESS):

【程序更新】Marvell 88W8801测速器上位机程序和lwip2.1.2 dhcpd服务器更新(20200213)_第5张图片

XP系统下只有测试完毕时FlashWindowEx的黄色提示:

【程序更新】Marvell 88W8801测速器上位机程序和lwip2.1.2 dhcpd服务器更新(20200213)_第6张图片

【程序更新】Marvell 88W8801测速器上位机程序和lwip2.1.2 dhcpd服务器更新(20200213)_第7张图片

【参考资料】

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

你可能感兴趣的:(Win32,前端,Win32,COM)