nếu để PC nhận được một mảng mà bạn dùng Com.ReadExisting() là không được, vì nó cứ thấy buffer của COM có gì là nó cứ đọc, chứ nó không biết dữ liệu bạn muốn điều khiển là ở dạng mảng.
trước hết bạn phải biết điều khiển cổng COM trong serial port của windows form. trước bạn phải định sẵn mảng bạn gửi từ PIC là bao nhiêu byte. UART mỗi lần truyền data của bạn là 8 bit cộng thêm bit start và bit stop là tổng cộng 10 bit truyền đi một lần. nếu mà bạn thêm bit parity nữa thì data là 9 bit, do đó bạn sẽ thu sai. cho nên dữ liệu của bạn phải đưa về 8 bit hết và không có parity, dù sao đường truyền ngắn tốc độ 9600 thì khó sai.
sang bên PC nó tự động tách bit start và bit stop để thu phần data là 1 byte 8 bit.
Vì thế trong serial port bạn coi thuộc tính Receive Byte Theasold mà là 1 thì có nghĩa rằng cứ 1 byte là nó ngắt lấy dữ liệu, như vậy muốn dùng mảng là không thể nào làm được trong khi bạn muốn gửi 56,57,58,59,...
giải pháp như sau :
*lưu ý khi đã làm việc với mảng thì dữ liệu bạn phải chuyển về kiểu byte hết.
_bạn phải định sẵn số byte bạn gửi từ PIC lên PC là bao nhiêu, giả sử tôi muốn gửi là 9 byte, thì sửa Receive Byte Theasold = 9. tự động COM sẽ chờ cho đến khi nào nhận đủ 9 byte thì mới nhảy vào ngắt.
_ khi nhảy vào ngắt bạn phải khai báo một mảng có kích thước là 9, sau đó bạn dùng cấu trúc đọc mảng từ COM như sau :
byte[] bufer = new byte[9];
Com.Read(bufer,0,9);
sau lệnh này bạn đã lưu được các giá trị của bạn vào trong mảng bufer, và bạn tiến hành xử lý cái mảng này. Vậy nhé, hehe!