2009-12-30 46 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事件来读取串行端口。