C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[23657] [Q] 어씽크 프로 하고 PLC해보신분 ??
왕대박 [emrwo] 806 읽음    2003-01-14 21:39
안녕하세요. 꾸벅~~
처음으로 Async Pro 4.0을 사용해서 PLC와 시리얼 통신프로그램을 만들려고 합니다.
헌데 문제가 생겼습니다... --;;

g_Packet의 갯수가 10개이하에서는 문제없이 DataPacket이 자료를 수집해오는데,
g_Packet의 갯수가 30개로 늘어나면서 2-3개의 Response만 있고 감감 무소식입니다.

원인을 분석해보니..
PLC가 for문을 통해서 들어오는 계속되는 g_Packet 데이터를 감당하지 못하고,
쌩까~~ 버리는 현상 같습니다. -___-;;;  아마도...
즉, 1st 데이터를 보내고, Response가 들어오는 것을 기다렸다가,
2st데이터를 보내는 전략으로 바꿔줘야 할 것 같아서,

TApdComport용 Thread1 과  TApdDataPackt용 Thread2 를 별도로 돌려서
WaitForSingleObject로 끝내버릴려고 했는데...
그게 잘 않되더군요.(TApdDataPackt가 동적으로 생성되지않음.) 결국... 실폐.......

어떻게 하면 될까요?
사소한 것이라도 좋으니 힌트라도 주시면 감사하겠습니다.


대략의   Source입니다.
//프로토콜 선언..
AnsiString g_Packet[] =
{
  "00RSS0106%MW008",
  "00RSS0106%MW018",
   ......
}

//데이터 요청하기~
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    AnsiString packet;
    for(int i = 0; i < PacketCount ; i++)
    {
       packet = Char(5);
       packet += asData;
       packet += Char(4);

       if(ComPort1->OutBuffFree >= packet.Length())
          ComPort1->PutString(packet);
    }
}

// DataPacket으로 받기
void __fastcall TForm1::DataPacket1StringPacket(TObject *Sender,
      AnsiString Data)
{
    Memo1->Lines->Add(Parsing(Data, 4));
}

+ -

관련 글 리스트
23657 [Q] 어씽크 프로 하고 PLC해보신분 ?? 왕대박 806 2003/01/14
23658     Re:[Q] 어씽크 프로 하고 PLC해보신분 ?? 김정모 1000 2003/01/15
23661         Re:Re:[Q] 어씽크 프로 하고 PLC해보신분 ?? 왕대박 663 2003/01/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.