C# 如何通过串口自动获取称重秤的配置?

C# 如何通过串口自动获取称重秤的配置?,c#,.net,serial-port,C#,.net,Serial Port,我正在使用C#/.NET将体重秤上的重量显示到文本框中 由于串行端口连接,这个称重秤与我的计算机相连 为了实现这一点,我提到了 我的问题: 创建新的串行端口连接时,我需要在此之前声明一些常量: _serialPort = new SerialPort(portName, BaudRate, Parity.None, DataBits, StopBits.One); 以下是我需要声明的常量: private const int BaudRate = 9600; private const int

我正在使用C#/.NET将体重秤上的重量显示到文本框中

由于串行端口连接,这个称重秤与我的计算机相连

为了实现这一点,我提到了

我的问题:

创建新的串行端口连接时,我需要在此之前声明一些常量:

_serialPort = new SerialPort(portName, BaudRate, Parity.None, DataBits, StopBits.One);
以下是我需要声明的常量:

private const int BaudRate = 9600;
private const int DataBits = 8;
但是
波特率
数据位
值取决于称重秤配置。所以每次我换秤的时候,秤上的重量都显示不出来了

我的问题:


如何自动检测称重秤配置,以便在不手动更改常量值的情况下很好地显示重量?

据我所知,没有提供从您尝试与之通信的端点检测串行端口波特率和数据比特的方法。在UI上为用户提供SerialPort选项选择可能会更好

如果你真的想自动检测,呃。。。一个随机的疯狂想法:如果您对标尺使用的数据格式有所了解(例如,在字符串中始终有一个浮点数,如“56.12”),请尝试以下方法:在串行端口中测试每一个可能的波特率和数据位组合,直到在串行端口上读取的数据具有预期的格式(可能使用Regex或Parse?)。这可能需要一些时间,但这是一次性操作,因此这可能是您需要的

注意:最好使用ReadByte或ReadExisting,因为在获得换行符之前,ReadLine不会工作(在错误的波特率/数据位上,这将非常随机地发生)

如何自动检测称重秤配置

您不能,因为没有可靠的软件技术从实时串行链路导出波特率和帧参数。
这就是串行端口从PC机上消失的原因,因为PC机需要用户友好的界面。
我见过的一种波特率自动检测方案依赖于远程单元传输单个已知字符流

解决这一难题的办法是手动将每个设备配置为通用波特率和帧配置。
然后,您的程序将始终使用该串行端口配置。

设备将具有默认的串行端口配置,但对于大多数设备来说,它不是固定的,可以重新配置。旧的设备过去有DIP开关用于此目的,但低成本的LCD屏幕和NV存储器是现代的接口和存储方法

你可以找到你的答案。我没有找到答案,但是谢谢你的帮助。谢谢你的回答。我想过这样一个想法,我会努力实现它。