2010-11-05 84 views
1

我正在C#中開發一個需要通過串行通信與矩陣開關進行通信的應用程序。串行通訊

string value = "abc"; 
serialPort1.Open(); 
serialPort1.WriteTimeout = 500; 
serialPort1.WriteLine(value); 
serialPort1.Close(); 

矩陣框的狀態應該改變WriteLine(value)

這是我的問題。當我發送字符串值時,矩陣框的狀態不會改變。但是,當我通過Putty發送相同的字符串(通過串行通信)時,矩陣框會正確響應。所有的串行屬性都是相同的(BaudRate,DataBits,PortName等)。

我應該嘗試哪些可能的解決方案?

+1

供參考:WriteLine()方法確實附加回車(十六進制0x0D​​)到線上發送的數據。我們使用SerialPort.Write並在發送之前轉換爲十六進制值,但如果您的命令/答覆保證爲ascci,unicode或其他編碼,則這可能會更復雜。 – gooch 2010-11-05 23:52:56

回答

1

我會檢查串口上的編碼屬性。它看起來像默認是ASCII。也許你的設備期待Unicode?

3

你可以發佈你的代碼在哪裏設置SerialPort?您必須確保所有屬性都是您的矩陣開關所期望的。例如:

// Setup port 
SerialPort serialPort = new SerialPort(); 
serialPort.PortName = portName; //eg. COM1 
serialPort.BaudRate = 9600; 
serialPort.StopBits = StopBits.One; 
serialPort.Parity = Parity.None; 
serialPort.DataBits = 8; 
serialPort.Handshake = Handshake.None; 
serialPort.NewLine = "\r\n"; 
serialPort.ReadTimeout = 2000; 
serialPort.WriteTimeout = 1000; 

後您已在端口上稱爲Open()您可以檢查與serialPort.IsOpen財產的打開或關閉狀態。