Ардуино для чтения с преобразователя RS232 в последовательный модуль TTL
Вот система, над которой я хочу работать:
- Устройство управления весом обнаруживает вес, который может передавать данные через последовательное соединение RS232
- Я использовал преобразователь RS232 в последовательный модуль TTL для подключения устройства управления весом к Arduino
- TTL-соединения были выполнены с соответствующими контактами платы Arduino UNO (GND-GND, VCC-5V, RX-0, TX-1).
Последовательная печать от последовательного соединения должна производить строку длиной 17 символов : ST,GS 1.58,kg
Почему я иногда получаю странные результаты?
// Read Serial (RS232) data from Weight Controller Device via RS232 to TTL Converter Module
// Ignore the include statement, the editor does not allow pasting certain characters
include SoftwareSerial.h
int RX_PIN = 2;
int TX_PIN = 3;
int BAUD_IDE = 9600;
int BAUD_WEIGHT_SENSOR = 9600;
// serial port from weight controller
SoftwareSerial mySerial = SoftwareSerial(RX_PIN, TX_PIN);
void setup() {
mySerial.begin(BAUD_WEIGHT_SENSOR);
Serial.begin(BAUD_IDE);
}
void loop() {
while (mySerial.available()) {
int inChar = mySerial.read();
if (inChar != '\n') {
serialData += (char)inChar;
}
else {
int dataSize = serialData.length();
Serial.print(serialData);
Serial.print(" length: ");
Serial.print(dataSize);
Serial.print("\n");
delay(3000);
serialData = "";
}
}
serialData = "";
}
// this one works perfectly but i want to store as string to
process
// information and use for other functions
/*void loop() {
if (mySerial.available()){
Serial.print((char)mySerial.read());
@Radian Mass, 👍1
Обсуждение2 ответа
Вам нужно отсоединить контакты RX и TX Arduino от любого устройства, прежде чем пытаться загрузить скетч через USB, потому что последовательные данные напрямую подключаются от USB-чипа к этим контактам. Это как если бы вы пытались прошить эту штуку за своим адаптером RS232.
Да, если бы они пытались использовать аппаратный UART, но это не так - корневая проблема заключается в том, что они поместили периферийное устройство и свой программный UART на аппаратные контакты UART, а не на отдельные контакты, создавая *ненужный* конфликт с работой, а также с миганием. Ваше предложение загрузит код, но не заставит его работать (если они увидят вывод, он будет выводиться непосредственно из конвертера, а не через скетч)., @Chris Stratton
это сработало, по крайней мере, сейчас я получаю некоторые данные, но это не то, что я ожидал, @Radian Mass
Вы пытаетесь поговорить со своим периферийным устройством через второй последовательный UART, реализованный в программном обеспечении на произвольных выводах, что должно оставить аппаратный UART свободным для загрузки и отладки или другой связи во время выполнения между Arduino и ПК.
Однако "произвольные контакты", которые вы выбираете для подключения периферийного устройства, являются теми же контактами, что и аппаратный UART.
Например, переместите периферийное устройство на два других контакта
int RX_PIN = 2;
int TX_PIN = 3;
и переместите соединения соответствующим образом
Также подумайте, действительно ли вам нужен Serial.println ()
, который добавит разрыв строки после каждого символа в выводе, а также напечатает полученные символы в виде их числовых кодов ASCII, по одному на строку, вместо того, чтобы печатать сами символы. Вероятно, вы хотите Serial.write()
.
Я сделал, как ты сказал. Однако результат оказался не таким, как хотелось бы.пожалуйста, смотрите мой последний комментарий, @Radian Mass
Как я уже сказал, serial.println () - это не то, что вам нужно. Однако, похоже, проблема не только в разрывах строк. Поскольку Serial.read() возвращает целое число, вы печатаете ascii-коды ваших данных, а не сами данные. Видимо, чтобы исправить это, вы хотите Serial.write(), @Chris Stratton
исправлено, все еще есть незначительные ошибки, пожалуйста, проверьте мой пересмотренный пост. связана ли текущая ошибка со скоростью передачи данных в бодах?, @Radian Mass
- Использование Arduino для чтения и записи данных на устройство RS232
- Искаженный серийный номер устройства GPS
- AT-команда не отвечает на последовательный монитор
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- Как читать и записывать на устройство rs232 с/на Arduino
- Отключение Arduino при загрузке
- Как связаться с ESP8266 ESP01, отправив данные через программный сериал на Arduino Uno?
- myserial.available() возвращает нулевой байт
У меня такая же проблема, если у вас уже есть ответ, пожалуйста, помогите мне. Заранее спасибо, @Deisson