2014-06-25 43 views
0

首先对不起我的英文:)串口没有收到数据

我有一个带2个COM口的PCI串口卡。我正在使用它通过串行电缆从另一台计算机接收数据。 (其他电脑将命名为“发送人”随后)

问题是,当电缆插入到我的电脑,我重新启动(Windows 7),(发件人仍在运行...),然后我的电脑没有收到任何数据。但是,当我重新启动,然后我连接电脑开始接收我的电脑。我临时解决它首先启动我的电脑,然后发送PC,但它真的是一个可怕的解决方案...

我试图连接我的电脑与不同的计算机(不同的发件人),它的效果很好。 所以我认为这个问题可以与我的主要发件人。也许它正在等待我的电脑发出一些信号,表明端口已准备就绪?或者Windows 7可以在重新启动时阻止我的串行端口卡(不在该卡上的标准COM1工作正常)?也许我必须手动发送一些信号给发件人,我准备好了吗?顺便说一下,我无法以任何方式对发件人PC进行调整;只打开或关闭它。

我对串口没有任何专业知识,所以我真的不知道该怎么做,或者我目前做错了什么。

任何想法? (我的接收器应用程序在C#中编程)

更新:我忘了提及,当电缆连接...重新启动...然后端口不能打开。

+0

也许“发送者PC”在无处发送数据时崩溃了? –

+0

不,发件人仍然在运行......当我拔下插头,重新启动然后插上时,它就可以工作。 – kawon91

回答

1

问题出在卡片上...我换了新的,现在它的工作正常。看起来这张卡对于Windows 7来说太老了。

2

这是由握手信号引起的问题。发送者的DSR(数据集就绪)连接到您的DTR(数据终端就绪)。当您重新启动时,它会看到信号关闭,现在它发送任何东西都变得很生气,因为它认为您不再连接。您可以通过在您的程序中没有将SerialPort.DtrEnable设置为true来加剧此问题,这是很常被忽视的。

与RTS和CTS信号一样,如果您将SerialPort.Handshake属性设置为Handshake.RequestToSend(建议值)以外的任何值,那么它现在成为您的工作来控制信号。您必须在代码中明确地将RtsEnable属性设置为true

它倾向于偶然工作,你很容易使用另一个程序来测试连接。像HyperTerminal或腻子,他们会打开你的信号,你的程序现在将正常运行。

这种bug当然也可以存在于发件人中。如果您无法修复该代码,那么您只能重新连接电缆。将RTS连接到发送端的DSR和CTS,它总是会看到打开的信号。

+0

感谢您的回答和很好的解释,我会在下周尝试它,让你知道它是如何去的。 – kawon91

+0

它没有帮助...但我忘记提及,当电缆连接...重新启动...端口不能被打开。 – kawon91