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

在博文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)一样,只是加三行代码即可

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小材大用

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

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

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

打赏作者

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

抵扣说明:

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

余额充值