cuốn sách gpt4 ai đã làm

Giao tiếp C++ với arduino

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 13:50:42 36 4
mua khóa gpt4 Nike

Làm việc về giao tiếp giữa arduino và PC (Win 7) bằng C++. Không có vấn đề gì khi sử dụng WriteFile và ReadFile để tạo thông tin liên lạc hoặc chỉ đơn giản là gửi hoặc nhận dữ liệu. Nhưng tôi gặp phải một vấn đề khi muốn "điều phối" giao tiếp theo một cách nào đó. Mục tiêu là lặp lại (đơn giản):

cho (int i=0; i < 310; i++)
{
com->send(micro[i]);
}

Chương trình gọi sẽ gửi dữ liệu đến arduino và bây giờ nó chỉ nhận dữ liệu được trả về.

gửi int (nhập chuỗi)
{
DWORD viết, đọc;
bộ đệm char[7] = {' ',' ',' ',' ',' ',' ',' '};
input.append("$");


if(!WriteFile(this->comMotor, input.c_str(), input.size(), &writing, NULL))
qDebug() << "WriteFile không thành công"

if(được viết != input.c_str())
qDebug() << "vấn đề ghi";


do
{
if(!ReadFile(this->comMotor, buffer, sizeof(buffer), &read, NULL))
qDebug() << "ReadFile không thành công";
nếu (đọc)
qDebug() << "bộ đệm: " << bộ đệm;
}while(!read);

Tôi mong đợi nó sẽ đầu vào gửi tới arduino và sau đó nhận như thế nào đầu vào Một chuỗi như vậy không trả về $. Nhưng nó không hoạt động.. đôi khi nó báo "Không" hoặc thực sự bị trì hoãn, tôi không mong đợi sẽ sử dụng tính năng chờ phản hồi tích cực. Tôi nghĩ chuỗi tiếp theo được gửi sẽ chờ phản hồi, nhưng dường như không có.

Để hoàn thành, đây là mã trong arduino:

vòng lặp trống() 
{
if (serial.available())
{
char c = Serial.read();
nếu (c == '$')
{
if (readString.length() >0)
{
Serial.println(readString); // in chuỗi ra cổng nối tiếp
int n = readString.toInt(); //chuyển readString thành số
}

readString=""; //xóa biến cho đầu vào mới
}
khác
{
readString += c; // tạo chuỗi readString
}
}
}

Bạn có đề xuất nào về cách khắc phục sự cố này hoặc biết tôi đang làm gì sai không? Cảm ơn bạn rất nhiều.

Chỉnh sửa: chỉnh sửa mã

câu trả lời hay nhất

Đã giải quyết - Ulrich nói đúng, nhưng tiếc là tôi chỉ chỉnh sửa một chức năng. Cái xấu của tôi. Vì vậy, vấn đề thực sự nằm ở sizeof(input.c_str()), sau khi thay đổi nó thành input.size() ở mọi nơi nó hoạt động.

Về giao tiếp C++ với arduino, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/23546329/

36 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress