![]() |
Tách dữ liệu nhận được từ PIC877A lên PC
Các bạn giúp mình với
Mình dùng PIC877A, cứ sau 1 giây thì gửi 1 mảng gồm 11 bytes lên máy tính bằng lệnh sau: Code CCS: Code:
//----------------------------------------------------------------------- Code Visual Basic: Code:
'------------------------------------------------------------------------ Làm thế nào để tách các byte trong nhóm 11 bytes? Giữa các nhóm byte với nhau? Mình đã thử dùng một biến count_byte để đếm số bytes nhận được, nhưng chỉ đúng cho nhóm 11 bytes đầu tiên, còn các nhóm bytes sau thì không đúng. Các bạn biết nhiều về Visual Basic giúp mình với Cảm ơn nhiều |
Trích:
Bạn muốn gởi chính xác 11 byte lên máy tính và tách nó ra dễ dàng thì bạn nên tạo một frame, bao gồm 1 byte mở đầu hay 1 byte kết thúc hoặc có thể có 1 byte mở đầu + 1 byte kết thúc ..v.v |
phạm minh tuấn nói rất đúng bạn nên đóng gói thành 1 farme có byte dầu là byte start,byte 2 là byte chỉ số byte data ,và byte cuoi là byte stop
giao diện vb nhận data bạn có thể nhận bằng phương pháp thăm dò hoặc phương pháp ngắt nếu bạn sử dụng ngắt bạn đặt MSComm1.Rthreshold = số byte nhận ở bài của bạn ta đặt 11 khi đó cứ khi bộ nhớ đệm nhạn được 11 byte thì sẽ nhảy đến sự kiện ngắt on com Private Sub MSComm1_OnComm() dim a[11] dim i If MSComm1.CommEvent = comEvReceive Then a[i]= MSComm1.Input i++ end sub khi đó bạn sẽ được 1 mảng dữ liệu nhận về hoặc bạn có thể sử dụng thăm dò sem bộ nhớ đệm khi nòa nhận đủ 11 byte thì đọc và xóa bộ đệm để nhận gói 11 byte tiếp theo If MSComm1.InBufferCount >10 Then a[i] = MSComm1.Input em nối có chỗ nào không đúng mong các bác chỉ giáo!!!! thankS! còn bạn hãy thử làm xem nhé |
Chưa hiểu lắm
Trích:
|START|Số byte dữ liệu|...Data...|STOP| Như vậy thì giá trị byte START, STOP = ??? Có phải giá trị này tự mình quy ước không? Và có cần chú ý gì khi truyền kiểu này không, bạn dung_h ??????? |
đúng vậy
nếu bạn o biết trước số byte cần truyền thì cần có 1 byte2 báo số byte truyền cho bên nhận biết để xác định gói nhận được còn nếu bạn đã biết trước hay định bao nhiêu byte thì chỉ cần |start|...data...|stop| byte start,stop là do bạn qui định vd là ký tự nào đó |
Thankyou!...........
Để mình thử xem sao! |
Múi giờ GMT. Hiện tại là 02:37 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam