Скачиваний:
34
Добавлен:
15.09.2014
Размер:
1.91 Кб
Скачать
// 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;
}