Это был комментарий стальных водителей, который решил эту проблему.
sudo apt-get установить libwiringpi-dev
Есть некоторые проблемы с libwiringpi-dev.
Вы не хотите вызывать wirePiSetup(); вы, вероятно, получите
Упс: невозможно определить версию платы из /proc/device-tree/system/linux,revision
или из /proc/cpuinfo
-> Нет строки "Оборудование"
-> Вам лучше всего погуглить ошибку, чтобы узнать, почему.
причина в том, что вы используете процессор, не основанный на руке, и файл, который он просматривает, не отформатирован так, как он ожидает. к счастью, мне ничего из этого не требуется, я просто хотел использовать простую библиотеку последовательного порта.
У меня также были проблемы с отправкой данных через serialPuts(), но мне не нужно выполнять рукопожатие. Я думаю.
Это небольшой проект, который считывает Arduino uno с двумя потенциометрами и кнопкой, цель состоит в том, чтобы использовать потенциометры для рисования изображений на экране или на изображении...
#include <иопоток>
#include <stdio.h>
#include <unistd.h> //чтение функции
#include <string.h>
#include <wiringSerial.h> //простая библиотека последовательного порта
использование пространства имен std;
// скомпилировано с помощью g++ -Wall -o readSerial readSerial.cpp -lwiringPi
int main(int argc, char ** argv)
{
const char *SensorPort = "/dev/ttyACM0"; // Серийный адрес устройства
int levelSensor = serialOpen(SensorPort, 9600);
//serialPuts(levelSensor, "1"); //Отправляем команду на последовательное устройство
в то время как (1){
символьный буфер[100];
ssize_t length = read (levelSensor, &buffer, sizeof(buffer));
если (длина == -1){
cerr << "Ошибка чтения из последовательного порта" << endl;
сломать;
}
иначе если (длина == 0){
cerr << "Нет данных" << endl;
сломать;
}еще{
буфер[длина] = '\0';
cout <<буфер; // Чтение серийных данных
}
}
вернуть 0;
}
данные, отправляемые через Arduino, через этот код:
/*ЭтчаСкетч
* 2 горшка, X, Y, приращение
*
* добавить кнопку для удаления этого материала
* Эта программа взаимодействует через последовательный порт с отдельной программой, которая обрабатывает полученные координаты (значения горшков).
*/
инт горшокX = A0;
инт горшок Y = A1;
интсенсорValX = 0;
инт значение датчика = 0;
интервал дел = 1; //кнопка на пин 1 для удаления нарисованного контента
целая кнопка = 0;
недействительная установка () {
Серийный.начать(9600);
pinMode(удалить, ВВОД);
}
недействительный цикл () {
// читаем значение из горшков:
if(digitalRead(del) == HIGH){
делькнопка=1;
}еще{
делькнопка=0;
}
SensorValX = AnalogRead(potX);
SensorValY = AnalogRead(potY);
Serial.print(sensorValX);
Серийный.принт(",");
Serial.print(sensorValY);
Серийный.принт(",");
Serial.println(кнопка del);
задержка(1000);
}
и здесь он работает достаточно хорошо, чтобы зайти в программу разбора/рисования