회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
86 개발용역 HOTRF PCB 설계 및 제작 의뢰 받습니다. 아침해 12293 2011.05.24
85 개발용역 HOT프로그램 알르바이트 해 주실분... 개여울 6248 2011.05.11
84 개발용역 HOT평생파트너가 되겠습니다. 수내아트원 6317 2011.05.03
83 개발용역 HOT부품 무료 분양 powers 5813 2011.04.24
82 개발용역 HOT로드셀 이용한 전자저울 개발의뢰합니다. 이지스윈 8656 2011.04.21
81 개발용역 HOTpcb설계및 제작 의뢰 받습니다.2 artwork 6889 2011.04.01
80 개발용역 HOT타임콘트롤판의뢰3 웃는사람 6447 2011.03.16
79 개발용역 HOTLED 간판2 미늘인 6282 2011.02.18
78 개발용역 HOT개발의뢰입니다.( 매트랩을 이용한 최적화 구현) 깐돌이01 6605 2011.02.07
77 개발용역 HOT아트웍, 프로그램 의뢰 받습니다. 꼭꺼안고서 6412 2011.02.05
76 개발용역 HOTH/W & 펌웨어 개발 및 PCB 설계 경력자 모집 용가리3 10333 2011.01.22
75 개발용역 HOTAlmighty Solution [센서공급 및 ODM 개발]1 꽁이 6344 2011.01.17
74 개발용역 HOT내 컴퓨터 바이러스 내가 치료하자 !! - 백신만들기 중앙인 6320 2011.01.17
73 개발용역 HOT전동치솔 개발 빅루프다 6527 2010.12.13
72 개발용역 HOT동아전기부품을 소개합니다. 홈런볼 6841 2010.12.08
71 개발용역 HOT초음파 센서.. 아나아나나 6267 2010.11.29
70 개발용역 HOT하드웨어 개발 및 Artwork 해 드립니다.2 야웅이 5639 2010.11.15
69 개발용역 HOT라인트레이서4 조의련 5633 2010.11.07
68 개발용역 HOTIR 리모컨과 블루투스 가 포함된 회로 설계 의뢰합니다. hyun 11949 2010.11.03
67 개발용역 HOT테스팅하우스코리아(주)를 소개합니다. davidjang 6323 2010.11.03
Prev 1 ... 3 4 5 6 7 8 9 10 11 12 Next
  • 만물의 원소는 물이다.
    - 탈레스
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.