Ардуино для чтения с преобразователя RS232 в последовательный модуль TTL

Вот система, над которой я хочу работать:

  1. Устройство управления весом обнаруживает вес, который может передавать данные через последовательное соединение RS232
  2. Я использовал преобразователь RS232 в последовательный модуль TTL для подключения устройства управления весом к Arduino
  3. 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());  

, 👍1

Обсуждение

У меня такая же проблема, если у вас уже есть ответ, пожалуйста, помогите мне. Заранее спасибо, @Deisson


2 ответа


2

Вам нужно отсоединить контакты RX и TX Arduino от любого устройства, прежде чем пытаться загрузить скетч через USB, потому что последовательные данные напрямую подключаются от USB-чипа к этим контактам. Это как если бы вы пытались прошить эту штуку за своим адаптером RS232.

,

Да, если бы они пытались использовать аппаратный UART, но это не так - корневая проблема заключается в том, что они поместили периферийное устройство и свой программный UART на аппаратные контакты UART, а не на отдельные контакты, создавая *ненужный* конфликт с работой, а также с миганием. Ваше предложение загрузит код, но не заставит его работать (если они увидят вывод, он будет выводиться непосредственно из конвертера, а не через скетч)., @Chris Stratton

это сработало, по крайней мере, сейчас я получаю некоторые данные, но это не то, что я ожидал, @Radian Mass


1

Вы пытаетесь поговорить со своим периферийным устройством через второй последовательный 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