2009-12-30 72 views
2

我正在創建一個Windows窗體發送/從串行端口接收數據。串口通信

首先:我把數據作爲字符串發送到串口。

二:我試圖測試的全成傳輸再次讀取字符串,但我收到空字符串

這是我的代碼:

Try 


Dim SerialPort1 

As New SerialPort("Com1",9600, Parity.None, 8, StopBits.One) 

SerialPort1.Open() 

SerialPort1.DtrEnabled=True 

SerialPort1.WriteLine("This is my test message .") 


' ================= Read from serial port 

Label1.Text=SerialPort1.ReadExisting() ' this returns empty string 


Catch ex As Exception 


MessageBox.Show(


"Error writing to serial port:" & ex.Message) 


Finally 

SerialPort1.Close() 


End Try 

我要問一個問題:

是否需要將設備連接到串口才能成功發送/接收數據?

請我需要緊急幫助

感謝

+0

是的,您需要連接到串行端口的設備才能成功發送和接收數據。你連接了什麼設備?你有沒有閱讀這個設備的手冊?發送字節到深淵可能是糟糕的。 – 2009-12-30 16:55:32

回答

1

ReadExisting返回由您正在使用,而不是由你發送的數據通信設備發送的數據。

3

正如亨氏已經提到的,如果你想看到數據,你需要有一些數據。沒有自動發送數據的回聲。

要回答您的其他問題:是的,您需要將另一臺設備連接到串行端口才能成功發送/接收數據。沒有其他設備,那有什麼意義?

幸運的是,您所連接的「設備」可以像使用一些電線的插頭一樣簡單。下面是一組用於構建所謂的回送插頭的指令和圖表:http://www.airborn.com.au/serial/rs232.html

這將允許您使用非常簡單的硬件將輸出回顯到輸入。如果您不想焊接自己的插頭,則可以使用所謂的分線盒或電路板。以下是一個示例:http://www.breakoutboxes.com/D-Series-9-Position-Breakout-Board_p_31.html

0

您將需要一個設備,通過它您的應用程序將發送和接收數據。

爲了測試,您可以考慮使用software like this Virtual Serial Port Driver創建虛擬串行端口。它允許您創建實際上未連接到任何物理設備的串行端口。然後,您可以使用其他程序或使用超級終端或PuTTY來調試您的程序。

1

您可以嘗試使用com0com來生成虛擬串行端口對,然後您可以將其中一個虛擬端口重命名爲通用名稱,如「COM4」。你應該打開其他像超級終端一樣的SW來進行串行通信,然後設置打開剩餘端口。

您可以嘗試使用兩個超級終端的com0com拳頭。

+0

+1。對於大多數串行端口編碼,com0com或nullmodem電纜非常重要。 – 2009-12-30 16:44:54

0

假設你有一個環回插頭(只需將2號和3號針腳連接在一起),以便立即接收你發送的任何東西。

但是 - 您需要考慮到RS232緩慢。 (「S L O W W L Y」)並且傳輸異步發生,因此您的程序在數據發送之前很久就會重新進行索引。所以你正在讀一個空的緩衝區。

只是爲了您的測試,您需要延遲一些。以便在發送之前您可以稍等片刻,然後嘗試接收。

在一個真實的應用程序中,儘管您使用receive事件來讀取串行端口。