PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp USB, CAN, I2C, SPI, USART...

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 15-12-2006, 10:21 AM   #1
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
Trích:
Em thử hạ thời gian xuống, cỡ trên 10ms thì ổn định. Còn nếu <10ms thì lỗi độ dài dữ liệu nhân được < độ dài được chỉ định.
Chắc là dưới 10 ms thì không đủ thời gian cho nó truyền. Mà Hòa thử truyền nhận bao nhiêu byte. 64 byte hả.

Nhưng mà mấy byte cũng được, quan trọng là dựa vào số byte truyền và thời gian truyền nhận, mình có thể cân đối thời gian delay một cách hợp lí để tăng tốc độ truyền nhận lên.

Trích:
Hạ thời gian xuống không có tác dụng, thế mới đểu chứ
Có chứ nhỉ. mình nghĩ thế, trong trường hợp truyền nhận liên tục. Chứ mình giảm thời gian delay từ 1s xuống còn cỡ 10 ms, nhưng mà sau mỗi 2s mình mới truyền một lần, thì không có tác dụng là đúng rồi.

Trích:
tôi trích đến đây vì thấy hàm WaitForSingleObject(...).

Tham khảo link sau để thấy nó làm gì
http://msdn.microsoft.com/library/de...ngleobject.asp
như vậy ta có thể thử với biến dwMilliseconds,
Các bạn tiếp tục xem thế nào.
Em chưa hiểu ý của anh lắm, vì biến dwMilliseconds cũng chính là cái giá trị delay mà tụi em đang thử.
__________________

ntc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-12-2006, 09:59 AM   #2
hungbkhn
Trưởng lão PIC bang
 
Tham gia ngày: Jun 2006
Bài gửi: 39
:
sau khi dọc bằng lệnh
// attempt an asynchronous read operation
bResult = ReadFile(handle,pData,dwLen,&nBytesRead,&gOverlapp ed);

người ta kiểm tra kết quả trả về
if(!bResult)
{
KL1
}
else
{
KL2
}
Mục đích của KL1 là nếu đọc chưa được thì đợi, đọc và cập nhật lại bResult.
Do đó sủ dụng lệnh
WaitForSingleObject(gOverlapped.hEvent, dwMilliseconds)
Như vậy tốc độ < 1Khz.
Nhưng ngay cả khi minh lấy dwMilliseconds=10, truyền 10Byte vẫn lỗi.
Bây giờ ý mình là ko đợi nữa,
if(!bResult)
{
CancelIo(handle);
break;
}
else
{
KL2
}
ResetEvent(gOverlapped.hEvent);
CloseHandle(gOverlapped.hEvent);

Có ok không nhỉ ?
hungbkhn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 08:32 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam