Diskuze: Problém s kódem

C# .NET .NET (C# a Visual Basic) Problém s kódem American English version English version

Aktivity (3)
Avatar
Maros2470
Člen
Avatar
Maros2470:13. února 8:05

Zdravím. Přepisuji si program na revizi spotřebičů včetně komunikace s měřícím přístrojem. Při přepisování třídy pro komunikaci jsem narazil na problém v kódu, se kterým si nevím rady. Můžete mi někdo poradit?

[DllImport("FTD2XX.dll")]
        private static extern unsafe REVEXprofi.FT_STATUS FT_ListDevices(void* pvArg1, void* pvArg2, uint dwFlags);

        [DllImport("FTD2XX.dll")]
        private static extern unsafe REVEXprofi.FT_STATUS FT_ListDevices(uint pvArg1, void* pvArg2, uint dwFlags);
[DllImport("FTD2XX.dll")]
        private static extern unsafe REVEXprofi.FT_STATUS FT_OpenEx(void* pvArg1, uint dwFlags, ref uint ftHandle);

        [DllImport("FTD2XX.dll")]
        private static extern REVEXprofi.FT_STATUS FT_Close(uint ftHandle);

        [DllImport("FTD2XX.dll")]
        private static extern unsafe REVEXprofi.FT_STATUS FT_Read(uint ftHandle, void* lpBuffer, uint dwBytesToRead, ref uint lpdwBytesReturned);

        [DllImport("FTD2XX.dll")]
        private static extern unsafe REVEXprofi.FT_STATUS FT_Write(uint ftHandle, void* lpBuffer, uint dwBytesToRead, ref uint lpdwBytesWritten);

Problém je v těchto úescích: FT_ListDevices, FT_OpenEx, FT_Read, FT_Write.
Text výjimky: Nebezpečný kód může vzniknout jenom při kompilaci s přepínačem /unsafe.

Díky

 
Odpovědět 13. února 8:05
Avatar
Maros2470
Člen
Avatar
Odpovídá na ostrozan
Maros2470:13. února 9:04

Díky. Ještě jsem narazil na jeden problém v tomto kódu.

private unsafe bool SearchAndConnectREVEXprofi()
        {
            if (this.COMPortNameGlobal != "")
            {
                if (this.COMport.IsOpen)
                    return false;
                this.COMport.PortName = this.COMPortNameGlobal;
                if (!((IEnumerable<string>)SerialPort.GetPortNames()).Contains<string>(this.COMPortNameGlobal))
                    return false;
                try
                {
                    this.COMport.Open();
                }
                catch
                {
                    return false;
                }
                return true;
            }
            byte[] bytes = new byte[64];
            uint num;
            this.ftStatus = REVEXprofi.FT_ListDevices((void*)&num, (void*)null, 2147483648U);
            if (this.ftStatus == REVEXprofi.FT_STATUS.FT_OK)
            {
                for (int index = 0; (long)index < (long)num; ++index)
                {
                    fixed (byte* numPtr = bytes)
                    {
                        this.ftStatus = REVEXprofi.FT_ListDevices((uint)index, (void*)numPtr, 1073741826U);
                        if (this.ftStatus == REVEXprofi.FT_STATUS.FT_OK && new ASCIIEncoding().GetString(bytes).ToLower().Contains("revexprofi"))
                        {
                            this.ftStatus = REVEXprofi.FT_Open((uint)index, ref this.m_hPort);
                            return this.ftStatus == REVEXprofi.FT_STATUS.FT_OK;
                        }
                        // ISSUE: __unpin statement
                        __unpin(numPtr);
                    }
                }
            }
            return false;
        }

Jedná se o toto: __unpin(numPtr);

Můžeš mi poradit co s tím?
Díky

 
Nahoru Odpovědět 13. února 9:04
Avatar
Luboš Satik Běhounek
Autoredaktor
Avatar
Odpovídá na Maros2470
Luboš Satik Běhounek:13. února 10:25

unpin muzes nejspis ignorovat

Nahoru Odpovědět  +1 13. února 10:25
https://www.facebook.com/peasantsandcastles/
Avatar
Maros2470
Člen
Avatar
Odpovídá na Luboš Satik Běhounek
Maros2470:13. února 10:36

Takže úplně vymazat?

 
Nahoru Odpovědět 13. února 10:36
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Maros2470
ostrozan:13. února 10:42

asi to je někde v těch knihovnách a ty to nemáš naimportované
ale taky jsem se ještě nesekal s tím, že by se "fixovaný" ukazatel extra rušil

 
Nahoru Odpovědět 13. února 10:42
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Maros2470
ostrozan:13. února 11:14

no spíš zaremovat s nějakým komentářem - pokud neverzuješ (git apod.)

 
Nahoru Odpovědět 13. února 11:14
Avatar
Luboš Satik Běhounek
Autoredaktor
Avatar
Odpovídá na Maros2470
Luboš Satik Běhounek:13. února 13:17

To same, co mel delat unpin, tady resi prave konec toho fixed statementu -> smazat.

Editováno 13. února 13:17
Nahoru Odpovědět 13. února 13:17
https://www.facebook.com/peasantsandcastles/
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.