본문 바로가기

[ATmega128] 아트메가랑 PC랑 통신하기1

반응형

1. 하이퍼터미널 테스트 완료했으면 하이퍼터미널 대신 PC 코드를 작성하여 단방향 통신 테스트 하시오.

   

아트메가를 터미널과 통신했던 단방향직렬통신 상태로 놨두고 아래코드를 실행하면 된다.

   

   

/* 단방향 통신 main.cpp*/

   

#include <stdio.h>

   

#include <windows.h>

   

#include <iostream>

   

using namespace std;

   

     

   

int main(void)

   

{  

   

  int a;

   

  char szPort[15];    //문자배열 생성.

   

  wsprintf(szPort, "COM%d" , 1);    //포트 설정하는 부분

   

     

   

  HANDLE m_hcomm = NULL;

   

  m_hcomm = CreateFile(szPort,

   

        GENERIC_READ | GENERIC_WRITE,

   

        0, NULL, OPEN_EXISTING,

   

        FILE_ATTRIBUTE_NORMAL , NULL);

   

     

   

  if(m_hcomm ==   INVALID_HANDLE_VALUE)

   

  {

   

     

   

    printf("(!) Failed to create a Comm Device file");

   

    return FALSE;

   

  }

   

     

   

  DCB dcb;

   

  dcb.DCBlength = sizeof(DCB);

   

     

   

  GetCommState(m_hcomm, &dcb);

   

     

   

  dcb.BaudRate = 19200;    //통신 설정.

   

  dcb.ByteSize = 8;    //통신 설정.

   

  dcb.Parity = 0;    //통신 설정.

   

  dcb.StopBits = 0;  //통신 설정.

   

     

   

  SetCommState(m_hcomm, &dcb);

   

     

   

  OVERLAPPED osWrite;

   

  osWrite.Offset =0;

   

  osWrite.OffsetHigh = 0;

   

  osWrite.hEvent = CreateEvent(NULL, TRUE , FALSE, NULL);

   

      

   

   OVERLAPPED       osRead;

   

    osRead.Offset    = 0;

   

    osRead.OffsetHigh  =0;

   

    osRead.hEvent      = CreateEvent(NULL ,TRUE ,FALSE ,NULL);

   

        

   

    int check;

   

  char buf[100= "\r\n";

   

        //출력할 내용

   

  while(check != -1)

   

  {

   

        

   

    ReadFile(m_hcomm, buf, 100, NULL, &osRead);

   

    printf("recv1:%s \n" , buf);    //buf 받아서 출력

   

    Sleep(1000);

   

        

   

    /*WriteFile(m_hcomm, buf, strlen(buf), NULL, &osWrite);

   

    printf("write:%s\n" , buf);    //buf 받아서 출력

   

        Sleep(1000);*/

   

  }

   

  CloseHandle(m_hcomm);

   

     

   

  return 0;

   

      

   

    system("PAUSE");

   

    return EXIT_SUCCESS;

   

}

   

   

   

반응형
-->