将数组写入Serialport visual c ++

时间:2013-10-10 08:38:41

标签: visual-c++-2012

我正在编写一个程序,通过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方法的正确结构是什么。

提前致谢

1 个答案:

答案 0 :(得分: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 );
}

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

希望这有帮助。

一切顺利, 亚当