Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的端口上的波特率会自动更新以匹配我设备上的波特率?_C#_.net_Serial Port_Baud Rate - Fatal编程技术网

C# 为什么我的端口上的波特率会自动更新以匹配我设备上的波特率?

C# 为什么我的端口上的波特率会自动更新以匹配我设备上的波特率?,c#,.net,serial-port,baud-rate,C#,.net,Serial Port,Baud Rate,我正在制作一个C#应用程序,它使用.NET System.IO.Ports.SerialPort接口与硬件设备进行通信(该设备使用串行->USB转换器连接到我笔记本电脑上的USB端口),我的应用程序需要做的一个步骤是将波特率从出厂默认值(38400)更改为最终需要使用的一个(19200) 因此,我使用初始化器打开端口,将端口波特率设置为38400;一切都很好,我从硬件上得到了连贯的信息。当我将设备上的波特率更改为19200时,同样,一切正常,即使我没有更改端口上的波特率(在我的PC端),我仍会收

我正在制作一个C#应用程序,它使用.NET System.IO.Ports.SerialPort接口与硬件设备进行通信(该设备使用串行->USB转换器连接到我笔记本电脑上的USB端口),我的应用程序需要做的一个步骤是将波特率从出厂默认值(38400)更改为最终需要使用的一个(19200)

因此,我使用初始化器打开端口,将端口波特率设置为38400;一切都很好,我从硬件上得到了连贯的信息。当我将设备上的波特率更改为19200时,同样,一切正常,即使我没有更改端口上的波特率(在我的PC端),我仍会收到一条无误消息。我觉得他们现在应该说不同的语言


但是,当我在更改设备设置后手动更改端口设置时(在端口打开很久之后),我会收到乱码消息,即使波特率现在应该对齐。我的问题是:是否.NET自动知道硬件端的波特率变化?我从根本上误解了这一切的工作原理吗?

大多数情况下,自动检测会以每种波特率发送一条消息,直到返回预期结果。这种情况经常发生吗?在不同波特率之间,我看不到任何乱码消息。通常,在获得有效字符之前,设备不会发送任何数据。如果速率错误,UART会有错误位,并且设备不会发送任何东西,除非它从UART中没有错误,并且它看到预期的字符,然后在末尾返回。一旦设备检测到一个速率,它将停止搜索速率,并假设坏数据是传输中的错误,并尝试更正坏数据。