作者missle3 (新竹苦命研究生)
看板Programming
标题Re: 关於C++的串流处理
时间Thu Aug 10 21:53:33 2006
※ 引述《[email protected] (自己的选择)》之铭言:
: 我想用C++写一个程式接收由RS232读入的资料
: 但小弟我不知如何下手
: 我找过google但资料少得可怜
: 请问各位大大有没有推荐的书或网站??
: 一开始接触这方面要从哪里下手呢??
: 谢谢 orz
我用BCB写的
//=============== 开启一个 com port ==========================
void __fastcall TForm1::openClick(TObject *Sender)
{
char* comno;
DCB dcb;
String temp;
temp="Com"+IntToStr(rdCOM->ItemIndex+1);
comno=temp.c_str();
hComm=CreateFile(comno,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);
if(hComm==INVALID_HANDLE_VALUE)
{
MessageBox(0,"Comm error","通讯错误",MB_OK);
return;
}
Shape2->Brush->Color= clGreen;
GetCommState(hComm,&dcb);
dcb.BaudRate=CBR_38400;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
if(!SetCommState(hComm,&dcb))
{
MessageBox(0,"Comm error","通讯错误",MB_OK);
CloseHandle(hComm);
return;
}
if(!SetupComm(hComm,2000,2000))
{
MessageBox(0,"Comm error","通讯错误",MB_OK);
CloseHandle(hComm);
return;
}
EscapeCommFunction(hComm,CLRDTR);
}
//-----------------------------------------------------------
//======================== 接收外部资料 副程式
DCB dcb;
int temp1;
String temp;
char inbuff[19200];
DWORD nBytestRead,dwEvent,dwError;
COMSTAT cs;
ClearCommError(hComm,&dwError,&cs);
GetCommState(hComm,&dcb);
if(cs.cbInQue>sizeof(inbuff))
{
PurgeComm(hComm,PURGE_RXCLEAR);
return;
}
ReadFile(hComm,inbuff,cs.cbInQue,&nBytestRead,NULL);
inbuff[cs.cbInQue]='\0';
}
// ======================== 传送资料副程式
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
String temp;
int in;
unsigned long lrc,BS;
if(hComm==0)
return;
temp= Msend->Text; // 我读取我面板上的使用者输入字串
BS=temp.Length();
char *senddata;
/*for(int i=0;i<BS;i++)
senddata[i]=temp[i]; */
senddata=temp.c_str();
cbiq->Text=(BS);
WriteFile(hComm,senddata,BS,&lrc,NULL);
//delete[] senddata;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.28.84