YbCommDevice串口控件(有帮助者必给分)
我用YbCommDevice串口控件想实现发送和接收,我的代码是这样的,
但是循环几次以后就在出现错误,停在 fwrite(Buf,n,1,pfile); 此处
用过此控件的朋友看看是怎么回事。
若我说的不详细,可询问。
FILE *pfile;
int n=0;
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
char Buffer[4];
int nbytes=4;
AnsiString s="";
YbCommDevice1->Active=true;
n++;
if(n>3)
{
n=1;
}
s="分站号"+IntToStr(n)+"扫描";
RichEdit1->Lines->Add(s);
Buffer[0]=0xa0;
Buffer[1]=n;
Buffer[2]=0xd0;
Buffer[3]=0xb0;
YbCommDevice1->Write(Buffer,nbytes);
Timer2->Enabled=true;
Timer1->Enabled=false;
pfile = fopen("tempdata.txt","r+b");
}
//---------------------------------------
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
unsigned char Buf[8192];
int n = YbCommDevice1->Read(Buf,8192); //收到 n 个字节
AnsiString s="";
for(int i=0; i<n; i++)
{
s += IntToHex(Buf[i],2) + " ";
}
fwrite(Buf,n,1,pfile); //实际读出字节数 = YbCommDevice1->Read(任意缓存地址,缓存容量);
s = s.Trim();
if(s.IsEmpty())
{
Timer1->Enabled=true;
Timer2->Enabled=false;
}
else
{
//fwrite(mutou_buf,16,1,pfile);
RichEdit1->Lines->Add(s);
RichEdit1->Perform( EM_SCROLLCARET, 0, 0 );
Timer1->Enabled=true;
Timer2->Enabled=false;
}
}
//---------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Timer1->Enabled=true;
}
//---------------------------------------
[解决办法]
pfile = fopen("tempdata.txt","r+b");
fwrite(Buf,n,1,pfile);
fclose(pfile); //可能是没有这句导致,再次fopen失败!
[解决办法]
估计也是文件操作的问题
[解决办法]
刚刚下了这个控件,现在过来瞧瞧。
好像用这控件实现很简单咦