Due не читает COM порт
- Войдите на сайт для отправки комментариев
Пт, 16/10/2015 - 22:14
Добрый день!
Стокнулся со следующей проблемой: есть плата Adruino Due. Надо прочитать данные с COM порта.
Задача тривиальная, но плата почему-то не видит входного потока данных.
Меняю ее на Мегу - все работает. Заливаю тот же скетч и все работает
Для проверки набросал скетч, который пишет данные в файл и параллельно выводит на монитор (см. ниже):
#include <Wire.h>
#include <SD.h>
#include <stdio.h>
#include <SPI.h>
const int chipSelect = 4; // On the Ethernet Shield, CS is pin 4
int incomingByte = 0; // переменная для хранения байта данных,
//принятых по последовательному интерфейсу
File dataFile;
void setup() {
Serial.begin(9600); // открываем последовательный порт
Serial3.begin(9600); // задаем скорость передачи данных 9600 бод
Serial2.begin(9600);
Serial1.begin(9600);
Serial.print("Initializing SD card..."); // ВЫВОД ИНФОРМАЦИИ ОБ ИНИЦИАЛИЗАЦИИ КАРТЫ ПАМЯТИ
// make sure that the default chip select pin is set to
// output, even if you don't use it:
pinMode(10, OUTPUT);
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect))
{
Serial.println("Card failed, or not present"); // ВЫВОД ИНФОРМАЦИИ ОБ ИНИЦИАЛИЗАЦИИ КАРТЫ ПАМЯТИ
// don't do anything more:
return;
}
Serial.println("card initialized."); // ВЫВОД ИНФОРМАЦИИ ОБ ИНИЦИАЛИЗАЦИИ КАРТЫ ПАМЯТИ
*/
}
void loop() {
// отправляем данные только после их получения:
if (Serial3.available() > 0)
{
dataFile = SD.open("COM_3.DAT", FILE_WRITE);
incomingByte = Serial3.read();
dataFile.write(incomingByte);
Serial.print(incomingByte);
}
if (Serial2.available() > 0)
{
dataFile = SD.open("COM_2.DAT", FILE_WRITE);
incomingByte = Serial2.read();
dataFile.write(incomingByte);
Serial.print(incomingByte);
}
if (Serial1.available() > 0)
{
dataFile = SD.open("COM_1.DAT", FILE_WRITE);
incomingByte = Serial1.read();
dataFile.write(incomingByte);
Serial.print(incomingByte);
}
if (Serial.available() > 0)
{
dataFile = SD.open("COM_0.DAT", FILE_WRITE);
incomingByte = Serial.read();
dataFile.write(incomingByte);
Serial.print(incomingByte);
}
dataFile.close();
}
Проблема в коде или железо глючит?