View Single Post
Old 03-05-2008, 11:54 PM   #18
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Bạn đặt Rthreshold bằng 1, Inputlen=0 có nghĩa là cứ nhận được 1 byte thì xảy ra ngắt, biến buffer sẽ chứa toàn bộ bộ đệm thu cổng COM rồi xóa toàn bộ bộ đệm thu đó.
Nên khi bạn gửi byte1 lên thì mscomm_omcomm xảy ra buffer(0) chứa byte1 đó. Sau đó xóa byte1 vừa nhận trong bộ đệm thu.
Bạn lại tiếp tục gửi byte2 lên, quá trình được lặp lại, buffer(0) chứa byte2 còn buffer(1) ko chứa gì hết nên bằng 0.
Mình nghĩ là như vậy.
Bạn chỉ cần sửa lại Rthreshold bằng 2 để nhận 2 byte rồi mới ngắt rồi xử lý luôn một lần. Nếu không bạn phải khai báo cái mảng buffer của bạn là Static (mình chỉ nghĩ thế thôi chứ chưa thử).
Cách làm trên là của thầy tôi dạy. Tôi nghĩ là đúng ko thể sai được. Nhưng thực tế thì tui nhận lâu lâu vẫn bị sai.
Để khắc phục, ở dưới PIC tôi gửi lặp lại khoảng 3 lần cho chắc. Xác suất gửi đúng là tăng lên rất nhiều dù bạn có gửi bao nhiêu byte đi nữa.
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn