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 に答える