串口通讯

时间:2009-12-30 10:53:38

标签: vb.net

我正在创建一个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

我需要问另一个问题:

是否需要将设备连接到串口才能成功发送/接收数据????

请我急需帮助

感谢

5 个答案:

答案 0 :(得分:3)

正如海因兹已经提到的,如果你想看到数据,你需要有一些进入。你发送的数据没有自动回显。

要回答您的其他问题:是的,您需要将另一台设备连接到您的串行端口才能成功发送/接收数据。没有其他设备,重点是什么?

幸运的是,您连接的“设备”可以像带有电线的插头一样简单。以下是一组用于构建所谓的环回插件的说明和图表:http://www.airborn.com.au/serial/rs232.html

这将允许您使用非常简单的硬件将输出回显到输入。如果您没有焊接自己的插头,可以使用所谓的分线盒或电路板。这是一个例子:http://www.breakoutboxes.com/D-Series-9-Position-Breakout-Board_p_31.html

答案 1 :(得分:1)

ReadExisting返回您正在与之通信的设备发送的数据,而不是您发送的数据。

答案 2 :(得分:1)

您可以尝试使用com0com生成虚拟串行端口对,然后可以将其中一个虚拟端口重命名为通用名称,如“COM4”。您应该打开其他SW,如超级终端进行串行通信,然后设置为打开该对中的剩余端口。

您可以尝试使用两个超级终端的com0com拳头。

答案 3 :(得分:0)

您需要一个设备,您的应用程序将通过该设备发送和接收数据。

对于测试,您可以考虑使用software like this Virtual Serial Port Driver创建虚拟串行端口。它允许您创建实际上未连接到任何物理设备的串行端口。然后,您可以使用其他程序或HyperTerminal或PuTTY等程序调试程序。

答案 4 :(得分:0)

假设您有一个环回插头(只需将引脚2和3连接在一起),以便立即收到您发送的任何内容。

但是 - 您需要考虑RS232缓慢。 (" S L O W L Y")并且传输以异步方式发生,因此您的程序在数据发送之前很久就达到了重新存在状态。所以你正在读一个空的缓冲区。

只是为了你的测试,你需要在那里放一些延迟。这样你就可以在发送之前等待片刻,然后再尝试接收。

在实际应用中,您可以使用接收事件来读取串口。