全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4704
推到 Plurk!
推到 Facebook!

專屬BCB用Serial Port的VCL套件

 
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-02-03 08:37:29 IP:219.68.xxx.xxx 未訂閱
最近在找原有舊的SERIAL VCL的升級套件,無意間在對岸看到了這個功能強大且簡單的VCL套件,將原來複雜的設定給簡單化了,提供給各位同好參考一下
================================
Victor Chen的家
www.cppfans.com/vclcontrol.asp
================================
以下為簡介
=======================================================================
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(任意緩存地址,緩存容量);
=======================================================================

順便代為提供檔案,造福不能連到對岸同胞網站的同好,若有不妥,還煩請站長刪除,謝謝。

系統時間:2024-05-04 3:58:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!