2016-07-30 27 views
0

我用下面的如何從串口接收十六進制數據並將其顯示在C#中的文本框中?

byte[] hex=new byte[1000]; 
string RecievedData = myport.ReadExisting(); 
if (!(RecievedData == "")) 
{ 
    hex = Encoding.GetEncoding(28591).GetBytes(RecievedData); 
    string hexString = BitConverter.ToString(hex); 
    txtbox.text+=hexString; 
} 

,但問題是,這種代碼轉換沒有一個字符值到0x3F的所有字節。

+0

它是WPF,Winforms還是Asp.net? –

+0

它是Winforms。 –

+0

0x3F =='?'。在二進制數據上使用ReadExisting()時,會發生這種情況,字節值> = 0x80沒有相應的ASCII字符,因此它們會產生問號。您必須使用Read()方法讀取二進制數據。 –

回答

0

您只需要通過分配其ID來獲取串行端口,然後必須使用讀取字節方法來讀取其字節。

SerialPort p = new SerialPort("com1", 115200); 
textbox.Text = p.ReadByte().ToString("X2"); 
+0

好的,但我怎樣才能讀取所有的緩衝區。此代碼只讀取幾個字節而不是全部緩衝區。 –

+0

請參考這個問題:http://stackoverflow.com/questions/21548828/c-sharp-serial-port-reading-hex-data – Lakhtey

+0

雖然這段代碼可以解決這個問題,[包括解釋]( //meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高你的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要使用解釋性註釋來擠佔代碼,因爲這會降低代碼和解釋的可讀性! – FrankerZ

0

查閱的文檔上使用IO Ports例子中,示例是控制檯應用程序,但可以作爲運形成應用程序來容易地實現。

相關問題