当前位置:编程学习 > VB >>

有什么办法能够自动识别下位机的波特率?

vb能不能自动识别出串口的波特率?
或者识别出下位机的波特率与vb设置的波特率不一致? --------------------编程问答-------------------- 似乎无法.
MsComm控件只能判别PC的波特率的被设置值. --------------------编程问答-------------------- 波特率不正确,第一次通讯都无法建立的.

要自动确认的话,有个思路,不过没试过,但还是要求上下位机有个识别过程.

就是任意一方先发送事先约定好的内容,接收方不断改变波特率来接收,直到接收成功.

然后双方互换,完成三次正常通讯后,就可以确认是这个波特率了.

但是......这样子又有点多此一举:

既然都能在上下位机上设置协议了,为啥不直接固定波特率? --------------------编程问答--------------------
引用楼主 gzh911127 的回复:
vb能不能自动识别出串口的波特率?
或者识别出下位机的波特率与vb设置的波特率不一致?


假如下位机使用了不符合要求的晶振频率,造成实际波特率不符合要求.看来LS的方法可以一试.
--------------------编程问答--------------------
引用 3 楼 zdingyun 的回复:
假如下位机使用了不符合要求的晶振频率

如果真是这样,就不应该在软件上面来解决了吧....即使能解决. --------------------编程问答-------------------- 应该是安装设置时该做的事情。
就像你不能要求每个家用电器在不小心接到360V电源上时还能自动匹配工作。 --------------------编程问答-------------------- 对,我也是这意思.

决策有问题. --------------------编程问答-------------------- 波特率不正确,第一次通讯都无法建立的.????
可以连接,但是是乱码,吧,我的经验 --------------------编程问答--------------------
引用 4 楼 myjian 的回复:
引用 3 楼 zdingyun 的回复:
假如下位机使用了不符合要求的晶振频率

如果真是这样,就不应该在软件上面来解决了吧....即使能解决.
但是微软的超级终端可以,记得又一次,我没选对波特率,居然也能看到正常数据,但是有时也不行,不知道是不是微软的超级终端(软件)解决的,还是其他方法 --------------------编程问答--------------------
引用 7 楼 wozhaolala 的回复:
波特率不正确,第一次通讯都无法建立的.????
可以连接,但是是乱码,吧,我的经验

我指的通讯是正常的通讯.

如果数据都收不到,那应该就要找别的原因了 --------------------编程问答--------------------
识别波特率是可以做到的。

但必须有一方首先发送数据,另一方判断其波特率。如果你的波特率是下位机决定的,那么它必须首先发送足够长的一串特定数据,PC 根据接收到的数据来判断其波特率。

这个流程可以通过实验方法来确定,例如,发送什么样的数据,至少需要发多长,接收到哪一种数据是哪一个波特率。以前看过一段汇编的代码是做这件事的,没有仔细看,只是了解了大意。 --------------------编程问答--------------------  选择不同的波特率组合,然后发送,然后检测回传的数据的正确性,
SIMENS,OMRON,都有这个功能,就是不停的尝试
--------------------编程问答-------------------- 前提是需要数据发送是双向的,并且知道你发过去什么数据、对方应该应答什么数据。
既然有这么多预设条件,那么预先约定一个波特率岂不更方便?

碰上那种只有单向传送的情况,你怎么尝试? --------------------编程问答-------------------- 不好意思我没有说清楚
我用两个串口接不同的设备,波特率是不一样的
这个时候我必须把两个设备分别固定插入固定的串口,
我想能不能有一种办法,把两个设备任意插入一个串口,然后由上位机自动识别,识别后改变程序串口的port值就OK了 --------------------编程问答--------------------
实际上,你的特定问题不是什么波特率自动识别。

很简单,假设你有设备 A, B, 并已知约定的波特率 RA 和 RB。
开始时假定 A 在串口 1 上,由此用 RA 发送命令。如果正常通讯,就是猜对了。否则交换端口设置。
--------------------编程问答-------------------- 原来只有两种已知的波特率啊.

那就更好穷举了. --------------------编程问答-------------------- 还有个问题
就是其中一个串口要根据上位机的指令用两种不同的波特率工作
引用 14 楼 of123 的回复:
实际上,你的特定问题不是什么波特率自动识别。

很简单,假设你有设备 A, B, 并已知约定的波特率 RA 和 RB。
开始时假定 A 在串口 1 上,由此用 RA 发送命令。如果正常通讯,就是猜对了。否则交换端口设置。
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,