Đó là nhận xét của trình điều khiển thép, đã giải quyết nó.
Sudo apt-get cài đặt libwiringpi-dev
Có một số vấn đề với libwiringpi-dev.
Bạn không muốn gọi wirePiSetup(); bạn có thể sẽ nhận được
Rất tiếc: Không thể xác định bản sửa đổi bảng từ /proc/device-tree/system/linux,revision
hoặc từ /proc/cpuinfo
-> Không có dòng "Phần cứng"
-> Tốt nhất bạn nên google lỗi để tìm hiểu tại sao.
lý do là bạn đang sử dụng CPU không dựa trên cánh tay và tệp mà nó đang xem không được định dạng theo cách nó mong đợi. may mắn thay, tôi không yêu cầu bất kỳ thứ gì trong số đó, tôi chỉ muốn sử dụng thư viện cổng nối tiếp đơn giản.
Tôi cũng gặp sự cố khi gửi dữ liệu qua serialPuts(), nhưng tôi không cần thực hiện thao tác bắt tay.. Tôi đoán vậy.
Đây là một dự án nhỏ đọc một Arduino uno với 2 chiết áp và một nút bấm, mục đích là dùng các cái nồi để vẽ hình lên màn hình, hoặc trong một hình ảnh...
#include <iostream>
#include <stdio.h>
#include <unistd.h> //đọc hàm
#include <string.h>
#include <wiringSerial.h> //thư viện cổng nối tiếp đơn giản
sử dụng không gian tên std;
// được biên dịch với g++ -Wall -o readSerial readSerial.cpp -lwiringPi
int chính(int argc, char ** argv)
{
const char *SensorPort = "/dev/ttyACM0"; // Địa chỉ thiết bị nối tiếp
int levelSensor = serialOpen(SensorPort, 9600);
//serialPuts(levelSensor, "1"); // Gửi lệnh đến thiết bị nối tiếp
trong khi (1){
bộ đệm char [100];
ssize_t length = read(levelSensor, &buffer, sizeof(buffer));
nếu (độ dài == -1){
cerr << "Lỗi đọc từ cổng nối tiếp" << endl;
nghỉ;
}
khác nếu (độ dài == 0){
cerr << "Không còn dữ liệu" << endl;
nghỉ;
}khác{
bộ đệm [độ dài] = '\ 0';
cout << đệm; // Đọc dữ liệu nối tiếp
}
}
trả về 0;
}
dữ liệu được gửi qua Arduino thông qua mã này:
/*EtchaPhác thảo
* 2 chậu, X,Y, gia số
*
* thêm nút để xóa nội dung này
* Chương trình này giao tiếp trên cổng nối tiếp, với một chương trình riêng xử lý bản vẽ tọa độ nhận được (giá trị nồi).
*/
int potX = A0;
int potY = A1;
cảm biến intValX = 0;
cảm biến intValY = 0;
int del = 1; // một nút trên chân 1 để xóa nội dung đã vẽ
int delbutton = 0;
thiết lập vô hiệu () {
Nối tiếp.bắt đầu (9600);
pinMode(del, INPUT);
}
vòng lặp vô hiệu () {
// đọc giá trị từ pot:
if(digitalRead(del) == CAO ){
delbutton=1;
}khác{
delbutton=0;
}
cảm biếnValX = analogRead(potX);
sensorValY = analogRead(potY);
Serial.print(sensorValX);
Serial.print(",");
Serial.print(sensorValY);
Serial.print(",");
Serial.println(delbutton);
độ trễ (1000);
}
và ở đây nó hoạt động đủ tốt để đi vào chương trình phân tích/vẽ