C'den C#'A Veri Cekmek ?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Elif - Efe
    rakkoc
    rakkoc's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo

    Merhaba Arkadaslar Elimdeki Header file icersinde asagidaki gibi 2 tane function tanimli.

     

    //SDK_C.h //////////////////////////////////////////////////

    typedef struct{

    uchar  Command[4]; 

    ushort Lc;

    uchar  DataIn[512];

    ushort Le;

    }CON_SEND;

     

    typedef struct{

    ushort LenOut; 

    uchar  DataOut[512];

    uchar  outA;

    uchar  outB;

    }CON_RESP;

     

    SDK_C_DLL_API int   Csdk_Cmd(uchar port, CON_SEND * ConSend,CON_RESP * ConResp);

     

    SDK_C_DLL_API int   Csdk_Open(uchar port);

    //////////////////////////////////////////////////////////////////

    Bu functionlari bu sekilde c#'a cevirmeye calistim.

     

    // SDK_C.cs //////////////////////////////////////////////////

        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]

        public struct CON_SEND

        {

            public byte[] Command;

            public System.UInt16 Lc;

            public byte[] DataIn;

            public System.UInt16 Le;

        }

     

        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]

        public struct CON_RESP

        {

            public System.UInt16 LenOut;

            public byte[] DataOut;

            public byte outA;

            public byte outB;

        }

     

            [DllImport("SDK_C.dll")]

            public static extern System.Int16 Csdk_Cmd(System.Byte port, [In, Out] CON_SEND ConSend, [In, Out] CON_RESP ConResp);

            //public static extern System.Int16 Csdk_Cmd(System.Byte port, ref CON_SEND ConSend, ref CON_RESP ConResp);

     

     

            [DllImport("SDK_C.dll")]

            public static extern System.Int16 Csdk_Open(System.Byte port);

    /////////////////////////////////////////////////////

    Csdk_Cmd kismini calistiramadim ama Csdk_Open calisiyor. Yani yolladigim portun acikmi kapali mi oldugunun bilgisini veriyor. struct'in cevirimi ile ilgili bir hata mi yapmisim acaba sizin gozunuze carpan bir sorun varmidir ?


    Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    [in, out] nedir ilk kez gördüm :) c# da da pointer kullanabiliyorsun, C de olduğu gibi c# dakini de pointer olarak yapabilirsin?


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Elif - Efe
    rakkoc
    rakkoc's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo

     

       public static extern System.Int16 Csdk_Cmd(System.Byte port, [In, Out] CON_SEND ConSend, [In, Out] CON_RESP ConResp);

    olan satiri

       public static extern System.Int16 Csdk_Cmd(System.Byte port, CON_SEND * ConSend, CON_RESP * ConResp);

    Olarak degistirdigimde bunu aliyorum :

    Error1Pointers and fixed size buffers may only be used in an unsafe contextC:\Users\rakkoc\Documents\Visual Studio 2005\Projects\test\DeviceApplication1\DeviceApplication1\SDK_C.cs3873DeviceApplication1

    bu davayi anlamadim ben :\

     


    Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    metodunu unsafe olarak işaretlemeyi dener misin?

     

    public ......  unsafe ..... .... ( ...)

    {

    }

     

    gibi

    edit: derlerken de unsafe olarak derlemen gerekiyor 

     

    http://msdn.microsoft.com/en-us/library/ct597kb0(v=vs.80).aspx 

    unbalanced tarafından 28/Mar/13 11:37 tarihinde düzenlenmiştir

    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    attackatak
    attackatak's avatar
    Kayıt Tarihi: 06/Mayıs/2007
    Erkek

    c++'da ki structların içinde ki değişkenleri c#'a göre kontrol eder misin?. mesela system.int16 yerine Inptr dener misin?

    [in,out] nedir harbiden? orada gerekli bir şey mi?

    attackatak tarafından 28/Mar/13 13:58 tarihinde düzenlenmiştir
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Elif - Efe
    rakkoc
    rakkoc's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo
    attackatak bunu yazdı

    c++'da ki structların içinde ki değişkenleri c#'a göre kontrol eder misin?. mesela system.int16 yerine Inptr dener misin?

    [in,out] nedir harbiden? orada gerekli bir şey mi?

    ref diye denedim olmayinca bir yerde in out gordum onu denedim :) o kisimda ne yapti isem kargasa oldu :)

     

    Ref ile yapincada "NotSupportedException" aliyorum.

    rakkoc tarafından 28/Mar/13 15:08 tarihinde düzenlenmiştir

    Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    çözemedin mi hocam hala ?


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Elif - Efe
    rakkoc
    rakkoc's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo

    hocam o sekilde yaptigimda benim gonderdigim kodlar { 0xE0, 0xA0, 0xC4, 0x72 } seklinde fakat makineye random birseyler gidiyor.

    WinCe ile ilgili bir problem anladigim kadari ile ayni islemi REF ile de yapabiliyormusuz onu yapmaya calisiyorum suanda.


    Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    hocam ref out kullanman gerekiyorsa ikisinden birini kullanabilirsin. ikisi de ayn işe yarıyor, aralarındaki tek fark out da ilk değeri atamak zorunda değilsin.o yüzden bu fonksiyonu çağırırken parametre boş olabilir out kullanıyorsan. 


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Elif - Efe
    rakkoc
    rakkoc's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo
    unbalanced bunu yazdı

    hocam ref out kullanman gerekiyorsa ikisinden birini kullanabilirsin. ikisi de ayn işe yarıyor, aralarındaki tek fark out da ilk değeri atamak zorunda değilsin.o yüzden bu fonksiyonu çağırırken parametre boş olabilir out kullanıyorsan. 

    baya birsey denedim :) ama tek cevap donduren senin verdion ornek oldu. bi o verdi oda yanlis verdi :( giden fixed olunca onun icine veri atasanda o kendi verisini uretip gonderiyor. giden verinin zaten pointer ile gitmesi sacma. Bu dll'i yazan adamin aklina tukurim.


    Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    c++ da pointer çok kullanılıyor hocam. c# da o kadar rastlanan bir şey değil, ihtiyaç yok çünkü.. istersen teamviewer ile tekrar bakabilirm


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
Toplam Hit: 1084 Toplam Mesaj: 11