Uchwyt do klasy serialPort visual c++

0

Witam serdecznie, potrzebuje przekazać uchwyt do portu COM do funkcji. Walczę z tym już z godzinę i nadal zero pomysłów. Dodam od razu, że żaden ze mnie programista ale muszę coś takiego na szybko zrobić. Poniżej kod:

funkcja send

void MODBUS_sendData(System::Byte *data, System::Byte lenght, System::IO::Ports::SerialPort ^port)
{
    array <System::Byte>^ buffer = gcnew array<System::Byte>(lenght+2);
    System::UInt16 CRC = MODBUS_calculateCRC(data, lenght);
    data[lenght] = CRC>>8;
    data[lenght+1] = CRC&0x00FF;
    for(int i=0; i<lenght+2; i++)    //przepisanie danych do bufora wysyłania
        buffer[i] = data[i];
    if(!(port->IsOpen))
    {
        port->Open();
        port->Write(buffer,0,lenght+2);
        port->Close();
    }
}

i potrzebuję z formulaża głównego Form1 przekazać uchwyt do portu do tej funkcji, czego bym nie robił to mam błąd:
np:

MODBUS_sendData(send, 6, serialPort1);

error C2664: 'MODBUS_sendData' : cannot convert parameter 3 from 'System::IO::Ports::SerialPort ^' to 'System::IO::Ports::SerialPort'

dodanie znaczników <code class="cpp"> i <code> - fp

0

Może tak?

MODBUS_sendData(send, 6, &serialPort1);
0

No niestety nie.
W zarządzanym C++ jeśli używamy wskaźnika ^ to referencje do niego uzyskujemy przez %. Niestety po użyciu
MODBUS_sendData(send, 6, %serialPort1);
wyskakuje następujący błąd:
error C3071: operator '%' can only be applied to an instance of a ref class or a value-type

0

Moze przed port->Open(); wstaw this->port->Open(); . W moim kodzie obsługującym serialport (który działą :) )przed każdym obiektem klasy SerialPort mam this->.

1 użytkowników online, w tym zalogowanych: 0, gości: 1