안녕하세요? 개박살님.. 답변 감사합니다.
컴파일 에러는 아니고, 포트 초기화 실패입니다.
말씀하신대로(L을 붙여서..) 했는데도 마찬가지네요..
WinCom API는 시스템베이스(주)(
http://www.sysbas.co.kr/) 자료실에서 다운받아
컴포넌트를 등록해서 사용하고 있는데, long형으로 설정되어 있습니다.
예제 프로그램에서는 실행이 잘 됐었는데, 조금 바꿔서 해보려니까 잘 안되네요..
예제 프로그램에서는 이렇게 사용했습니다.
//---------------------------------------------------------------------------
void __fastcall TForm1::btnOPENCLOSEClick(TObject *Sender)
{
long ret, len;
char DataSpecBk[500];
long BPS, ParityBit, DataBits, StopBits;
int pos;
m_PortNumber = StrToInt(cboPORT->Text.SubString(4, cboPORT->Text.Length()));
if(m_fopen) {
ret = Wincom1->opencom(m_PortNumber);
if(ret != 0) {
Application->MessageBox("Can't open the port", "Warning", MB_OK);
return;
}
strcpy(DataSpecBk, cboSETTING->Text.c_str());
if(DataSpecBk[4]== ',') {
BPS = StrToInt(AnsiString(DataSpecBk, 4));
pos = 5;
} else if(DataSpecBk[5] == ',') {
BPS = StrToInt(AnsiString(DataSpecBk, 5));
pos = 6;
} else {
BPS = StrToInt(AnsiString(DataSpecBk, 6));
pos = 7;
}
switch(DataSpecBk[pos]) {
case 'N' : ParityBit = 0; break;
case 'O' : ParityBit = 8; break;
case 'E' : ParityBit = 0X18; break;
}
pos += 2;
DataBits = StrToInt(DataSpecBk[pos]) - 5;
pos += 2;
StopBits = StrToInt(DataSpecBk[pos]) - 1;
ret = Wincom1->setcom(m_PortNumber, (ParityBit | DataBits | StopBits), BPS);
if(ret != 0) {
Application->MessageBox("Can't open the port", "Warning", MB_OK);
return;
}
CloseDlg();
btnOPENCLOSE->Caption = "CLOSE";
m_fopen = False;
len = StrToInt(8);
ret = Wincom1->ondata(m_PortNumber, len);
strcpy( m_SendCharsWhenEmpty, "");
Timer1->Enabled = true;
Timer1->Interval = 3000;
} else {
ret = Wincom1->closecom(m_PortNumber);
if(ret != 0) {
Application->MessageBox("Can't close the port", "Warning", MB_OK);
Close();
}
OpenDlg();
btnOPENCLOSE->Caption = "OPEN";
m_fopen = true;
}
}
//---------------------------------------------------------------------------
콤보박스에서 포트와 프로토콜을 설정하고, 버튼을 클릭하면 포트가 열리게 되어있습니다.
참고로 프로토콜 설정 콤보박스의 Items에는 아래와 같은 값들이 들어 있습니다.
1200,N,8,1
2400,N,8,1
4800,N,8,1
9600,E,7,2
9600,N,8,2
19200,N,8,1
38400,N,8,1
57600,N,8,1
115200,N,8,1
값을 고정(9600,N,8,2으로..)시키려고 하는데, 생각처럼 되지 않네요.
너무 쉽게 알려고 하는건 아닌지 해서 혼자 이렇게 저렇게 고민하다가 질문 드립니다.
그럼.. 답변 기다리겠습니다.