需求
在酒店、宾馆等前台,服务员使用PC机上的Web页面进行业务操作,随后需要客户扫描二维码进行信息确认。那么就需要在靠近客户的地方展示二维码,这里我们有一台安卓平板,平时轮播广告,而当客户确认信息时,在屏幕右下方弹出二维码方便顾客扫码。(PC和Android优先采用USB线连接)
解决方案
(1)在PC机上使用此服务端,依据Web页面上二维码的URL将图片下载到本机
(2)使用ADB(安卓调试桥)将二维码通过USB线传送到Android机
(3)Android机接收到二维码后,使用ImageView将其显示出来
注意事项
(1)ADB需要放置在D:\Software\platform-tools\adb
(2)二维码放置在D:\img,目录需要首先存在
代码
#include "stdafx.h"
#include <cstdio>
#include <UrlMon.h>
#include <time.h>
#include <conio.h>
#pragma comment(lib, "urlmon.lib")
using namespace std;
char *lpStr;
BOOL GetTextFromClipboard()
{
if(::OpenClipboard(NULL)) {
HGLOBAL hMem = GetClipboardData(CF_TEXT);
if(NULL != hMem) {
lpStr = (char*)::GlobalLock(hMem);
if(NULL != lpStr) {
::GlobalUnlock(hMem);
}
}
::CloseClipboard();
return TRUE;
}
return FALSE;
}
int main()
{
system("D:\\Software\\platform-tools\\adb start-service");
system("D:\\Software\\platform-tools\\adb remount");
system("cls");
while(true) {
// 测试网址:http://img1.gtimg.com/news/pics/hv1/237/80/2243/145871712.jpg
GetTextFromClipboard();
printf("URL: %s\n",lpStr);
if(lpStr != NULL)
{
char c;
double start=clock(),tot;
URLDownloadToFile(NULL, lpStr, _T("D:\\img\\1.jpg"), NULL, NULL);
printf("\nDo you want to send to Android [Y/N]: ");
while((tot=clock()-start) <= 1000 && !kbhit()) {
Sleep(1);
}
if(tot > 1000) {
system("cls");
continue;
}else {
scanf("%c",&c);
}
if(c == 'Y' || c == 'y') {
system("D:\\Software\\platform-tools\\adb push D:\\img\\1.jpg system/");
}
}
Sleep(1000);
system("cls");
}
return 0;
}