#include "stdafx.h"


#include <windows.h>
#include <iostream>
using namespace std;
int n=0;
char var;


HANDLE hSerial;
void ReadCOM()
{
	DWORD iSize;
	char sReceivedChar;
	while (true)
	{
		ReadFile(hSerial, &sReceivedChar, 1, &iSize, 0);  // получаем 1 байт
		if (iSize > 0)   // если что-то принято, выводим
			cout << sReceivedChar;
	}
}

int _tmain(int argc, _TCHAR* argv[])
{



	LPCTSTR sPortName = L"COM3";



	hSerial = ::CreateFile(sPortName, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

	if (hSerial == INVALID_HANDLE_VALUE)
	{
		if (GetLastError() == ERROR_FILE_NOT_FOUND)
		{
			cout << "serial port does not exist.\n";
		}
		cout << "some other error occurred.\n";
	}


	DCB dcbSerialParams = { 0 };
	dcbSerialParams.DCBlength = sizeof(dcbSerialParams);
	if (!GetCommState(hSerial, &dcbSerialParams))
	{
		cout << "getting state error\n";
	}
	dcbSerialParams.BaudRate = CBR_9600;
	dcbSerialParams.ByteSize = 8;
	dcbSerialParams.StopBits = ONESTOPBIT;
	dcbSerialParams.Parity = NOPARITY;
	if (!SetCommState(hSerial, &dcbSerialParams))
	{
		cout << "error setting serial port state\n";
	}

	do
	{
		cout << "0- on, 1- off, 4 -exit\n";
		cin >> n;
		switch (n)
		{
		case 1:
			cout << "OFF\n";
			var = 0x31;
			break;

		case 0:
			cout << "ON\n";
			var = 0x30;
			break;
		case 4:
			exit(EXIT_SUCCESS);
			break;
		default:
			cerr << "WRONG" << endl;

		}
	} while (n != 4);

	
	char data[] = {var};  // строка для передачи
	DWORD dwSize = sizeof(data);   // размер этой строки
	DWORD dwBytesWritten;    // тут будет количество собственно переданных байт



	BOOL iRet = WriteFile(hSerial, data, dwSize, &dwBytesWritten, NULL);

	
	return 0;
}

