Непонятная запись через 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 порта -
Добавил после открытия
и все заработало. Тема закрыта.