使用串口(COM)时我遇到两个问题,我找不到任何理由:
1 - 我在c#(wpf)中编写了一个程序来接收来自微控制器的数据(微处理器连续发送一些数据,例如每隔100毫秒),当我在Visual Studio中运行我的程序时数据,但接收数据有一些延迟;它接收前三个数据,然后是延迟,然后是一些其他数据,并继续这个场景,没有任何纪律。我尝试了发布模式和调试模式但没有变化。但是当我去Debug文件夹或Release文件夹并从那里运行.exe时,每件事都没问题,并且不断接收数据),我真的很困惑!!
2 - 用于连接micro我使用usb-to-COM转换器(带有一侧usb和另一端COM端口的电缆)。有时在程序的运行之间我通过从我的笔记本电脑中拔出usb来断开连接(但是micro正在发送),当我再次将它连接到我的笔记本电脑,鼠标,应用程序窗口时......所有移动我无法控制任何东西!
答案 0 :(得分:2)
USB串口电缆实际上是一种设备(通常归类为USB转UART桥接设备,其中一个电缆连接器实际上有一个UART)。通过从笔记本电脑中拔出USB电缆,您可以有效地从系统中删除串行端口设备,这意味着您的COM端口不再存在。如果你在程序运行时这样做,我希望程序崩溃。通过串行端口的连接是连接到\\。\ COM#
的文件流'#'只是一个占位符,可能是COM4,COM5等,具体取决于系统上有多少其他串口设备处于活动状态。您正在实际执行的操作类似于在程序在该驱动器上打开文件时断开硬盘驱动器。我不希望它优雅地结束。
至于数据接收,按照今天的标准,串行端口非常慢,而串行端口标准的计算机程序非常快。此外,虽然串行端口输入可以实现为阻塞调用,但它最终会超时。当它超时时,如果不检查超时条件,则可能正在读取0字节。
我可以在不知道你正在尝试完成什么以及你是如何尝试完成它的更多细节的情况下为你提供。