我希望系统中的每个端口都有一个SerialPort-Objects数组。 我的想法就是这样做:
public ref class CommunicatorClass
{
private:
static array<SerialPort^>^ _serialPortList;
public:
static void Main(){
// _serialPortList->Initialize;
for each (String^ s in SerialPort::GetPortNames())
{
Console::WriteLine(" {0}", s);
AddListItem(s);
}
}
static void AddListItem(String^ s)
{
// Get the length
_serialPortList->Length = _serialPortList->GetLength + 1;
_serialPortList[_serialPortList->GetLength] = gcnew SerialPort(s, 9600);
}
};
但我对C ++ / Windows-Programming完全不熟悉。所以,是的,当然,有很多错误。任何人都可以纠正它(如果这个想法本身不完整废话)并告诉我一些关于错误的话?
会很高兴,提前谢谢你。
答案 0 :(得分:0)
您想要以相同的波特率实际打开系统上的每个串口吗?
您无法更改数组的长度,您必须创建一个全新的数据并复制所有数据,并且每次需要添加其他项目时都这样做效率很低。我建议使用System::Collections::Generic::List
代替,它会为您完成所有动态调整大小。
C ++ / CLI可以直接调用本机Windows串口函数,我建议你这样做,因为.NET SerialPort
类是一个完全垃圾的部分,它会强制你进入编程风格,除了麻烦。当然你会想要隐藏你自己的包装类背后的Windows界面,但这是非常值得的。