![]() |
|
Tài trợ cho PIC Vietnam |
Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#8 |
Đệ tử 4 túi
Tham gia ngày: Aug 2008
Bài gửi: 89
: |
Rất đơn giản thôi bạn ah, trên C bạn dùng struct lưu 3 số integer 16 bit để chứa dữ liệu
Code:
typedef struct{ unsigned int16 ADC0; unsigned int16 ADC1; unsigned int16 ADC2; } USBAdc; Còn trên C# bạn làm việc ngược lại, khai báo 1 struct hoặc class tương ứng nhưng nhớ dùng thêm chỉ thị alignment từng byte 1(để đảm bảo đúng thứ tự dữ liệu): Code:
using System.Runtime.InteropServices; ... [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public class USBAdc { public UInt16 ADC0; public UInt16 ADC1; public UInt16 ADC2; .... static public USBAdc FromByteArray(byte[] byte_Array) { USBAdc ret; GCHandle handle = GCHandle.Alloc(byte_Array, GCHandleType.Pinned); ret = (USBAdc)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(USBAdc)); handle.Free(); return ret; } } Code:
USBAdc adc= USBAdc.FromByteArray(usb_array_data); ... adc.ADC0 adc.ADC1 adc.ADC2
__________________
Quang báo RG/RGB 6/8/12/16 bits màu Phone No: 0905.034.086 Email: lmquyen@gmail.com |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|