Evgenios1 Δημοσ. 21 Δεκεμβρίου 2008 Δημοσ. 21 Δεκεμβρίου 2008 Γεια σας. Λοιπον, επειδη εχω σπαστει με το τροπο που στελνεις δεδωμενα pc -> mobilephone & το αντιθετο (μεσο vista). Θελω να φτιαξω ενα προγραμματακι με το οποιο θα κανω τη διαδικασια στα μετρα μου. Το προβλημα μου ειναι οτι δεν εχω ηδεα ποιο dll εχει τα bluetooth interfaces για τα windows και ουτε και την υλοποιηση τους. κανα api ρε παιδες?
Directx Δημοσ. 21 Δεκεμβρίου 2008 Δημοσ. 21 Δεκεμβρίου 2008 http://msdn.microsoft.com/en-us/library/aa362932(VS.85).aspx
Evgenios1 Δημοσ. 21 Δεκεμβρίου 2008 Μέλος Δημοσ. 21 Δεκεμβρίου 2008 καλα φιλαρακι.. 3 ωρες εψαχνα τη msdn και δε το ειδα ποτε :/ δε μου λες τωρα, (επειδη τα'χει σε c++) πως θα κανω ενα struct απο c++ σε C#? πχ > typedef struct _BLUETOOTH_DEVICE_INFO { DWORD dwSize; BLUETOOTH_ADDRESS Address; ULONG ulClassofDevice; BOOL fConnected; BOOL fRemembered; BOOL fAuthenticated; SYSTEMTIME stLastSeen; SYSTEMTIME stLastUsed; WCHAR szName[bLUETOOTH_MAX_NAME_SIZE]; } BLUETOOTH_DEVICE_INFO; τι να κανω? ατι τετιο? > struct _BLUETOOTH_DEVICE_INFO { DWORD dwSize; BLUETOOTH_ADDRESS Address; ulong ulClassofDevice; bool fConnected; bool fRemembered; bool fAuthenticated; SYSTEMTIME stLastSeen; SYSTEMTIME stLastUsed; WCHAR szName[bLUETOOTH_MAX_NAME_SIZE]; } και μετα ενα > ref _BLUETOOTH_DEVICE_INFO ? ποιο DLL hookaro?
ntaryl Δημοσ. 22 Δεκεμβρίου 2008 Δημοσ. 22 Δεκεμβρίου 2008 Λεω εγω Ισως και λεω βλακεια. Γιατι δεν κανεις build it και καλεσε το
Directx Δημοσ. 22 Δεκεμβρίου 2008 Δημοσ. 22 Δεκεμβρίου 2008 καλα φιλαρακι.. 3 ωρες εψαχνα τη msdn και δε το ειδα ποτε :/ δε μου λες τωρα, (επειδη τα'χει σε c++) πως θα κανω ενα struct απο c++ σε C#? [..] Με C# δεν ασχολούμαι οπότε .. ποιο DLL hookaro? Το SDK αναφέρει ότι πρέπει να κάνεις link την βιβλιοθήκη Bthprops.lib ενώ παλαιότερα την βιβλιοθήκη Irprops.lib . Περισσότερα δεν γνωρίζω.
afnman Δημοσ. 23 Δεκεμβρίου 2008 Δημοσ. 23 Δεκεμβρίου 2008 Απο οτι βλεπω ειναι σε unmanaged περιβαλλον. Οποτε μία λυση είναι CLR του VS Εκει μπορεις να γραψει ανετα μιχτο κωδικα .ΝΕΤ και μή σε C++ γλώσσα
Evgenios1 Δημοσ. 24 Δεκεμβρίου 2008 Μέλος Δημοσ. 24 Δεκεμβρίου 2008 Με C# δεν ασχολούμαι οπότε .. Το SDK αναφέρει ότι πρέπει να κάνεις link την βιβλιοθήκη Bthprops.lib ενώ παλαιότερα την βιβλιοθήκη Irprops.lib . Περισσότερα δεν γνωρίζω. περιεργο... εψαχνα εψαχνα , με το walker μου , ολα τα dll ,και τελικα, το ακυρο το bth(κατι).cpl -----Προστέθηκε 24/12/2008 στις 09 : 06 : 06----- Απο οτι βλεπω ειναι σε unmanaged περιβαλλον. Οποτε μία λυση είναι CLR του VSΕκει μπορεις να γραψει ανετα μιχτο κωδικα .ΝΕΤ και μή σε C++ γλώσσα CLR ? τι ειναι αυτο ? (soz ,, hobiστας ειμαι) Τι ειναι το "DWORD" ??
afnman Δημοσ. 29 Δεκεμβρίου 2008 Δημοσ. 29 Δεκεμβρίου 2008 περιεργο... εψαχνα εψαχνα , με το walker μου , ολα τα dll ,και τελικα, το ακυρο το bth(κατι).cpl -----Προστέθηκε 24/12/2008 στις 09 : 06 : 06----- CLR ? τι ειναι αυτο ? (soz ,, hobiστας ειμαι) Τι ειναι το "DWORD" ?? VS 2000+ δεν χρησιμοποιεις; Στα Projects-> Visual C++ γράφει καπου CLR Εκει μπορεις να γραψεις Managed C++/CLI ή οπως λεγεται, ειναι ενα extension της C++ που εβγαλε η Microsoft για να μπορεις να γραφεις KAI .NET εφαρμογες. Common Language RunTime (CLR) ειναι στο περιπου κατι σαν virtual machine που τρέχει το .ΝΕΤ framework για να ερμηνευει τα προγραμματα διαφορετικων γλωσσων. Τωρα εαν σε ενδιαφερει να μπεις στα βαθειά νερά του .NET μπες στο MSDN, google κτλ DWORD παραπεμπει στο Double Word....μπορεις να γραψεις μή προσημασμένους ακεραιους των 4 bytes.
Evgenios1 Δημοσ. 29 Δεκεμβρίου 2008 Μέλος Δημοσ. 29 Δεκεμβρίου 2008 DWORD παραπεμπει στο Double Word....μπορεις να γραψεις μή προσημασμένους ακεραιους των 4 bytes. Κειτα και για το IntPrt ξερω οτι ειναι μια απο τα ιδια , και για το IntPrt ξερω πος επιστρεφει το thread id κατι τετιο τεσπα) το DWORD σε τη χρησημεβει? ΥΓ(ειμαι κοματια) -----Προστέθηκε 29/12/2008 στις 10 : 09 : 02----- Κειτα . θελω να ξερω ολα τα member για να κανω μια απλη data class τοu τυπου > public class Device { public byte MacAddress=new byte[5]; public string Name=""; public DeviceType DeviceType= DeviceType.None; } public enum{None=-1,Phone=1,Pc,ect...} public class Devices { List<Device> Devices_; public Devices ( ) { Devices_=new List<Device>(); } } ετισι ωστε να μπορω να κανω XmlSerialezer read & write τη κλαση Devices (για να μη κανω καθε φορα search για να στηλω μια εικονα (πχ)) ΥΓ κανει 10~20 sec το search
afnman Δημοσ. 30 Δεκεμβρίου 2008 Δημοσ. 30 Δεκεμβρίου 2008 Προφανως θα αναφερεσαι στο DWORD dwSize το dwSize xωρις να έχω διαβάσει το API μαλλον θα αναφερεται στο μέγεθος του struct ή σε κατι τετοιο. Κοιταξε το documentation Στην C# to DWORD μπορεις να το δηλωσεις σαν Int32.
Evgenios1 Δημοσ. 7 Ιανουαρίου 2009 Μέλος Δημοσ. 7 Ιανουαρίου 2009 ΕΛΕΟΣ ΕΛΕΟΣ Δε μου λετε τη στο καλο ειναι το union ???? Πως θα κατασκευασω το παρακατω struct σε C#? > //bth api typedef struct _BLUETOOTH_ADDRESS { union { BTH_ADDR ullLong; BYTE rgBytes[6]; } ; } BLUETOOTH_ADDRESS; επεισης πως θα διλοσω το μεγεθος ενος array μεσα στο struct (πχ rgBytes) ΜΕ ATTRIBUTE
Evgenios1 Δημοσ. 9 Ιανουαρίου 2009 Μέλος Δημοσ. 9 Ιανουαρίου 2009 ffs Ειναι πολυ μπερδεμενα στα api headers της C++ Λοιπον , βρηκα ληση στα προβληματα μετατροπης C++ struct to C# struct Α) δηλοση Array > //C++ struct str_w_array { int _array[10] ; } > //C# [structLayout(LayoutKind.Sequential)] public struct str_w_array_csharp { [MarshalAs(UnmanagedType.ByValArray,ConstSize=10)] public int[] array; } union > //C++ struct str_union { union { int a; long b; } } > //C# [structLayout(LayoutKind.Explicit)] public struct str_union { [FieldOffset(0)] public int a; [FieldOffset(0)] public Int64 b; } Και τωρα εχω κολισει στο τη στο καλο ειναι το wchar_t ???(C++) και τι θελει να πει με αυτο εδς το κωδικα > typedef *void salalalala αποτι εχω καταλαβει, το salalala ειναι handler δλδ μια μεθοδο (?) πως στο καλο θα τη διλοσω στη C# ?? Εχω φρικαρει με τα define της C++
Directx Δημοσ. 11 Ιανουαρίου 2009 Δημοσ. 11 Ιανουαρίου 2009 anyone ??? Παραδοσιακά (αλλά όχι και απαραίτητα) το wchar_t στους Windows compilers δηλώνει Unicode char/string (UTF-16), σε άλλους compilers (ή με τροποποίηση των ρυθμίσεων ακόμα και των Windows compilers) μπορεί να αντιστοιχεί από 8bit (απλό ANSI-C char) ως 32bit (UTF-32). Αλλά αφού δουλεύεις με Windows πάω στοίχημα ότι πρόκειται για την πρώτη περίπτωση, δηλαδή για ένα απλό Unicode string. (http://en.wikipedia.org/wiki/Wide_character) Τώρα το typedef *void salalalala .. αυτό το typedef είναι μάλλον μια κακιά πρακτική (πάει το type checking περίπατο) διότι σε γενικές γραμμές δηλώνει στον compiler ότι το salalalala είναι ένα void* δηλαδή ένας pointer προς οποιαδήποτε μορφή δεδομένων, μπορεί να είναι από μια συλλογή bytes (ένα char*) ως μια δομή (struct*), οτιδήποτε όπως σου είπα, θα πρέπει να δεις τον κώδικα που το χρησιμοποιεί και τι μορφής δεδομένα δέχεται.
afnman Δημοσ. 13 Ιανουαρίου 2009 Δημοσ. 13 Ιανουαρίου 2009 to wchar_t δοκιμασε να το δηλωσεις σαν System.char > typedef *void salalalala αποτι εχω καταλαβει, το salalala ειναι handler δλδ μια μεθοδο (?) πως στο καλο θα τη διλοσω στη C# ?? Ισως Delegates?? Τεσπα εχεις μπει σε βαθεια νερά ...η μετατροπη απο native code σε managed ειναι πολυ δυσκολη υποθεση.... θα σου χρειαστει καλη γνωση του System.Runtime.InteropServices Namespace.... Good Luck...
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.