簡體   English   中英

軟件與 Arduino 的 RS232 設備的串行通信

[英]SoftwareSerial communication to RS232 device with Arduino

問題和設置

我正在嘗試讓我的 Arduino Pro Mini(帶 ATmega328)通過 RS232 與串行設備通信。 具體來說,我希望 arduino 最終與 BKPrecision 1785B 電源通信並控制其電壓、電流等。

一個警告。 我正在使用我的計算機(通過 arduino 上唯一的 RS232 連接)來編程和調試代碼,而我的 arduino 只有一個串行端口。 因此,我決定使用 SoftwareSerial 庫來設置一個額外的軟件 RS232 端口(在數字引腳上)以與電源進行通信。

迄今為止我所做的

我嘗試執行上述操作,但 BK1785 沒有顯示任何接收或理解命令的跡象。 然后我將第二台計算機插入 SoftwareSerial 端口(而不是電源)以監視通信並確保正確發送命令。 第二台計算機(使用 Docklight 作為串行監視器)注意到正在接收信息,但它與發送的內容不匹配(見下文)。 我只能假設我還沒有設置 adruino 來正確通信。 似乎很可能必須是 1) 軟件串行設置或 2) 我錯誤地廣播數據。

附加信息

電源需要一個 26 字節的數據包。
Docklight 設置為 9600, 8N1 (edit#1)

Arduino代碼

這是我在 Arduino 上運行的簡化代碼。

#include <SoftwareSerial.h>
SoftwareSerial port1(4,3);
byte output[26]={170, 0, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 203}; 

void setup()
{
  Serial.begin(9600);
  port1.begin(9600);
  digitalWrite(6,LOW); //Set ground pin on SoftwareSerial to LOW
  delay(5);
}

void loop()
{
   for (int i=0;i<26;i++){
     port1.write(output[i]);
   }
   delay(10000);
}

輸出和輸入

我正在通過 SoftwareSerial 端口從 arduino(見上面的代碼)廣播以下 26 個字節(以十進制格式顯示):170, 0, 32, 1, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 203

我的第二台計算機(連接到 arduino 的 SoftwareSerial 端口)正在接收以下 25(不是 26)字節(也以十進制格式顯示):149 191 253 255 255 255 255 255 255 255 255 255 2555 25 55 5 255 255 255 255 255 255 105

最后的想法

我試過在 arduino 中同時使用 write 和 print 命令,但似乎都不起作用。 老實說,我不知道使用 for 循環發送 26 個字節是否是發送此類信息的正確方法。 有沒有更好的方法來發送字節數據包? 我在互聯網上閑逛,但我不介意類似的例子。 我將不勝感激對社區的任何反饋。 謝謝!

編輯#2

我用以下行替換了代碼中的 for 循環:

port1.write(output,26);

並收到一組相同的 25 個字節: 149 191 253 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 2555 255 255 255

編輯#3

我正在嘗試發布我的示波器軌跡的圖像,但我還沒有 10 個聲望點。
沒有數據發送時,串行通信接收線是否應該為高電平?

考慮到您在想要 0 的地方大多是 1,也許您弄錯了高低電平。 如果硬件連接看起來正確,請嘗試SoftwareSerial()構造函數中未記錄的“inverse_logic”標志。

請參閱https://github.com/arduino/Arduino/blob/master/libraries/SoftwareSerial/SoftwareSerial.cpp ,第 335 行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM