2012-07-27 67 views
2

在C#在.NET 4.0中寫入串行端口的單字節導致C#串口寫字節

InvalidOperationException異常是未處理的用戶代碼

每次一個字節被髮送到串行端口。

如何向串口寫入單個字節?

//Serial Init 
    //Full fledged constuctor 
    public NetCommManager(String portName, TransmissionType trans, String baud, String parity, String stopBits, String dataBits) 
    { 
     nc_baudRate = baud; 
     nc_parity = parity; 
     nc_stopBits = stopBits; 
     nc_dataBits = dataBits; 
     nc_portName = portName; 
     nc_transType = trans; 

     //now add an event handler 
     comPort.DataReceived += new SerialDataReceivedEventHandler(netComm_DataReceived); 
    } 

配置:

 _commManger = new NetCommManager(commPortNumber,       
     NetCommManager.TransmissionType.Text, "19200", "None", "One", "8"); 

的字節寫入:

_commManager.WriteByte(Convert.ToByte(0x7B)); 

而且WriteByte功能是:

public void WriteByte(byte data) 
     { 
      //change data to array 
      //byte[] dataArray = new byte[1]; 
      var dataArray = new byte[] {data}; 
      //dataArray[0] = data; 
      comPort.Write(dataArray, 0, 1); // <-- Exception is thrown here 
     } 

的NetCommManager類是非常基礎this example

+2

...並有一些原因的幾個註釋掉線。 – 2012-07-27 02:43:45

+0

註釋行是其他嘗試使其以不同形式工作的其他嘗試 – DogEatDog 2012-07-27 02:55:48

+1

+1。請注意,您仍然缺少'comPort = new ...'部分:)。不知怎的,傑夫E設法弄明白了(顯然+1的答案)。關於註釋掉的代碼 - 考慮它是否顯示了顯着不同的代碼變體。我不認爲它是這種情況 - 所以我只是刪除它。 – 2012-07-27 17:23:09

回答