【程序更新】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 <Shobjidl.h>

/* 设置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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巨大八爪鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值