|
안녕하세요. 꾸벅~~
처음으로 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));
}
|