안녕하세요..
오늘 RS-232 통신을 하다가 발생한 문제인데요.. 고수님들의 답변을
부탁드립니다.
다름이 아니라, Win98에서는 통신이 잘 되던 프로그램이 XP에서는 WriteFile 함수
호출부분에서 아무 응답 없이 죽어버립니다.
XP에서 컴파일을 해봐도 같은 문제가 발생하면서 죽어버리네요..
도저히 해결책을 모르겠습니다.
아래 소스(생성자부분과 Write File 부분) 올립니다..
부탁드리겠습니다.
__fastcall TForm1::TForm1(TComponent* Owner) :
TForm(Owner)
{
cc.dwSize
= sizeof(COMMCONFIG);
BuildCommDCB("9600,N,8,1",
&cc.dcb);
if ((hComm = CreateFile ("COM1",
GENERIC_READ|GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL)) ==
INVALID_HANDLE_VALUE)
{
ShowMessage("Error opening COM port");
return;
}
if (!SetCommState(hComm,
&cc.dcb))
{
CloseHandle
(hComm);
ShowMessage("포트 설정
ERROR!");
return;
}
cp.wPacketLength = sizeof(COMMPROP);
GetCommProperties(hComm, &cp);
bReading =
TRUE;
if ((hThread = CreateThread (NULL,
0,
(LPTHREAD_START_ROUTINE)ReadThread, NULL,0, &id))
== INVALID_HANDLE_VALUE)
{
ShowMessage("Error creating READ thread");
CloseHandle (hComm);
return;
}
}
========================================================================
int __fastcall TForm1::NetWriteString(unsigned char
*pszString, int cbString)
{
if(TX_enable)
{
TX_enable = 0;
int i;
LONG lrc;
Tx_cnt =
cbString;
Test_tmr = send_time;
for(i = 0 ; i <
Tx_cnt ; i++)
{
Tx_Buf[i] =
pszString[i];
}
for (i = 0; i < cbString;
i++)
{
unsigned char Ch =
pszString[i];
if (!WriteFile(hComm, (LPBYTE)&Ch,
1, (LPDWORD)&lrc, NULL))
{
locProcessCommError(GetLastError
());
}
}
TX_enable = 1;
}
return cbString;
}