none
關於RS232的傳送問題 RRS feed

  • 問題

  • 請問各位先進:

             我利用RS232將它2、3腳短路,讓PC能透過RS232連線使用ASCll的16進位做傳送和接收。

    我是使用SerialPort.Write(位元組陣列)傳送,用SerialPort.ReadExisting()接收,可以正常收到ASCll的字元。

    我也測過SerialPort.Write(字串)傳送,也是用SerialPort.ReadExisting()接收,也可以收到正常的字元。

    1.我想請問如果有一台設備必須使用ASCll的16進位做溝通,那我用SerialPort.Write(???)傳送,???是不是一定要是16進位的字元或位元組?

    2.如果設備使用ASCll的16進位回傳,用SerialPort.ReadExisting()接收,要在轉換進位嗎?

    3.第2點的問題就我自己測試結果是不管我傳的是字串或是字元、位元組陣列,用SerialPort.ReadExisting()接收在顯示出來是都會是字元,我想確定一下是不是用SerialPort.ReadExisting()接收就不用轉換?

     

    2007年5月24日 上午 05:23

解答

  • Hi,

    用write/read就可以了,你16進位跟10進位只是表示方法不同,對於電腦(硬體)的序列埠來說,它是沒有分10/16進位的;你在操作serialport時read/write都會用byte陣列去操做,那麼byte裡面能放甚麼東西?就是0~255這樣而已。

    2007年5月24日 上午 08:36
    版主

所有回覆

  • 2007年5月24日 上午 06:28
    版主
  • Visual Basic 2005所提供的SerialPort在和真實的設備上溝通(傳送及接收)時,不知要不要在轉換進位(10 to 16)?
    設備是使用ASCII16進位做溝通,因為目前沒有設備且之前沒寫過RS232的介面,想了解一下是否使用Write和ReadExisting二個方法就能和設備溝通?還是要在做轉換?
    2007年5月24日 上午 07:30
  • Hi,

    用write/read就可以了,你16進位跟10進位只是表示方法不同,對於電腦(硬體)的序列埠來說,它是沒有分10/16進位的;你在操作serialport時read/write都會用byte陣列去操做,那麼byte裡面能放甚麼東西?就是0~255這樣而已。

    2007年5月24日 上午 08:36
    版主
  • 因為沒有硬體可以測試,不太肯同樣的程式能不能和機器溝通。
    如果真的用write/read就可以了,傳送和接收我也可以使用字串的方式。
    謝謝你
    2007年5月24日 上午 08:46