0

我正在编写一个程序,通过 RS232 从 PC 到微芯片进行通信。

我习惯 C#,但我开始使用 Visual C++。

我收到以下错误:

IntelliSense:没有重载函数“System::IO::Ports::SerialPort::Write”实例与参数列表参数类型匹配:(RTC_Visual::uint8 [27U], int,RTC_Visual::uint8)

我写了写入串口的命令如下:

serialPort1->Write(TxStruct.u8_Buffer, 0, TxStruct.Message.u8_Length);

请有人告诉我我做错了什么,或者该serialport->write方法的正确结构是什么。

提前致谢

4

1 回答 1

0

你的问题不是很清楚;显示一些代码会有所帮助。似乎参数 TxStruct.u8_Buffer 与预期的 Byte[] 或 Char[] 都不匹配

我通过点 (.) 暗示 TxStruct 不受管理?

以下作品:

SerialPort ^myport=gcnew SerialPort;

//configures the port --ptr is a class that interacts with the user
myport->PortName="COM"+ptr->getportnumber();
myport->BaudRate=ptr->getbauds();
myport->DataBits=ptr->getdatab();
myport->StopBits=ptr->getstopb();
myport->Parity=ptr->getparity();
myport->WriteBufferSize=4096;
myport->RtsEnable=false;
myport->ReceivedBytesThreshold=256;

myport->WriteTimeout = 500;
String^ datatowrite="Data to write";
array<Byte>^ mybytes= Encoding::UTF8->GetBytes(datatowrite);

try
{
    myport->Open();
    myport->Write(mybytes,0,mybytes->Length);

}
catch (Exception^ e)
{
    //error
    MessageBox::Show( e->Message, "Port Error",
                    MessageBoxButtons::OK, MessageBoxIcon::Exclamation );
}

当我从参数 TxStruct.u8_Buffer 中扣除时,上述编码为 UTF8。请注意您正在使用的缓冲区的长度和串行端口的 WriteBufferSize 属性。此外,握手 XonXoff 的缓冲区过长可能会导致超时异常。

希望这可以帮助。

一切顺利,阿丹

于 2013-10-10T09:10:20.303 回答