2012-09-06 17 views
6

Tôi muốn liên lạc với điện thoại qua cổng nối tiếp. Sau khi viết một số lệnh cho điện thoại, tôi đã sử dụng ser.read(ser.inWaiting()) để nhận giá trị trả lại, nhưng tôi luôn có tổng số 1020 bytes ký tự và thực tế, lợi nhuận mong muốn được cho là hơn 50KB.Cách mở rộng kích thước bộ đệm đầu vào của pyserial

Tôi đã cố gắng đặt ser.read(50000), nhưng trình thông dịch sẽ bị treo.

Làm cách nào để mở rộng bộ đệm đầu vào để nhận được tất cả các lợi tức cùng một lúc?

+0

Có thể là [Thiết lập hệ điều hành] (http://stackoverflow.com/a/10130825/673991)? –

Trả lời

1

Tôi đoán rằng bạn đang đọc 1020 byte vì đó là tất cả trong bộ đệm, đó là những gì ser.inWaiting() đang trở lại. Tùy thuộc vào tốc độ truyền 50 KB có thể mất một lúc để chuyển, hoặc điện thoại đang mong đợi một điều gì đó khác với bạn. Bắt tay?

Kiểm tra giá trị của ser.inWaiting, và sau đó nội dung của những gì bạn nhận được gợi ý.

3

Tôi đã có chính xác cùng một vấn đề, bao gồm kích thước bộ đệm 1020 byte và không tìm thấy cách thay đổi điều này. Giải pháp của tôi là triển khai một vòng lặp như:

in_buff='' 
while mbed.inWaiting(): 
    in_buff+=mbed.read(mbed.inWaiting()) #read the contents of the buffer 
    time.sleep(0.11)  #depending on your hardware, it can take time to refill the buffer 

Tôi rất vui nếu ai đó có thể đưa ra giải pháp thay đổi kích thước bộ đệm!

0

pySerial sử dụng trình điều khiển hệ điều hành gốc để nhận nối tiếp. Trong trường hợp Windows, kích thước của trình điều khiển đầu vào dựa trên trình điều khiển thiết bị.

Bạn có thể tăng kích thước trong cài đặt Trình quản lý thiết bị nếu có thể, nhưng cuối cùng bạn chỉ cần đọc dữ liệu đủ nhanh.

Các vấn đề liên quan