主页C++ Builder 资料C++ Builder 串口控件Victor 串口控件使用说明TVictorSerialPortList
C++ Builder 串口控件
Victor 串口控件使用说明
 • TYbCommDevice
 • TVictorComm
 • TCommQueue
 • EVictorCommError
 • TComm32
 • EComm32Error
 • TVictorSerialPortInfo
 • TVictorSerialPortList
 • TCommSerialPortInfo
 • TVictorFSM
 • TVictorFsmStateT
Victor 串口控件示例程序
C++ Builder 编程技巧
C++ Builder 操作指南
C++ Builder 参考手册
网友留言/技术支持
TVictorSerialPortList - Victor 串口控件使用说明

说明:

TVictorSerialPortList 是枚举串口列表类,TCommSerialPortInfo 的 PortList 就是这个类型的。
由于 TVictorSerialPortList 是从 TObject 继承过来的,使用的时候必须用 new 创建,不能定义为静态变量。

头文件:

Vcl.VictorEnumSerial.h
Fmx.VictorEnumSerial.h

相关类或控件:

TVictorSerialPortInfo, TCommSerialPortInfo, TYbCommDevice, TVictorComm

继承关系:

TObject
 └TVictorSerialPortList

属性:

属性 类型 描述
Count int 串口列表里面串口的数量 (只读属性)。
定义:
  __property int Count = { read = _FGetSPCount };
Ports TVictorSerialPortInfo * [] 串口列表里面的串口信息,TVictorSerialPortInfo * 数组。
定义:
  __property TVictorSerialPortInfo *Ports [int] = { read = _FGetSPInfo };
通过这个属性可以读出串口列表里面每个串口的信息
示例程序:
  见本页最后的示例程序。
PortNames String [] 串口列表里面的串口名称,字符串数组,只需要串口名称时可以用这个属性。
定义:
  __property String PortNames[int] = { read = _FGetPortName };
Strings String [] 串口列表里面的串口名称,字符串数组,和 PortNames 相同,为了兼容老版本留下来的属性。
定义:
  __property String Strings [int] = { read = _FGetPortName };

方法:

方法 描述
TCommQueue 构造函数。
定义:
  TCommQueue(long lSize=8192);
参数:
  lSize 队列缓存字节数, 默认值 8192.
注意:
  由系统自动调用(静态变量)或者通过 new 来调用(动态分配), 不需要直接调用。
~TCommQueue 析构函数。
  virtual ~TCommQueue();
注意:
  由系统自动调用(静态变量)或者通过 delete 调用(动态分配), 不需要直接调用。
In 进队列 (写入 FIFO 缓存)。
定义:
  long In(const char far *s);
  long In(const char far *s, long n);
参数:
  s: 进入队列的数据地址
  n: 进入队列的数据字节数 (如果不指定 n 值, 相当于 n=1)
返回值:
  实际写入队列的字节数, 有可能:
  ·等于参数 n 值, 所有数据都成功的进入队列
  ·小于参数 n 值, 原因是缓存已满, 不能容纳所有 n 个字节
Out 出队列 (读出 FIFO 缓存)。
定义:
  long Out(char far *s);
  long Out(char far *s, long n);
参数:
  s: 要读出的数据存放的地址
  n: 要读出数据的最大字节数 (如果不指定 n 值, 相当于 n=1)
返回值:
  实际读出的字节数, 有可能: 小于等于参数 n 值, 取决于队列实际保存数据的字节数
Clear 清空队列。
定义:
void Clear(void);

示例程序:

使用 TVictorSerialPortList 枚举串口的示例程序
#include <memory>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  std::auto_ptr<TVictorSerialPortList>spList(new TVictorSerialPortList);
  spList->EnumPorts();

  int iPortCount = spList->Count;
  int iRowCount = iPortCount + 1;
  if(iRowCount < 2)iRowCount = 2;

  StringGrid1->ColCount = 9;
  StringGrid1->RowCount = iRowCount;

  StringGrid1->Cells[0][0] = L"序号";
  StringGrid1->Cells[1][0] = L"端口名称";
  StringGrid1->Cells[2][0] = L"设备别名";
  StringGrid1->Cells[3][0] = L"类型描述";
  StringGrid1->Cells[4][0] = L"类型GUID";
  StringGrid1->Cells[5][0] = L"设备标识";
  StringGrid1->Cells[6][0] = L"设备描述";
  StringGrid1->Cells[7][0] = L"位置信息";
  StringGrid1->Cells[8][0] = L"注册表的子路径";

  for(int iPortIdx=0; iPortIdx<iPortCount; iPortIdx++)
   {
     TVictorSerialPortInfo *lpPort = spList->Ports[iPortIdx];
     int iRow = iPortIdx + 1;
     StringGrid1->Cells[0][iRow] = IntToStr(iRow);        // 序号
     StringGrid1->Cells[1][iRow] = lpPort->PortName;      // 端口名称
     StringGrid1->Cells[2][iRow] = lpPort->FriendlyName;  // 设备别名
     StringGrid1->Cells[3][iRow] = lpPort->ClassDesc;     // 类型描述
     StringGrid1->Cells[4][iRow] = lpPort->ClassGuid;     // 类型GUID
     StringGrid1->Cells[5][iRow] = lpPort->InstanceID;    // 设备标识
     StringGrid1->Cells[6][iRow] = lpPort->DeviceDesc;    // 设备描述
     StringGrid1->Cells[7][iRow] = lpPort->LocationInfo;  // 位置信息
     StringGrid1->Cells[8][iRow] = lpPort->RegistryPath;  // 注册表的子路径
   }

  for(int iRow=iPortCount+1; iRow<iRowCount; iRow++)
   {
     for(int iColNo=0; iColNo<StringGrid1->ColCount; iColNo++)
       StringGrid1->Cells[iColNo][iRow] = L"";
   }
}
◤上一页:TVictorSerialPortInfo下一页:TCommSerialPortInfo

C++ 爱好者 -- Victor Chen 的个人网站 www.cppfans.com 辽ICP备11016859号