我正在创建一个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 :(得分: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")并且传输以异步方式发生,因此您的程序在数据发送之前很久就达到了重新存在状态。所以你正在读一个空的缓冲区。
只是为了你的测试,你需要在那里放一些延迟。这样你就可以在发送之前等待片刻,然后再尝试接收。
在实际应用中,您可以使用接收事件来读取串口。