你好
提前,对不起我的英语。。。
我正在使用CR1000数据记录器来记录火山的电位和温度数据。我们有3个多路转换器(两个用于电势,一个用于温度)。
我正在尝试使CR1000与RS232端口通信,以便从该端口收集数据。
我试图发送的数据是3个数据表,对应于从3个多路复用器获取的数据。但我找不到在CRbasic的帮助下使用的语法,而且我对CRbasic一无所知。。。
我在.CR1程序中添加了如下命令,你能告诉我它是否正确吗?
串行打开(COMRS2329600,010000)
(...)
串行输出(COMRS232、A、B、C、0,0100)
其中A、B和C是较早在.CR1文件中定义的数据表名称
如果您需要更多信息或查看整个.CR1文件,请告诉我
谢谢
新对话如下:
你好,斯蒂芬,
您是否有Loggernet或CR400软件,可以直接与记录仪RS232端口通话并检索数据?这通常是检索数据的方式,不必在程序中设置串行端口。
顺致敬意,
Dave(岛民)
新对话如下:
谢谢你的回复!
我们在CR1000上安装了一个紧凑型闪存模块,我们通常使用CP卡下载数据(只是为了尝试一下,我们还将现场计算机连接到RS232端口,并使用PC400软件下载数据,没有问题)。
事实上,我们需要在RS232端口上发送数据,因为我们想在数据记录器上安装远程传输系统(这是因为我们的CR1000离我们的实验室很远,我们每月只能直接从数据记录器下载一次数据)。我的团队通常在我们网络的其他站点上使用RS232端口进行这种传输。很抱歉在我之前的帖子中没有对此进行解释。
新对话如下:
好的,现在就明白了。
给我一点时间,我会在这里发布解决方案:-)
新对话如下:
非常感谢Dave!
如果您需要查看.CR1文件,请告诉我。。。
顺致敬意,
斯特凡尼
新对话如下:
斯蒂芬,
您可以使用GetRecord将数据从输出表检索回记录器,以便在RS232端口上传输。以下示例记录一分钟的平均面板温度,检查输出表是否已写入,然后获取记录并发送。
祝你好运
戴夫
'CR1000系列数据记录器
'节目作者:IslandMan
'声明变量
公共树面板温度
用于GetRecord结果的Public OutString$As String*50'字符串
'表1数据表
数据表(表1,1,-1)
DataInterval(0,1,Min,10)'每分钟存储数据
平均值(1,Tref,FP2,假)
床头柜
'主程序
开始进度
打开串行端口
串行打开(COMRS2329600,010000)
扫描(1,秒,3.0)
面板温度(TRef,250)
'如果表有输出,则获取最新记录
如果表1.输出(1,1),则
GetRecord(OutString$,表1,1)
'通过串行端口发送
串行输出(COMRS232,输出字符串$,“”,0100)
结束如果
调用表表1
下一次扫描
结束程序
新对话如下:
另请参阅CRBasic帮助文件中的SendData说明和示例。CR1000、CR3000和CR800系列支持此指令。
Dana公司
新对话如下:
关于SerialOpen的注意事项。。。使用此说明:
串行打开(COMRS2329600,010000)
将配置数据记录器的RS-232端口以9000波特进行通信。
如果/当您使用软件(LoggerNet、PC400等)连接到RS-232端口上的数据记录器时,您需要匹配波特率。这是通过设置屏幕中LoggerNet对PakBus端口的设置或PC400的数据记录器设置来完成的。
珍妮特
新对话如下:
斯特凡尼,
另一个注意事项:
请确保OutString$长度足够长,可以容纳数据表中的字符数。
如果您仍然不确定,请将程序发送至n2da@gmail.com我来找你。
当做
戴夫
新对话如下:
感谢所有的回复!!!非常好的论坛!
Dana公司
>>>;在尝试了Dave提出的解决方案后,我将看看这个函数并尝试它。
珍妮特
>>>;9600是我所在组所有工作站使用的波特率,没问题。
戴夫
>>>;非常感谢,我现在试着用你的解决方案完成这个程序。然而,我对外字符串的大小有一个问题:我无法访问此参数。当我通过CP卡从工作站下载数据时,程序(PC400)不允许我看到字符串,它会自动转换为.dat文件。
从文件中,我知道该数据包由以下部分组成:
1字节用于数据包的开头
标头为8个字节
消息的x字节
2个字节用于签名无效器
标记数据包结尾的1个字节
我试图找到“0”中的字节数;消息“;尽快给你一些消息。
:天
斯蒂芬
新对话如下:
斯蒂芬,
.dat文件中的每一行都将是GetRecord中的字符串长度。
例如:
";2008-09-09 09:00:00”;,0,4.337,206.9,18.74,73.65,88.1,69.94,1010.434,14.94
这个记录是76个字符,包括末尾的CR/LF。
在程序中,为了安全起见,我会在长度上加一些。
对于上述数据,我会将OutString$设置为100。
公共输出字符串$作为字符串*100
希望这能有所帮助,
戴夫
新对话如下:
好的,我理解。问题是我有3个表,我不知道它在字符串中是如何分隔的。最重要的是,在.dat文件中,在不同的行上,我可以有不同的字符串长度,因为值的变化如下:我可以在下一个样本中有5.678的值或123.34的值,第一个样本是5个字符,第二个样本是6个字符。
因此,我看到了三种解决方案:
1-是否有命令要说“;取所有数据“;而不是精确计算外字符串的字符数?在帮助中,我读到定义大小是可选的。如果我写会发生什么
公共输出字符串$As字符串
?
2-你说我可以在外字符串的长度定义中添加一些。也许这是一个愚蠢的问题,但是。。。为什么我不能加很多来确定?如果我将其定义为
公共输出字符串$As字符串*800
如果现实中只有400个字符?
3-最后的解决方案:
在尝试通过RS232端口发送之前,是否可以获得字符串这一部分的大小?
如果我能获得大小并将相应的数字放入一个名为a的变量中,那么我能写吗
公共输出字符串$As字符串*A
我希望我不要太含糊。。。
再来一次,非常感谢您抽出时间!
斯蒂芬
新对话如下:
斯蒂芬,
如果您有3个不同的表,则必须对每个表使用GetRecord才能发送它们。
所有表格是同时创建的,还是平均15分钟、平均30分钟和平均60分钟?
如果你不告诉变量OutString$要分配多少,我认为它默认为一个非常小的数字,并且不是所有的表都能容纳它。
您只能在将字符串读回内存后才能知道字符串的长度,例如:
OutLength=长度(OutString$)
由于您必须在程序运行之前声明字符串的长度,因此不能在实际运行之后使用此方法来调整变量OutString$。
使OutString$作为String*1000工作,它只是在记录器中使用更多的内存。如果你没有一个很大的程序,那应该没问题。分配得太多总比分配得不够好:-)
希望这能有所帮助。
戴夫
新对话如下:
所有表格都是同时创建的:我们每5分钟对传感器进行一次采样。我们有3张桌子:
表1:25温度记录
表2:32个电位记录
表3:32个其他电位记录
(电位来自两种不同类型的传感器)
好的,现在我想我已经具备了完成这个项目所需的一切。我们下次去车站时会试试。请确保我会保持联系,将结果告知您。
我将您的电子邮件地址添加到我的联系人中!
非常感谢Dave!
斯蒂芬
新对话如下:
因此,我看到了三种解决方案:
1-是否有命令要说“;取所有数据“;而不是精确计算外字符串的字符数?在帮助中,我读到定义大小是可选的。如果我将Public OutString$As String写入,会发生什么?
我仍然建议您在实现解决方案之前查看SendData(ComPort、NeighborAddr、PakBusAddr、DataTable)。与使用GetRecord相比,有几个优点:
*不太复杂的编程(IMO)
*您不必从数据表中获取记录并将其存储到字符串中(因此,您不必担心Outstring的大小:)
*如果失败,您不必处理重新发送代码中的字符串。当LoggerNet获得SendData记录时,它会查找丢失的记录,并自动收集“;孔”;。
2-你说我可以在外字符串的长度定义中添加一些。也许这是一个愚蠢的问题,但是。。。为什么我不能加很多来确定?如果我将其定义为Public OutString$as String*800,而实际上它只有400个字符,会发生什么?
如果未指定“大小”,则字符串的默认大小为16。定义的字符串越大,在编译时分配的内存就越多。这最终会影响所有变量的可用内存(内存是有限的)。对于一个小程序来说,这并不是什么大不了的事情,但如果你有一个包含许多变量的大程序,这可能会成为一个问题。
当做
Dana公司
新对话如下:
这听起来不错,但这个命令有一些我不知道的地方:
CR1000将数据发送到RS232,我们将通过无线电调制解调器将数据远程传输到实验室的计算机。这台计算机不仅专用于CR1000,因此,如果可以的话,我们希望避免在其上安装Loggernet或PC400。我们通常使用Matlab进行所有数据处理。
我开始使用CRBasic。。。两天前。。。我不知道该写什么
邻居地址
和
数据包总线加法器
如果我们不使用Loggernet或PC400来接收数据。有什么特别的吗
邻居地址
和
数据包总线加法器
使用Matlab时的代码?
斯蒂芬
*最后更新者:Stephen于2008年9月10日上午10:14*
新对话如下:
这台计算机不仅专用于CR1000,因此,如果可以的话,我们希望避免在上面安装Loggernet或PC400。我们通常使用Matlab来处理所有数据。
那么SendData将无法工作。我没有考虑这个要求。
当做
Dana公司
新对话如下:
很高兴知道Loggernet和PC400也存在此解决方案。谢谢
斯特凡尼