我正嘗試使用串行端口與工業重量網橋進行通信。我知道如何編寫代碼(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);
}
}
}
我的問題是橋樑是否需要「特殊」命令發回的重量或者我可以做的就是權重的東西。來自港口的任何其他數據都將取得進展。我也嘗試了不同的端口設置所有相同的結果。
你不應該在SO問這個問題,因爲大多數在這裏不知道什麼重量橋或指標。您必須從設備支持/製造商處獲得此信息(通常是某種操作手冊)。這可能是硬件問題(電纜錯誤),通信配置錯誤(例如,天平可以單獨配置以接受大範圍的波特率/奇偶等),您必須知道**當前如何配置它或重新配置它需要)或者根本沒有正確使用通信協議(命令等)。 – Sinatr
隨@Sinatr評論。大多數問題都在於沒有爲任何設備實現串行協議。 //您可能會遇到的另一個問題是Microsoft的SerialPort實現非常麻煩,特別是DataReceived事件。 //將這兩個答案綁在一起,通用串行端口方法是「SerialPort.SendBytes」,然後是「SerialPort.ReceiveBytes」。您發送和期望接收的字節基於通信協議。 – KDecker
@KDecker我已經嘗試了字節的方法,除了微軟的馬車執行什麼其他庫你會建議。 Sinatr這本手冊是中文的,翻譯後會談到與橋接器捆綁在一起的軟件,它需要Windows XP:P,它是中文的,只能稱重......我想要做的不僅僅是稱重,否則我會用指示器... –