大家好!
我目前正在编写一个Python接口,用于与CR 1000(可能还有其他)数据记录器进行通信。到目前为止,我已经实现了来自
BMP5透明命令手册
它们运行良好。
这是一个手册没有回答的问题。如果您知道表的名称并不知何故知道(或猜测)匹配的表号,那么读取表是相当容易的。但是,从CR1000中自动获取表格编号和名称的正确方法是什么?
我在
BMP5透明命令手册
它使用一个文件上传请求;CPU:Def.tdf";以获取表定义。此命令返回错误代码0xE(文件不可访问)。手册文本要求您请求一个名为“”的文件;。TDF”;。但是,此请求不会返回任何结果。
如果有任何关于如何解决这个问题的提示,我将不胜感激。
致以亲切的问候
干细胞生长因子
*最后更新者:dgf于2009年6月22日上午11:39*
新对话如下:
恐怕该手册有些过时了,因为最近的版本(从CR1000的15开始)引入了允许客户端请求特定表的定义的功能。如果您想要完整的表定义集,则需要请求“”;。TDF”;文件(请注意,在此期间之前没有设备名称或文件名。
新对话如下:
谢谢你的解释。我现在可以通过请求“”来检索表定义;。TDF”;文件
之前它不起作用的原因有点奇怪:如果我为";发送一个文件上传命令;。TDF”;其中Swath>;0x5B4(1460),记录器没有响应。较小的值可以正常工作。在常规文件中,即使是0xFFFF也可以用于Swath。
>;最近的版本(CR1000从15开始)引入了
>;允许客户端请求的定义的功能
>;特定表格。
这确实是一个不错的功能,但对表号并没有真正的帮助。你仍然需要完整的“;。TDF”;表定义来获取此信息。不幸的是,所有的命令都依赖于表编号,但这些编号从未明确提供。
新对话如下:
根据我为GetDataRecord指令所掌握的一些信息,数据表按照程序中出现的顺序进行编号。
*这是基于GetDataRecord的。*我还没有测试过这一点,看看它在您的场景中是否成立,也没有测试公共和状态表如何影响这一点。
只是把它当作一件值得思考的事情。当然,即使这确实成立,也需要您以某种方式了解数据记录器中的表结构。
当做
Dana公司
新对话如下:
尊敬的Dana:,
谢谢你的回复。似乎获取表号的唯一通用方法是通过请求“”来下载完整的表定义列表;。TDF”;文件通过“;一般的“;我的意思是,你没有其他方法可以知道表的编号,例如从源代码中猜出来。
整个问题是一个母鸡和鸡蛋的问题:
-您需要一个表号和表签名来请求数据
-如果只知道表号,则无法检索
表定义->;没有表签名->;没有数据请求!
-如果只知道表名,就可以检索该表
定义(->;表签名)。然而,你没有得到桌子
这样编号->;没有数据请求!
因此,无论您做什么,除了检索完整的表定义列表之外,别无选择。因此,按名称检索单个表定义的有用功能(“TableXX.TDF”)变得毫无用处。
然而,我有一个解决这个问题的建议:状态表在DataTableName字段中有一个表名列表。如果它包含所有表的名称;状态“;以及“;公开的“-按照正确的顺序,可以从中检索表名和相应的表号。有了这些信息,就很容易得到表的定义。
致以亲切的问候
迪特里希