회원가입 ID/PW 찾기

펌웨어 & 코딩언어 HOTrs232 통신프로그램..

예딩2010.12.06 18:1412.06조회 수 2360댓글 0이 게시물을

AA

오픈소스가많다는데 소켓프로그래밍밖에안보여서요..ㅠㅠ

rs231을 통한 일대일 채팅프로그램을 구현해야되는데..제대로 안되네요

글을 쓰면 연속적으로 써지는게 아니라

워키토키 방식으로 한줄씩 돌아가면서 순차적으로 글을써야만해요ㅠㅠ..이거어떻게고치죠?

 

#include <iostream.h>
#include <windows.h>
#include <string.h>
// using namespace std;

HANDLE hComm;
DCB m_dcb;

int Open_Port(char* szPort)
{
 //The CreateFile function opens a munications port
 hComm = CreateFile( szPort,  //pointer to name of the file
  //If a port does not exist, an error will occur (ERROR_FILE_NOT_FOUND)
  GENERIC_READ | GENERIC_WRITE, // access (read-write) mode. 
  0, // exclusive access.  Communications ports cannot be shared in the same manner that files are shared
  0, // default security attributes
  OPEN_EXISTING, //Opens the file. The function fails if the file does not exist.
  0,//FILE_FLAG_OVERLAPPED,
  0);
//If the function succeeds, the return value is an open handle to the specified file. 
//If the file does not exist before the call, GetLastError returns zero.


 // check serial port
 if (hComm == INVALID_HANDLE_VALUE)
 {
  // Handle the error
  cout << "CreateFile failed with error" << endl <<endl;
  return 1;
 }
 else
 {
  cout << "CreatFile is Success" << endl<<endl;  
 }

 return 0;
 
}

int Init_serial()
{

 //get serial communications device
 //baud rate, stop bits, byte size, Parity check

//There are three ways to initialize a DCB structure.
//The first method is to use the function GetCommState.
//This function returns the current DCB in use for the communications port. 
 if(GetCommState(hComm,&m_dcb))  // handle to communications device
          // pointer to device-control block structure   
 {
  cout << "Check Serial Satus" << endl;
  cout << "baud rate : " << m_dcb.BaudRate << endl;
  cout << "stop bit : " << m_dcb.StopBits  << endl;
  cout << "data size : " << m_dcb.ByteSize << endl;
  cout << "Ready to Serial" << endl<< endl;
 }
 else
 {
  cout << "Fail to Set serial" <<endl<<endl;
 }
 

 /*
 typedef struct _DCB { // dcb
    DWORD BaudRate;            // current baud rate
    DWORD fParity: 1;          // enable parity checking
    BYTE ByteSize;             // number of bits/byte, 4-8
    BYTE Parity;               // 0-4=no,odd,even,mark,space
    BYTE StopBits;             // 0,1,2 = 1, 1.5, 2
 } DCB;
 */


 // set serial device
 m_dcb.BaudRate = 115200;
 m_dcb.ByteSize = 8;
 m_dcb.StopBits = ONESTOPBIT;
 m_dcb.Parity   = NOPARITY;

//The SetCommState function configures a communications device according to the specifications
//in a device-control block (a DCB structure).
//The function reinitializes all hardware and control settings,
//but it does not empty output or input queues
 if(SetCommState(hComm,&m_dcb))  // handle to communications device
          // pointer to device-control block structure
 {
  cout << "Serial device is set" << endl;
  cout << "baud rate : " << m_dcb.BaudRate << endl;
  cout << "stop bit  : " << (int)m_dcb.StopBits  << endl;
  cout << "Parity    : " << (int)m_dcb.Parity    << endl;
  cout << "data size : " << (int)m_dcb.ByteSize  << endl<<endl;
 }
 else
 {
  cout << "Fail to Serial set" << endl;
  cout << "=============================" << endl;
  return 1;
 }

 return 0;
}

int Comp_str(char *a)
{
 int pt=0;

 if(strcmp(a,"/quit"))
  pt= 1;

 // cout << "Result of Compare : " << pt << endl;


 return pt;
}

int main()
{
 char *szPort;
 const int buff_size=2048;
 char buf[buff_size]="";
 char sbuf[buff_size]="";
 unsigned long byte_read=0;
 unsigned long byte_written=0;

 int protocol =0;
 int val;
 szPort="COM2";
  
 // Create File for Com Port
 if(Open_Port(szPort))
 {
  cout << " Fail to Create File for ComPort" << endl;
  return 1;
 }

 // Initialize Serial Port
 if(Init_serial())
 {
  cout << " Fail to Initialize Serial Port" << endl;
  return 1;
 }

 while(1)
   {

    cin.getline(buf, 20);
 
 

 val=WriteFile(hComm,  // handle to file to write to
    buf,    // pointer to data to write to file
    strlen(buf),  // number of bytes to write
    &byte_written,  // pointer to number of bytes written
    NULL); // pointer to structure for overlapped I/O
    if(val==0);
    
    cout << "send data : " <<buf << endl;
    
 

 val=ReadFile(hComm,  // handle of file to read
    sbuf,    // pointer to buffer that receives data
    sizeof(sbuf),  // number of bytes to read 
    &byte_read,   // pointer to number of bytes read
    NULL);    // pointer to structure for data

    if(val==0);
    {
     cout <<" recv_data : "<<sbuf << endl;
     memset(sbuf, 0, buff_size);
    }    
    
    
 }
     
 

 cout <<"End of Chatting" << endl;
 

 //The ReadFile function reads data from a file, starting at the position indicated by the file pointer.

 // device close
 CloseHandle(hComm);   // handle to object to close

 return 0;
}

댓글 0

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
55 Software & IDEs HOTAllegro OrCAD 16.6 파일 보내주실 수 있나요?2 jihE 484 2018.01.28
54 Software & IDEs 소스 분석툴 관련 질문드려요2 아톰신 171 2017.01.02
53 Software & IDEs 리눅스 커널에 대해 공부하려고 하는데 서적 한부 추천 부탁드립니다.1 아톰신 176 2017.01.02
52 Software & IDEs PADS.9.4.1 받을수 있는 방법(훈련병)2 하운드 298 2016.07.13
51 Software & IDEs 리눅스는 여기 사이트와 거리가 먼거죠?1 pcb훈련변 185 2016.06.05
50 Software & IDEs epm3128act100-10n 프로그램 확인 땡쟁이 215 2015.12.17
49 Software & IDEs 신입생입니다.3 sunni 226 2015.12.09
48 Software & IDEs gps단말기 펌웨어질문입니다1 힘술쟁이 258 2015.11.18
47 Software & IDEs HOTUSB를 사용하는 디바이스 펌웨어 개발 책? 문서?1 베이아터 481 2014.01.09
46 Software & IDEs HOT큐블럭 프로그래밍 관련 질문 올립니다.1 행복이아빠 600 2013.08.22
45 Software & IDEs HOTProteus 7.7 Professional2 Keyshaun 756 2013.07.12
44 Software & IDEs HOTmsp430f1611을 사용하고 있는데 ADC에서 읽어들인 값하고 직접 테스터기로 찍은 값이 달라요1 김진성짱 813 2013.06.25
43 Software & IDEs HOTOV9620 SXGA 모드 설정 좀 도와주세요1 로미옹 517 2013.03.25
42 Software & IDEs HOT주차 시스템 회로 구성하는데요.. peng2 1203 2011.10.09
41 Software & IDEs HOTFreescale 질문인데 아시는 분 없나요? ㅠㅠ2 jzho 1552 2011.07.19
40 Software & IDEs HOTkey board 관련1 jjhuem 2449 2011.07.06
39 Software & IDEs HOT펌웨어 하다가 막히는 부분이 있어서 질문 드립니다. 마모루 1559 2011.06.13
38 Software & IDEs HOT어셈블리어 공부하기1 아이스으 2193 2011.03.22
37 Software & IDEs HOT스마트폰 앱 개발시 음성필터요..1 귤씅 2210 2011.01.28
36 Software & IDEs HOTWDK 관련 문의 입니다.1 소보루 1293 2010.11.18
  • 벗을 사귐에는 과하여 넘치지 말지니 넘치면 아첨하는 자가 생기리라.
    - 채근담
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.