首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

YbCommDevice串口控件(有帮助者必给分)解决方法

2012-02-19 
YbCommDevice串口控件(有帮助者必给分)我用YbCommDevice串口控件想实现发送和接收,我的代码是这样的,但是

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失败!
[解决办法]
估计也是文件操作的问题
[解决办法]
刚刚下了这个控件,现在过来瞧瞧。
好像用这控件实现很简单咦

热点排行