分类:
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
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(任意缓存地址,缓存容量);
所有演示程序和帮助文档都包含在控件包里面了,不需要单独下载了。