说明:
TCommSerialPortInfo 是枚举串口列表类,和以往老版本串口控件兼容。
如果使用了老版本串口控件 (1.5.0.5 及之前的版本) 的 TCommSerialPortInfo 类,不用修改代码就能使用。
新版本的 TCommSerialPortInfo 类在原来的基础上,增加了串口设备的详细描述。
头文件:
Vcl.VictorEnumSerial.h
Fmx.VictorEnumSerial.h
相关类或控件:
TVictorSerialPortInfo, TVictorSerialPortList, TYbCommDevice, TVictorComm
继承关系:
TCommSerialPortInfo 没有继承关系
属性:
方法:
方法 |
描述 |
TCommSerialPortInfo |
构造函数。
定义:
__fastcall TCommSerialPortInfo();
参数:
无
注意:
由系统自动调用 (静态变量) 或者通过 new 来调用 (动态分配), 不需要直接调用。 |
~TCommSerialPortInfo |
析构函数。
virtual __fastcall ~TCommSerialPortInfo();
注意:
由系统自动调用(静态变量)或者通过 delete 调用(动态分配), 不需要直接调用。 |
Refresh |
刷新 PortList 属性的串口列表,从系统里面重新读出串口列表到 PortList 属性。
定义:
void __fastcall Refresh(void);
参数:
无
返回值:
无 |
PortNo |
从串口名称得到串口号。
定义:
static int __fastcall PortNo(UnicodeString s);
参数:
s: 串口名称,例如 L"COM1", L"COM2", ……
返回值:
串口号,1 为 COM1,2 为 COM2,如果串口名称不符合 COMn 格式的,返回值为 0 |
PortName |
从串口号得到串口名称。
定义:
static UnicodeString __fastcall PortName(int iPortNo);
参数:
iPortNo: 串口号,1 为 COM1,2 为 COM2,……
返回值:
串口名称,例如 L"COM1", L"COM2", …… |
示例程序:
使用 TCommSerialPortInfo 枚举串口的示例程序 (已包含在控件压缩包里面) |
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TCommSerialPortInfo spi;
int iPortCount = spi.PortList->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 = spi.PortList->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"";
}
} |
|