Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2349081
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 17:57:58

 

Victor 串口 VCL 控件,使用简介

使用非常简单, 保你拿来就会!!!
完全的 VCL 风格, 双击控件可设置常用参数。

本页内容: ①新功能演示, ②简单的使用串口, 更详细的内容请参考
所有演示程序和帮助文档都包含在控件包里面了, 不需要单独下载了。


①新功能演示: 与单片机或仪表通讯, 使用 PackageType = cptFrameTimeout; 方式, 将接收到完整的每帧单片机数据!
本程序是在 OnPackage 事件里接收数据, 也可以在定时器, 或者其他任何想接收数据的地方接收, 包括线程。

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
YbCommDevice1->Active = true; //打开串口
YbCommDevice1->PackageType = cptFrameTimeout; //使用超时的方法识别每帧数据
YbCommDevice1->UsePackage = true; //启动 Package
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    char Buf[3];
    Buf[0] = 0x99;
    Buf[1] = 0x1b;
    Buf[2] = 0x0d;
    YbCommDevice1->WritePackage(Buf,3); //发送3个字节: 99 1B 0D
}
//---------------------------------------------------------------------------
void __fastcall TForm1::YbCommDevice1Package(TObject *Sender, int NotifyType)
{
    unsigned char Buf[1000]; //接收缓存
    int n = YbCommDevice1->ReadPackage(Buf,1000);

    if(n>0) //收到数据的字节数
     {
        AnsiString s;
        for(int i=0; i             s += IntToHex(Buf[i],2) + " ";
        Memo1->Lines->Add(s); //在 Memo1 里显示出收到的数据, 将会是完整的一帧数据
     }
}
//---------------------------------------------------------------------------


②简单的使用串口:

打开串口:
try
{
  YbCommDevice1->Active = true;
}
catch(Exception &e)
{
  Application->MessageBox(e.Message.c_str(),"错误信息",MB_OK|MB_ICONSTOP);
}

写数据
YbCommDevice1->Write(任意数据的地址,字节数);

例如
int i=5;
YbCommDevice1->Write(&i,sizeof(int));
YbCommDevice1->Write(Memo2->Text.c_str(), Memo2->Text.Length());

读数据
实际读出字节数 = YbCommDevice1->Read(任意缓存地址,缓存容量);






所有演示程序和帮助文档都包含在控件包里面了,不需要单独下载了。

 


--------------------next---------------------

阅读(1643) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~