我正在编写一个程序,通过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
方法的正确结构是什么。
提前致谢
答案 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的缓冲区太长可能会导致超时异常。
希望这有帮助。
一切顺利, 亚当