YbCommDevice串口控件(有帮助者必给分)

springworker 2008-12-30 10:47:04
我用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;
}
//---------------------------------------------------------------------------
...全文
362 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxglsshui 2009-01-20
  • 打赏
  • 举报
回复
帮顶
chunyou128 2009-01-19
  • 打赏
  • 举报
回复
友情up
hbwhwc 2008-12-31
  • 打赏
  • 举报
回复
mark
success000 2008-12-31
  • 打赏
  • 举报
回复
mark
wesleyluo 2008-12-30
  • 打赏
  • 举报
回复
刚刚下了这个控件,现在过来瞧瞧。
好像用这控件实现很简单咦
springworker 2008-12-30
  • 打赏
  • 举报
回复
1楼有道理!
jaffy 2008-12-30
  • 打赏
  • 举报
回复
估计也是文件操作的问题
My_Love 2008-12-30
  • 打赏
  • 举报
回复
pfile = fopen("tempdata.txt","r+b");

fwrite(Buf,n,1,pfile);

fclose(pfile); //可能是没有这句导致,再次fopen失败!
内容概要:本文详细描述了机械零件Part4的设计与建模过程,重点围绕三维建模中的几何构造操作展开。首先基于原零件三视图确定关键尺寸,依次创建多个同心圆柱体结构,包括外层圆柱体(52、52、5)、中间圆柱体(25、25、7)以及中心孔结构(16、16、12)。随后对底部圆柱体进行临时加高处理,以便在顶面草绘中构建辅助图形:以计算得出的半径17.5画圆,并在其接触面上方绘制半径为3的小圆,进而引出两条分别成60°和-60°的斜线,配合一条水平线形成三角形轮廓。接着在其余两角复制相同的小圆结构,清理多余线条后完成草图设计。利用该草图执行“拉伸切除”操作,深度设为16.28mm,实现特征开槽。最后将底部圆柱体恢复原始高度5mm,完成整体结构修改。; 适合人群:具备基础CAD建模能力的机械设计人员或工科类学生;熟悉SolidWorks、AutoCAD等三维设计软件的操作者;从事零部件逆向设计或结构优化的技术人员。; 使用场景及目标:①用于学习复杂零件的分步建模方法,掌握从三视图到三维实体的转换技巧;②理解拉伸、切除、草图约束、包围盒设置等核心建模命令的实际应用;③提升对尺寸链计算、辅助线构建及几何关系控制的理解与实践能力。; 阅读建议:建议结合文中参数逐步在建模软件中复现操作,重点关注草图绘制逻辑与切除特征的关联性,注意各步骤间的顺序依赖关系,避免因尺寸或约束错误导致建模失败。

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧