Непонятная запись через com порт
- Войдите на сайт для отправки комментариев
Втр, 21/07/2020 - 10:53
Здравствуйте, есть Ардуино, к ней подключена SD карта. Задача такова: записать данные, пришедшие в com порт на SD карту. Карта на 16гб. Для этого использую такой скетч на arduino:
#include <SPI.h>
#include <SD.h>
File dataFile;
void setup()
{
Serial.begin(9600);
if (!SD.begin(10))
{
Serial.println("Card failed, or not present");
return;
}
dataFile = SD.open("commands.txt", FILE_WRITE);
}
void loop()
{
while (Serial.available() > 0)
{
char inData = Serial.read();
dataFile.println(inData);
if(inData == '*')
{
tone(4, 1500, 300);
dataFile.close();
}
}
}
и такой код на C#
SerialPort SerialPort = new SerialPort("COM3", 9600);
SerialPort.Open();
Thread.Sleep(500);
SerialPort.DiscardInBuffer();
Thread.Sleep(500);
for (int i = 0; i < 4; i++)
{
SerialPort.Write("2");
Thread.Sleep(250);
}
SerialPort.WriteLine("*");
Thread.Sleep(500);
SerialPort.Close();
Проблема такова:
отправляю 4 цифры "2", из них записывается только 2. Переподключаю ардуино, отправляю 4 цифры "2" и записываются все. При этом, звездочка "*" записывается без каких-либо нареканий. При этом уменьшаю задержку в цикле. Может ли быть причина в нехватке скорости порта?
Как это решить, какова причина?
Забыл сказать, использую ардуино nano, может ли быть ограничение в ней?
Проблему решил. Все не работало из-за перезагрузки ардуино после подключения com порта -
Добавил после открытия
и все заработало. Тема закрыта.