2012-07-20 66 views
3

我試圖將一些數據發送到通過串口工作的LED顯示屏。此代碼完成了VB6的工作,但我需要將其轉換爲C#。可悲的是它不起作用。有任何想法嗎?從VB6轉換爲C#通過MSCOMM轉換爲串口

VB6(例)

MSComm1.CommPort = 1 

MSComm1.Settings = "9600,N,8,1" 

MSComm1.PortOpen = True 

MSComm1.Output = Chr(170) 

MSComm1.Output = Chr(2) 

C#(例)

var serialPort1 = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); 

serialPort1.Open(); 

serialPort1.Write(((char)170).ToString()); 

serialPort1.Write(((char)2).ToString()); 

serialPort1.Close(); 

我認爲這個問題是關於serialPort1.Write功能,但我無法弄清楚。你能幫忙嗎?

+1

您是否收到錯誤或者液晶顯示屏沒有響應? – RQDQ 2012-07-20 12:23:19

+0

LED沒有反應可悲 – speedyyavuz 2012-07-20 12:25:11

+0

唯一想到的就是搞亂Handshake屬性:http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.handshake.aspx – RQDQ 2012-07-20 12:28:59

回答

1

也想出瞭如何使用serialPort類來做到這一點。重要的協議是使用設計器添加serialPort1定義而不是手動定義「var serialPort1 = new SerialPort(」COM1「,9600,Parity.None,8,StopBits.One);」。我的問題是因爲我猜想缺少定義而發生的。下面是示例:

Byte[] _bytesToSend = new Byte[7]; 
_bytesToSend[0] = 170; 
_bytesToSend[1] = 2; 
serialPort1.Open(); 
serialPort1.Write(_bytesToSend, 0, _bytesToSend.Length); 
serialPort1.Close(); 
2

我剛剛解決了我在C#中使用MSComm類的問題。 Ty大家的幫助:)

+0

很遺憾,您仍然依賴於COM組件...看起來像獲得更新的.NET版本的SerialPort代碼應該是可行的。 – RQDQ 2012-07-23 19:01:31