![]() |
|
Tài trợ cho PIC Vietnam |
Giao tiếp cổng COM và LPT RS232, RS485 và LPT là những giao tiếp cơ bản và kinh điển khi mới học về vi điều khiển... |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 2 túi
Tham gia ngày: Mar 2007
Bài gửi: 43
: |
ôi trời bạn nói tôi không hiểu ji2 hết
Muc tiêu của tôi là CRC +sửa sai bạn lại toàn đề cập vấn đề ji đó(toàn hệ thống ) hệ thống của tôi hoạc động khá ổn định kể cả trong môi truơng nhiểu khá lớn .Nhưng hiện tại tôi vẩn chưa dùng CRC + sủa sai mà vẩn hoạt động khá OK chạy khoản 2 ngày lể liên tuc mới phát hiện ra lổi nhưng (các lổi data do nhiễu môi trường tạm thời tôi truyền lại)cái tôi muốn nhờ các bạn chỉ giúp chổ sửa sai data do nhiểu môi trường=>> nhưng một lổi thôi củng đủ gây thiệt hại khá lớn nếu tôi bất chấp lổi đó mà process data. giả sử tôi cần truyền 8 byte {255,255,255,255,255,255,255,255} nhưng do nhiểu loti nhận đuợc là {255,255,255,255,255,255,254,255}] làm sao tôi có thể sữa sai cái byte thứ 6 đó mà không cần truyền lại sau khi đã phát hiện ra lổi(vì tôi đã có crc trước đó ) tôi không cần biết nó có làm chậm MCU hay không hay chiếm băng thông đường truyền nhiều hơn khi frame truyền tăng kích thước ........hay ji2 ji di nửa các thứ đó tôi có thể giải quyết được cái tôi quan tâm số một là data va data nhận được từ reciever phải >=99,99% giồng với từ sender các bạn có code hay dãy thuật gì tư vấn giúp tôi.! thay đổi nội dung bởi: binhdt04, 16-02-2009 lúc 01:26 PM. |
![]() |
![]() |
![]() |
#2 | |
Trưởng lão PIC bang
|
Trích:
Giải thuật đơn giản nhất cho việc sửa sai là tự động lặp lại thông điệp: - Đầu thu tính toán CRC của thông điệp và so sánh với CRC đã nhận được - Nếu kết quả không khớp thì đầu thu sẽ không xác nhận dữ liệu hợp lệ - Đầu phát sẽ tự động truyền lại thông điệp đó nếu không nhận được xác nhận dữ liệu hợp lệ Vì bạn cho biết hệ thống có xác suất lỗi khá thấp, tôi cho rằng giải thuật trên khá phù hợp với trường hợp của bạn. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#3 |
Đệ tử 4 túi
|
Mình cũng đang nghiên cứu truyền số liệu trong môi trường rất nhiễu và đường truyền dài. Nếu như phát hiện lỗi mà truyền lại cả gói thì những ứng dụng cần realtime sẽ không thực sự hiệu quả. Mình có tìm hiểu một số cách, có cách rất hay đó là truyền mỗi gói 9 byte, gồm 8 byte dữ liệu (mỗi byte dữ liệu có bit thứ 9 kiểm tra chẵn lẽ), và thêm một byte thứ 9 để kiểm tra các bit hàng dọc trong 8 byte đó (cứ tưởng tượng sắp xếp các bit trong gói đó như một ma trận 9x9). Như vậy có thể sửa lỗi cho gói dữ liệu rất tốt và không phải gửi lại toàn bộ nếu như mất một số thông tin trong gói đó.
Theo mình nghĩ cách đó code cũng không khó và hiệu quả đúng không ?! thay đổi nội dung bởi: thientaisodo, 18-02-2009 lúc 10:06 AM. |
![]() |
![]() |
![]() |
|
|