⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme.txt

📁 简单实用, 功能强大的 C++ Builder 串口控件! 本控件是免费的, 不需要注册, 有关授权及许可协议详见 license.txt 文件。 1.支持二进制数据和文本数据的收发 2.支
💻 TXT
字号:
Victor 串口 VCL 控件,版本 1.3.3.5 for BCB 5 & BCB 6
C++爱好者: http://www.cppfans.com/

【软件简介】
简单实用, 功能强大的 C++ Builder 串口控件!
本控件是免费的, 不需要注册, 有关授权及许可协议详见 license.txt 文件。

1.支持二进制数据和文本数据的收发
2.支持任意格式的数据的收发
3.支持两种数据包协议(识别每帧数据首尾的方法):
①超时判断数据首尾, 适用于与单片机和仪表的通讯
②帧首尾和控制符, 适用于大量复杂的数据传输, 例如文件收发等

【控件特点】

1.完全由 C++ 代码写的, 支持简体中文, 繁体中文, 英文.
2.免费控件, 在主页上可提供示例程序和使用方法
3.免费升级, 如果控件版本升级, 在直接主页上下载新版本控件

使用简单:
用 控件->Active=true; 打开串口
控件->Read()读, 控件->Write()写.
可以处理控件的事件, 但不是必须的.


此版本包含2个控件:

1.TYbCommDevice 控件: 改进了设计界面, 使用更简单, 并且增加了很多功能.
2.TYBComm32 控件: 为了兼容以前版本而保留下来, 不建议新用户使用. 

更新记录:

【版本 1.3.3.5 新增功能(2005-02-01)】
1.事件线程同步: 增加 SyncEvents 属性, 默认为 true 同步现成, 
  允许在事件里做任何事情了, 可以直接对 Memo 等操作; 
  如果 false, 和以前版本一样, 事件在线程里, 某些不能在线程里操作的控件
  (Memo 等) 不能在事件里使用
2.数据包 FrameSettings 增加 DoubleFrameMark 可控制数据包首、尾是否发送两个
3.在启动数据包的状态, 仍然可以使用 Read 和 Write 属性收发数据, 
  不必要用 ReadPackage/WritePackage, 但这两个函数仍保留可用 
4.增加 DTR、RTS、CTS、DSR、RING、RLSD/DCD 属性
5.开放汉字处理功能, 支持 BIG5、GB2312、GBK、UNICODE, 包括获取汉字的拼音、
  注音(ㄅㄆㄇㄈ)、笔画数; 汉字字符串比较大小和排序,
  按拼音、注音、笔画数比较; 汉字内码 BIG5/GBK/UNICODE 之间相互转换

【版本 1.3.3.4 开源版本(2004-05-21)】
1.在 TSharedMemory 类里面增加了一个 SetForegroundWindow 静态函数,
  可以强行把与同名 API 函数不同的是,这个函数可强行把窗口提前到最前端。
2.修改 TAppLang 里面的 GBK→BIG5 码表,添加几个遗漏的字。
3.添加一个 TBASE64 类,处理 BASE64 编解码的类,可自定义编码表。
4.增加一个 ShutDownWindows 函数,可实现关机、重启、或注销的功能。

【版本 1.3.3.4 新增功能(2003-08-20)】
1.增加了 Space Parity 校验方式。
2.改正上个版本的 InitModem() 方法在 BCB6 下不能正常初始化 Modem 的错误。

【版本 1.3.3.3 新增功能(2003-06-29)】
1.针对与①单片机通讯②传递大量复杂数据, 加强了数据包功能:
增加了 PackageType 和 PackageInterval 两个属性。
PackageType 允许设置数据包的格式, 可设置包括与以前兼容、帧首尾和控制符、使用超时等三种类型的数据包格式。
PackageInterval 属性: 如果 PackageType 为超时判断数据首尾, 这个属性设置超时时间(毫秒)。
①使用超时的方法适用于与单片机和仪表通讯的大部分情况
②使用帧首尾和控制符的方法适用于大量复杂的数据传输, 例如文件收发等。

2.新版本的控件附带详细的帮助文档和六个完整的示例程序, 每个程序都包括 BCB5 和 BCB6 两个版本, 这六个例子演示了控件的各个功能。


【版本 1.3.3.3 修改BUG】
在 Windows 2003 下访问某些内置调制解调器的串口可能会运行不正常。


【版本 1.3.3.2 修改BUG】
①修改不能打开 COM9 以上的串口的错误, 现在可以使用所有系统支持的串口了。
②由于安装盘的制作问题没有解决, 这个版本不使用安装盘了, 自己手动添加控件。


【版本 1.3.3.1 修改BUG】
① 修改 1.3.3.0 版本的 bug: 在 BCB6 下编译生成的可执行文件需要 designide60.bpl
感谢网友小庭提供了 bug 信息! 
这个 designide60.bpl 只有在设计的时候才需要的, 可执行文件根本就不应该需要这个文件, 无论是动态链接还是静态库。


【版本 1.3.3.0 新增功能】
① 设计时双击鼠标, 或按鼠标右键, 可弹出设置参数对话框.
② 新赠方法 SettingsDialog() 方法, 弹出设置参数对话框.
③ 增加 EscapeCommFunction() 方法, 实际上是通过传递 Handle 属性调用 API 函数 EscapeCommFunction()
④ 支持简单数据包通讯协议, 即可任意定义包头,尾,和控制符作为协议, 发送以数据包为单位
-> UsePackage 属性设置是否启动数据包协议, FrameSettings 属性确定头,尾,控制符.
⑤ 支持 MODEM

【控件安装方法 (这个方法适用于所有VCL控件)】

1.BCB 菜单: Project->Options->Packages->Add
如果是BCB6: 选择安装的文件夹 yb_base_c6.bpl 和 yb_comm_c6.bpl, 然后按“打开”按钮
如果是BCB5: 选择安装的文件夹 yb_base_c5.bpl 和 yb_comm_c5.bpl, 然后按“打开”按钮

2.BCB 菜单: Project->Options->Directories/Conditionals
Include Path 和 Library Path 都要添上安装路径(包含*.h和*.lib的文件夹)
①Include Path 右面的“…”按钮,添加包含 *.h 文件的文件夹
②Library Path 右面的“…”按钮,添加包含 *.lib 文件的文件夹 

3.如果是 Windows 9x 需要在 C:\AUTOEXEC.BAT 文件里面的 PATH=后面添加包含 *.bpl 文件的文件夹
①如果是 Windows NT/2000/2003/XP 需要在:我的电脑->属性->高级->环境变量->系统变量:
②列表里面的“变量”为 Path 的“值”按:“编辑”按钮,添加包含 *.bpl 文件的文件夹
无论是①还是②,文件夹之间的间隔都是用分号隔开。

其中2.非常重要,直接影响编译
其中3.是用来保证使用动态库编译的程序运行找到动态库, 用静态库编译不使用。这个步骤需要重新启动电脑才可生效。
建议大家安装控件时1-3的步都要做。 

有关VCL控件的安装和卸载等问题,在 http://www.cppfans.com/vclcontrol.asp 上有更详细的介绍。

【文件内容】
VCL\*.*                   串口控件
Help\YbCommHelp.chm       帮助文档
Examples.                 完整的示例程序,包括:
        |- CommMcu          与单片机通讯:超时方法帧首尾识别的例子
        |- ModemDial        Modem 拨号的例子
        |- SendBinary       二进制数据收发
        |- SendPackage      数据包收发 (带首尾和控制符格式的)
        |- SendPkgOld       与以前版本兼容的数据包收发 (带首尾和控制符的)
        |- SendText         文本收发演示程序
        |- Settings         自定义串口设置对话框,自己编 SettingsDialog 方法的对话框
        |- SmpBinary        二进制数据收发,可以判断数据校验位是否正确
        |- SmpSendFile      简单的文件收发演示程序
        `- TestSendFile     文件收发演示程序
Source\*.*                控件源程序
readme.txt                您现在正在看的说明文件
license.txt               最终用户许可协议

【简单应用】
打开串口:
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(任意缓存地址,缓存容量);


【新功能:识别完整的数据帧】
__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<n; i++)
            s += IntToHex(Buf[i],2) + " ";
        Memo1->Lines->Add(s); //在 Memo1 里显示出收到的数据, 将会是完整的一帧数据
     }
}
//---------------------------------------------------------------------------

谢谢您对Victor串口控件的支持!
欢迎到我的网站上讨论串口控件的问题!

    ---- Victor Chen

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -