Добавил:
Mymnan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Сборка Часть1 / avmis_labs / неразобрано / 501 / Лаб_СОМ / Зычков С.А / com / Writer / Writer / Writer
.cpp// Writer.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <windows.h>
#include <conio.h>
#include <stdio.h>
#include <tchar.h>
#include <iostream>
int main(void)
{
HANDLE port = CreateFile(L"COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);
if(port==INVALID_HANDLE_VALUE)
{
std::cout << "Can't open port" << std::endl;
getch();
exit(-1);
}
else
{
std::cout << "Port open." << std::endl;
}
DCB ourdcb;
GetCommState(port,&ourdcb);
COMMTIMEOUTS ourporttimeout;
ourporttimeout.ReadIntervalTimeout = MAXDWORD;
ourporttimeout.ReadTotalTimeoutMultiplier = 0;
ourporttimeout.ReadTotalTimeoutConstant = 0;
ourporttimeout.WriteTotalTimeoutMultiplier = 0;
ourporttimeout.WriteTotalTimeoutConstant = 1000;
SetCommTimeouts(port, &ourporttimeout);
ourdcb.ByteSize = 8;
ourdcb.Parity = NOPARITY;
ourdcb.StopBits = ONESTOPBIT;
ourdcb.BaudRate = CBR_9600;
SetCommState(port,&ourdcb);
char *buf = new char [512]; // буфер для передаваемого сообщения
memset(buf,0,512);
DWORD bytessend=0;
DWORD bytestosend=0;
std::cout << "Input string or exit for end work" << std::endl;
while(true)
{
fgets(buf,512,stdin);
if(strncmp(buf,"exit",4)==0)
{
break;
}
bytestosend=strlen(buf);
bool succes = WriteFile(port,buf,bytestosend,&bytessend,NULL);
if(!succes)
{
std::cout << "Getlasterror " << GetLastError() << std::endl;
getch();
}
std::cout << "Send " << bytessend << " bytes, to send " << bytestosend << std::endl;
}
CloseHandle(port);
return 0;
}