RS232流量传感器 _Campbellsci论坛问答

你好
我有一个LinkQuest FlowScout传感器。
串行通信是ASCII RS232,我需要获取字符串,但数据记录器CR800没有显示完整的字符串。

我使用com1,9600,8 N,1
序列输入记录

超级终端显示字符串:

#&!LQFM.COMD2525 FM_启动
$#FM.ENSÉ2ï$*0xÜe宋体þ)E0宋体f V E1 2 E2 FS2M.2.0.03 FS STK011
一个

有人知道吗?
因为在E0和E1之间我们找到了实际值。

非常感谢你。。。。。

新对话如下:

你好,鲁本,

您的SerialInRecord指令有一个目标变量,您可以在程序的前面声明它。这将是类似于:
公共流字符串作为字符串*20

*后面的数字是多少?如果您没有*#,那么它默认为16个字符。试着把这个数字做得更大,比需要的大一点可能不是一个坏主意。

如果有帮助,请告诉我们。
珍妮特

新对话如下:

传感器清楚地输出了大量二进制字符。虽然您可以在CRBasic中将这些数据写入字符串,但您需要小心处理和查看这些数据。

首先,您需要注意,CRBasic将null(char(0))作为字符串的末尾。因此,如果数据中可能有一个null,你必须仔细处理字符串,因为记录器中的大多数字符串函数只会处理到null的字符串。

在这种情况下,通常的技巧是使用MoveBytes命令将数据从字符串中移出到另一种类型的变量中,例如一个或多个long,然后以该格式处理和/或存储该数据。

如果你没有空字符,那么大多数字符串处理都可以工作,然而,如果你使用我们的PC或事实上大多数其他软件产品查看字符串,如果字符串中有二进制非打印字符(显然有),你在屏幕上看到的内容可能是不可预测的,这取决于程序如何解释字符,例如,许多将从字面上处理回车,并且如果找到中间字符串,将导致字符串的末尾被写在字符串的开头的顶部。

作为一般规则,如果有二进制字符,尽管您需要将它们转换为另一种类型,以便在PC上平滑显示和处理从收集到存储的数据。

新对话如下:

你好

我目前在FlowScout中使用ruben,该链由RS232空字符、分页符、回车读取,因此我们没有找到如何读取字符串,当我们尝试读取字符串时,没有显示任何字符。

有什么关于我们如何阅读这个字符串的建议吗?

新对话如下:

这是我们用超级终端得到的字符串,我们要读取的数据是E0到E1,并转换为十进制。

RS232流量传感器
_Campbellsci论坛问答

但我们所阅读的SerialInBlock指令是:

FM_停止
2003年10月2.0日FS STK011

*最后更新者:MiguelR于2009年8月24日下午3:48*

新对话如下:

CRBasic中的所有字符串处理都对“字符串”敏感;空”;内容中的终止符。如果您将要读取的数据可能包含空字符(字符0),则您将被限制使用SerialInBlock(),因为您一直在尝试。为了知道读取了多少数据,您需要将SerialInBlock()的返回值存储到一个变量中。由于字符数据中存在null终止问题,您将无法使用LoggerNet将此缓冲区的内容作为数据进行检查。

对于SerialInBlock(),您应该认识到的另一种行为是,它不会阻止读取指定数量的数据,而是只返回指令输入缓冲区中累积的数据。因此,缓冲区中是否存在整个响应将在很大程度上取决于程序的时间安排。给传感器足够时间输出整个字符串的一种方法是在调用SerialInBlock()之前使用Delay()指令。或者,您可以实现逻辑,该逻辑将寻找一个“0”的开始;记录“;然后查找记录的末尾作为状态机。后一种替代方案虽然实施起来更加复杂,但可能会更加稳健。

*最后更新者:jtrauntvein于2009年8月25日上午7:18*

分享到:
原文链接:,转发请注明来源!
海洋仪器网 仪器使用 RS232流量传感器 _Campbellsci论坛问答
「RS232流量传感器 _Campbellsci论坛问答」评论列表

发表评论