ESP8266 WIFI模块学习之路(10)——手机远程关闭电脑

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/XiaoCaiDaYong/article/details/89244697

在博文ESP8266 WIFI模块学习之路(9)中已经实现了电脑读出USB串口的数据,如图

在博文C语言实现电脑关机程序中学习了如何实现电脑关机及其它的一些功能。

因此,通过这两个博文完全可以实现手机控制电脑关机了,只不过,还是得需要电脑串口助手先进行AT命名配置,目前还不能完成AT命令的自动下载。

下面是我综合的C++程序代码,很简单,先睹为快,如下:

// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//



#include "pch.h"


#define _CRT_SECURE_NO_WARNINGS 
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <conio.h>
#include "tchar.h"
#include "stdlib.h"		//	wt	modify	2019.4.4


int main()
{
	HANDLE hCom;
	hCom = CreateFile(_T("COM4"),//COM4口
		GENERIC_READ | GENERIC_WRITE,//允许读和写
		0,//独占方式
		NULL,
		OPEN_EXISTING,//打开而不是创建
		0,//同步方式
		NULL);
	if(hCom == (HANDLE)-1)
	{
		printf("打开COM失败!\n");
		return FALSE;
	}
	else
	{
		printf("COM打开成功!\n");
	}
	SetupComm(hCom, 20480, 20480);//输入缓冲区和输出缓冲区的大小都是1024
	
	COMMTIMEOUTS TimeOuts;//设定读超时	
	TimeOuts.ReadIntervalTimeout = 100;
	TimeOuts.ReadTotalTimeoutMultiplier = 500;
	TimeOuts.ReadTotalTimeoutConstant = 5000;	
	TimeOuts.WriteTotalTimeoutMultiplier = 500;//设定写超时
	TimeOuts.WriteTotalTimeoutConstant = 2000;
	SetCommTimeouts(hCom, &TimeOuts);//设置超时

	DCB dcb1;
	GetCommState(hCom, &dcb1);
	dcb1.BaudRate = 115200;//波特率为115200
	dcb1.ByteSize = 8;//每个字节有8位
	dcb1.Parity = NOPARITY;//无奇偶校验位
	dcb1.StopBits = TWOSTOPBITS;//两个停止位
	dcb1.fParity = FALSE;
	dcb1.fNull = FALSE;
	SetCommState(hCom, &dcb1);
	DWORD wCount = 256;//读取的字节数
	DWORD wCount1;
	PurgeComm(hCom, PURGE_TXCLEAR|PURGE_RXCLEAR);//清空缓冲区
	while(1)
	{
		int i = 0;
		FILE *fp1;
		unsigned char str[256];
		int len=0;		//	wt
		if(!ReadFile(hCom, str, wCount, &wCount1, NULL))
		{
			printf("读串口失败!");
			return FALSE;
		}		
		fp1 = fopen("串口发送的数.txt", "a+");	
		printf("读串口成功!\n");
		
		printf("读取长度为:%d\n", wCount1);
		printf("读取数据为:\n");
		for(i=0; i< wCount1; i++)
		{
			printf("%c", str[i]);
			fprintf(fp1, "%c", str[i]);
		}
		if('C' == str[0])		//	wt
		{
			system("shutdown -p");    //    电脑关机
		}

		printf("\n");
		fclose(fp1);
	}

	CloseHandle(hCom);

    std::cout << "Hello World!\n";

	return 0;
}







// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门提示: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件

可以发现,整个代码没什么变化只是加了下面这三行代码

if('C' == str[0])        //    wt
{
         system("shutdown -p");    //    电脑关机
}

其实,只对字符'C'比较是否关机,是不太适合的,大家可以尝试写对字符串"OFF"进行判断确定关闭电脑。

所要资料:https://download.csdn.net/download/xiaocaidayong/11109252

ESP8266 WIFI模块学习之路(9)一样,只是加三行代码即可

猜你喜欢

转载自blog.csdn.net/XiaoCaiDaYong/article/details/89244697