#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;
}
I2luY2x1ZGUgInN0ZGFmeC5oIgoKCiNpbmNsdWRlIDx3aW5kb3dzLmg+CiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG49MDsKY2hhciB2YXI7CgoKSEFORExFIGhTZXJpYWw7CnZvaWQgUmVhZENPTSgpCnsKCURXT1JEIGlTaXplOwoJY2hhciBzUmVjZWl2ZWRDaGFyOwoJd2hpbGUgKHRydWUpCgl7CgkJUmVhZEZpbGUoaFNlcmlhbCwgJnNSZWNlaXZlZENoYXIsIDEsICZpU2l6ZSwgMCk7ICAvLyDQv9C+0LvRg9GH0LDQtdC8IDEg0LHQsNC50YIKCQlpZiAoaVNpemUgPiAwKSAgIC8vINC10YHQu9C4INGH0YLQvi3RgtC+INC/0YDQuNC90Y/RgtC+LCDQstGL0LLQvtC00LjQvAoJCQljb3V0IDw8IHNSZWNlaXZlZENoYXI7Cgl9Cn0KCmludCBfdG1haW4oaW50IGFyZ2MsIF9UQ0hBUiogYXJndltdKQp7CgoKCglMUENUU1RSIHNQb3J0TmFtZSA9IEwiQ09NMyI7CgoKCgloU2VyaWFsID0gOjpDcmVhdGVGaWxlKHNQb3J0TmFtZSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgT1BFTl9FWElTVElORywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKCglpZiAoaFNlcmlhbCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKCXsKCQlpZiAoR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpCgkJewoJCQljb3V0IDw8ICJzZXJpYWwgcG9ydCBkb2VzIG5vdCBleGlzdC5cbiI7CgkJfQoJCWNvdXQgPDwgInNvbWUgb3RoZXIgZXJyb3Igb2NjdXJyZWQuXG4iOwoJfQoKCglEQ0IgZGNiU2VyaWFsUGFyYW1zID0geyAwIH07CglkY2JTZXJpYWxQYXJhbXMuRENCbGVuZ3RoID0gc2l6ZW9mKGRjYlNlcmlhbFBhcmFtcyk7CglpZiAoIUdldENvbW1TdGF0ZShoU2VyaWFsLCAmZGNiU2VyaWFsUGFyYW1zKSkKCXsKCQljb3V0IDw8ICJnZXR0aW5nIHN0YXRlIGVycm9yXG4iOwoJfQoJZGNiU2VyaWFsUGFyYW1zLkJhdWRSYXRlID0gQ0JSXzk2MDA7CglkY2JTZXJpYWxQYXJhbXMuQnl0ZVNpemUgPSA4OwoJZGNiU2VyaWFsUGFyYW1zLlN0b3BCaXRzID0gT05FU1RPUEJJVDsKCWRjYlNlcmlhbFBhcmFtcy5QYXJpdHkgPSBOT1BBUklUWTsKCWlmICghU2V0Q29tbVN0YXRlKGhTZXJpYWwsICZkY2JTZXJpYWxQYXJhbXMpKQoJewoJCWNvdXQgPDwgImVycm9yIHNldHRpbmcgc2VyaWFsIHBvcnQgc3RhdGVcbiI7Cgl9CgoJZG8KCXsKCQljb3V0IDw8ICIwLSBvbiwgMS0gb2ZmLCA0IC1leGl0XG4iOwoJCWNpbiA+PiBuOwoJCXN3aXRjaCAobikKCQl7CgkJY2FzZSAxOgoJCQljb3V0IDw8ICJPRkZcbiI7CgkJCXZhciA9IDB4MzE7CgkJCWJyZWFrOwoKCQljYXNlIDA6CgkJCWNvdXQgPDwgIk9OXG4iOwoJCQl2YXIgPSAweDMwOwoJCQlicmVhazsKCQljYXNlIDQ6CgkJCWV4aXQoRVhJVF9TVUNDRVNTKTsKCQkJYnJlYWs7CgkJZGVmYXVsdDoKCQkJY2VyciA8PCAiV1JPTkciIDw8IGVuZGw7CgoJCX0KCX0gd2hpbGUgKG4gIT0gNCk7CgoJCgljaGFyIGRhdGFbXSA9IHt2YXJ9OyAgLy8g0YHRgtGA0L7QutCwINC00LvRjyDQv9C10YDQtdC00LDRh9C4CglEV09SRCBkd1NpemUgPSBzaXplb2YoZGF0YSk7ICAgLy8g0YDQsNC30LzQtdGAINGN0YLQvtC5INGB0YLRgNC+0LrQuAoJRFdPUkQgZHdCeXRlc1dyaXR0ZW47ICAgIC8vINGC0YPRgiDQsdGD0LTQtdGCINC60L7Qu9C40YfQtdGB0YLQstC+INGB0L7QsdGB0YLQstC10L3QvdC+INC/0LXRgNC10LTQsNC90L3Ri9GFINCx0LDQudGCCgoKCglCT09MIGlSZXQgPSBXcml0ZUZpbGUoaFNlcmlhbCwgZGF0YSwgZHdTaXplLCAmZHdCeXRlc1dyaXR0ZW4sIE5VTEwpOwoKCQoJcmV0dXJuIDA7Cn0KCg==