회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
95 중고장터 HOTDEMO9RS08KASP FREESCALE EVALUATE BOARD 아크마 6264 2011.05.22
94 중고장터 HOT산켄 SLA7044M 및 PG001M 구합니다 밝은전기구슬 5029 2011.03.21
93 중고장터 HOT이노룩스 10.2인치 lcd 팝니다...1 스포츠광 6644 2011.03.18
92 중고장터 HOTATMEGA128 2개 팝니다 btnim 6879 2011.03.17
91 중고장터 HOTAT89S8253 24JC 수량24개 있습니다. 필요하신분께 드립니다1 초록 5099 2011.03.10
90 중고장터 HOTSTM32F103ZET 판매 아크마 5246 2011.02.27
89 중고장터 HOT8086 / 8088 어셈블러 관련 책 구해요 상혁짱 5757 2011.01.22
88 중고장터 HOT빵판 구해봅니다.6 상혁짱 4326 2011.01.22
87 중고장터 HOTencoder knob 구하고 있습니다.1 blackpearl 5724 2011.01.20
86 중고장터 HOTAVR, DSP 테스트 보드 제팔 6630 2011.01.18
85 중고장터 HOTKUT-128 KIT와 교재 비닐도 뜯지 않은 새 것입니다.1 짬짜미 6837 2010.12.31
84 중고장터 HOTAVR 테스트키트와 책을 같이 구매하고 싶습니다 orcad 4197 2010.12.02
83 중고장터 HOTavr 카운터 시계 파실분없나여?4 땡가드 4534 2010.11.27
82 중고장터 HOTavr128 교육용키트 싸게파시는분있으신가여?5 seohwan16 3907 2010.11.21
81 중고장터 HOT[서적] [마이크로칩 마이크로컨트롤러 응용] 모터콘트롤, 마이크로 컨트롤러 이해와 응용(마이크로칩 16비트) 삽니다.. 꾼뭉 4869 2010.11.18
80 중고장터 HOTPROVSM 6 정품 시디 구해 봅니다.1 열이 4661 2010.11.10
79 중고장터 HOT3d tv 구동칩 구합니다 Optimist_영 3835 2010.11.10
78 중고장터 HOT불루투스 송수신 모줄 저렴하게 구해봅니다 .1 산수유 3400 2010.11.02
77 중고장터 HOTICD-U40 팝니다. bluewing 4456 2010.10.06
76 중고장터 HOT마이크로 로봇 ATMEGA128 트레이닝킷 판매합니다.6 bluewing 5065 2010.10.06
  • 분노는 바보들의 가슴 속에서만 살아간다.
    - 아인슈타인
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.