2011-04-25 99 views
2

我使用Visual Studio 2008(C#)或Delphi CodeGear並製作與串行通訊端口設備通訊的程序。 設備以十六進制格式向我發送數據並讀取它。實例 - 40 32 00 D2 01 A6 B2 第一個字節「40」是設備編號。 第二個字節「32」是設備的哪個按鈕被按下。 etc ....C#Delphi ComPort通訊

我的問題是如何分別查看字節。當我收到40 32 00 D2 01 A6 B2 我不得不說這是設備'1'(例如),它被按下按鈕'2'(例如)。 如果有人知道該怎麼做,我將非常感謝一些help.Thank你

+2

你說你」讀它「。你怎麼讀它(以什麼格式 - 字符串,字節數組,??)? – 2011-04-25 23:16:06

+2

您可以發佈一些代碼(只是讀取傳入數據的部分)。 – ChrisWue 2011-04-25 23:26:16

回答

0

我發現這個代碼,並使用它:

void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e) 
     { 
      //determine the mode the user selected (binary/string) 
      switch (CurrentTransmissionType) 
      { 
       //user chose string 
       case TransmissionType.Text: 
        //read data waiting in the buffer 
        string msg = comPort.ReadExisting(); 
        //display the data to the user 
        DisplayData(MessageType.Incoming, msg + "\n"); 
        break; 
       //user chose binary 
       case TransmissionType.Hex: 
        //retrieve number of bytes in the buffer 
        int bytes = comPort.BytesToRead; 
        //create a byte array to hold the awaiting data 
        byte[] comBuffer = new byte[bytes]; 
        //read the data and store it 
        comPort.Read(comBuffer, 0, bytes); 
        //display the data to the user 
        DisplayData(MessageType.Incoming, ByteToHex(comBuffer) + "\n"); 
        break; 
       default: 
        //read data waiting in the buffer 
        string str = comPort.ReadExisting(); 
        //display the data to the user 
        DisplayData(MessageType.Incoming, str + "\n"); 
        break; 
      } 
     } 

並且收到這個「40 32 00 01 D2 A6 B2 「(十六進制格式)我想第一個字節意味着這個設備是第一個,第二個字節意味着按鈕編號N被按下等等... ...

+0

對不起,但我不知道如何在這裏格式化代碼。 – user724468 2011-04-26 11:09:45

+0

選擇代碼,按編輯器上方的「{}」按鈕或「Ctrl + K」。 – 2011-04-26 11:42:21

+0

或者:'

your block of code
'。 – 2011-04-26 11:43:27