![]() |
|
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 |
|
![]() |
#1 |
Đệ tử 4 túi
Tham gia ngày: Aug 2008
Bài gửi: 89
: |
Như bạn tbk_05 đã giải quyết là cách cơ bản và dễ dàng nhất, cắt số integer 16bits chứa giá trị ADC 10bits sau đó ghép lại phía nhận.
Tuy nhiên cách này làm thủ công bằng tay nên khá mệt và dễ lộn xộn. Cách mình trình bày trên sẽ dễ dàng truyền nhận ko chỉ số integer 16 bits mà còn có thể áp dụng cho số 32 bits, các kiểu dữ liệu khác hoặc là 1 struct phức tạp. Giả sử như với khai báo trên, phía VDK bạn đọc 3 kênh ADC sau đó gởi vào USB: Code:
set_adc_channel(0); adc.ADC0=read_adc(); // 100 set_adc_channel(1); adc.ADC1=read_adc(); // 200 set_adc_channel(2); adc.ADC2=read_adc(); // 300 ... usb_put_data((char*)&adc,sizeof(USBAdc)) // Giả sử gởi array là 6 bytes Code:
USBAdc adc= USBAdc.FromByteArray(usb_byte_array); ... TextBox0.Text = adc.ADC0; // Giá trị sẽ là 100 TextBox1.Text = adc.ADC1; // Giá trị sẽ là 200 TextBox2.Text = adc.ADC2; // Giá trị sẽ là 300 ... Bạn có thể mở rộng hơn 6 bytes hoặc thêm bớt các thành phần, biến, cấu trúc dữ liệu khác cho khai báo USBAdc, miễn sao đảm bảo đúng thứ tự và cấu trúc tương ứng 1 gói giữa C/VDK và C#/PC là ok. Regards
__________________
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 | |
|
|