2008-11-06 37 views
14

Vì vậy, tôi đã cố gắng tìm hiểu về công cụ tăng cường :: asio để giao tiếp với thiết bị nối tiếp sử dụng RS232. Tài liệu là thưa thớt và các ví dụ không tồn tại. Không thể tìm ra chính xác cách giao tiếp với thiết bị. Thiết bị không thể gửi dữ liệu vì vậy tất cả những gì tôi cần làm là viết, nhưng các dự án khác yêu cầu liên lạc qua lại thực sự để giúp với điều đó sẽ được đánh giá cao. Mã gì tôi có cho đến nay sau.Tăng tốc Asio serial_port - cần trợ giúp với io

#include <boost/asio/serial_port.hpp> 
using namespace::boost::asio; 

int main() 
{ 
    io_service io; 
    serial_port port(io, "COM3"); 
    port.set_option(serial_port_base::baud_rate(19200)); 

    unsigned char commands[4] = { 1, 128, 240, 0 }; 

    // write the commands to the device 

    return 0; 
} 

Tóm lại: cần trợ giúp về phần io của serial_port.

Trả lời

16

Ngoài tốc độ truyền, bạn cũng có thể cần phải đặt các tùy chọn khác như: character_size, flow_control, chẵn lẻ và stop_bits. Để ghi dữ liệu của bạn vào cổng nối tiếp, bạn có thể làm như sau:

boost::asio::write(port, boost::asio::buffer(commands, 4)); 

Các thư viện chấp nhận các loại đệm là rất linh hoạt và bạn có thể muốn đọc thêm về chủ đề đó ở đây: Buffers.

+0

Cảm ơn, phần lớn bị choáng ngợp với số lượng tùy chọn và cần một nơi nào đó để bắt đầu. Tôi may mắn vì giá trị mặc định cho tất cả mọi thứ ngoại trừ tốc độ truyền là những gì hội đồng quản trị sử dụng. –

15

Nhờ sự trợ giúp từ nơi này và những nơi khác mà tôi đã làm việc đó. Đã viết một chương trình nhỏ có thể giúp một số người tìm ra công cụ tăng cường cổng nối tiếp.

boostserialportdemo.cpp

+1

phiên bản Linux của bản demo của bạn nên sử dụng/dev/ttyS2. Các thiết bị Linux sử dụng số 0 theo số –

+0

Tôi nhận được 404 trên trang đó. Bạn có nhớ tải nó lên một nơi khác không? Cảm ơn. –

+2

@TomA Link đang hoạt động, phải ngừng hoạt động tạm thời. –

0

Nếu bạn đang tự hỏi tại sao ví dụ mình đưa ra một lỗi biên dịch, thay đổi CSIZE để C_SIZE trên cả hai dòng. Đây có lẽ là chương trình ví dụ tốt duy nhất trên web.
Thanks.

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