2017-02-09 78 views
1

我正嘗試使用串行端口與工業重量網橋進行通信。我知道如何編寫代碼(c#)。問題是當我將橋連接到指示器時,顯示重量。但是,當我將網橋連接到我的PC並運行程序時,返回的所有內容都是「\ 0」(NULL)。當我將PC連接到指示器並運行程序時,我會連續顯示「\ 0」。我正在使用xk3190-a9指標。這裏是示例程序串行端口返回「 0」

namespace SerialPort 
{ 
    class Program 
    { 
     private static string dev = ""; 
     static void Main(string[] args) 
     { 
      System.IO.Ports.SerialPort mySerialPort = new System.IO.Ports.SerialPort("COM15") 
      { 
       BaudRate = 2400, 
       Parity = Parity.None, 
       StopBits = StopBits.Two, 
       DataBits = 8, 
       RtsEnable = true, 
      }; 
      mySerialPort.DataReceived += DataReceivedHandler; 
      mySerialPort.Open(); 
      Console.WriteLine("Press any key to continue..."); 
      Console.ReadKey(); 
      mySerialPort.Close(); 
     }  
     private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) 
     { 
      System.IO.Ports.SerialPort sp = (System.IO.Ports.SerialPort) sender; 
      dev += sp.ReadExisting(); 
       Console.WriteLine(dev); 
     } 
    } 
} 

我的問題是橋樑是否需要「特殊」命令發回的重量或者我可以做的就是權重的東西。來自港口的任何其他數據都將取得進展。我也嘗試了不同的端口設置所有相同的結果。

+1

你不應該在SO問這個問題,因爲大多數在這裏不知道什麼重量橋或指標。您必須從設備支持/製造商處獲得此信息(通常是某種操作手冊)。這可能是硬件問題(電纜錯誤),通信配置錯誤(例如,天平可以單獨配置以接受大範圍的波特率/奇偶等),您必須知道**當前如何配置它或重新配置它需要)或者根本沒有正確使用通信協議(命令等)。 – Sinatr

+0

隨@Sinatr評論。大多數問題都在於沒有爲任何設備實現串行協議​​。 //您可能會遇到的另一個問題是Microsoft的SerialPort實現非常麻煩,特別是DataReceived事件。 //將這兩個答案綁在一起,通用串行端口方法是「SerialPort.SendBytes」,然後是「SerialPort.ReceiveBytes」。您發送和期望接收的字節基於通信協議。 – KDecker

+0

@KDecker我已經嘗試了字節的方法,除了微軟的馬車執行什麼其他庫你會建議。 Sinatr這本手冊是中文的,翻譯後會談到與橋接器捆綁在一起的軟件,它需要Windows XP:P,它是中文的,只能稱重......我想要做的不僅僅是稱重,否則我會用指示器... –

回答

0

經過網上搜索,沒有找到適合我的案例的解決方案,我放棄了數字追逐,並諮詢了一位專業橋樑專家。如果你也拉出你的頭髮,這裏有幾件事要注意:

  1. 大多數重量橋(卡車和車輛)將發送重量作爲模擬信號。所以,即使他們有一個串口,你的電腦肯定不會「得到它」,因此返回。
  2. 要獲得任何重量,你的軟件,你將不得不通過上它具有轉換器的指示器的主板,其讀取模擬信號,並可以將其轉換爲數字信號
  3. 多達指標得到它,他們中的一些波特率非常低,速率可能會設置在一個奇怪的數字(見4),所以你可能想要從100到9600的嘗試。在我的情況下,波特率是600,我從來沒有嘗試,因此連續\ 0
  4. 知道如何配置您的指標 - 使用指標編號的簡單谷歌搜索應該會產生一個很好的英語語言手冊,它可能會讓您感到困惑,但這是您能夠更改BaudRate(以及其他設置)和避免所有的猜測。
  5. 簡單的指標返回毛重大多數時候,這是足夠了,但櫃面你需要每軸重量或者你想重上每個稱重傳感器可能需要如Avery先進的指標稱重TRONIX E1310

該票據應指導你到一個可行的解決方案,我有我的1,3 & 4.

+0

你知道,在'SerialPort'類中有一個設置忽略來自流的NULL字符。如果您獲得連續的NULL字符流,則可能需要打開此選項。數據可能在某處,而您只是沒有看到它。此外,這種聽起來像電氣工程問題。 – Snoopy

+0

@Snoopy這個加法來得太晚的人 –

+0

所有你需要注意的事情**應該已經發布在原始問題中。 – Snoopy