跑起来
修改config,从NI5换成NI6的主从模式
删掉ResourceName
主卡为slot2,从卡为slot3;slot1应该是控制器
存放文件夹可能还得建
主卡叫card0,从卡叫card1
从卡的触发源是"PXI1Slot1/ai/StartTrigger"
感想:
cardx的命名仅为了满足配置文件的命名,实际上物理命名更通用
需要修改的位置具有耦合关系,这些配置项最好能自动调整
NIDAQAI和NIScopeDAQAI的关系?
pvNotWatch和pvWatch的关系?
pvWatch中的monitor的相关值的含义?
当尝试在CFET2APP的bin\debug直接运行程序
一是没有thingConfig文件夹,二是没有删同类两个dll,三是找GlobalConfig.json失败
三失败的原因是,寻找路径被写成了在pwd中找,而不是运行程序所在文件夹中去找。
四是:未能加载文件或程序集
梳理步骤
给控制器装上内置硬盘,再安装win10
安装NI的package manager,再安装DAQmx和MAX等工具
两张采集卡接上接线盒,接线盒接上信号发生器
为两张NI6修改配置文件,并删掉多余的同类型dll
安装VS2022,在VS2022解决方案中设置好nuget包(CORE选择CFET2Core 2.0.10),并下载net461
给触发:原本尝试给+-2.5V的方波信号,但是无效。经龙哥提醒,给计算机负的信号很可能无效,故调整为0~5V的方波信号,触发成功。
VS2022不支持net461,程序在VS2022编译成功后在VS2022中跑不起来。又下了一个VS2019
VS中,一个解决方案里可以有多个项目
NI6采集卡配置文件中与路径相关的项,由于有细微格式差别,罗列备忘如下:
"TriggerSource": "/PXI1Slot2/APFI0"
"ChannelName": "PXI1Slot2/ai0"
"DataFileParentDirectory": "C:\\Data\\ni\\card0"
对于主从卡的困惑:主从卡的clockConfig可以不同吗?主对从的影响除了提供触发和同步还有什么?两者要保持相同的采样率和采样时长吗?使用主从的意义仅仅是单张卡的通道数不够用吗?主对从的支配能跨机吗?
日志形式的过程记录(针对VS2019上code中的解决方案跑不起来)
VS2017报错:尝试从一个网络位置加载程序集,在早期版本的 .NET Framework 中,这会导致对该程序集进行沙盒处理。此发行版的 .NET Framework 默认情况下不启用 CAS 策略,因此,此加载可能会很危险。如果此加载不是要对程序集进行沙盒处理,请启用 loadFromRemoteSources 开关。
不知为何,突然产生了更多的版本的报错,暂时放弃。后在https://dotnet.microsoft.com/en-us/download/visual-studio-sdks网站下载VS2019版的.net core 2.0 sdk,成功。
初步解决方式为:找到对应的DLL => 右键属性=>最下面的安全行中有一个解除锁定,点击之后保存即可(若还有其他文件,则都需要这样操作)。
上述办法解决了十几个dll的加载失败,但还有hdf5.dll、hdf5_hl.dll、zlib1.dll三个仍加载失败
观察最新的代码环境,发现没有zlib1,并且没有hdf5和hdf5_hl;此外,新环境没有NIDAQAI.dll
于是按照最新的来
删掉hdf5后发现,原来还有一份在/bin64下;奇怪的是,最新环境也有一样的/bin64
load NationalInstruments.Visa.dll时,出现报错System.Exception HResult=0x80131500 Message=System.Reflection.ReflectionTypeLoadException: 无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性。
上述问题还没有找到根源和解决办法,但是对比目前跑起来的非最新版本,发现它居然没有那个visa.dll!而且加上visa后也跑不起来。于是果断删掉visa。由此,vs2019版的程序终于跑起来了!
主从卡跑起来:先tryarm所有的从卡,使其都进入ready状态;再tryarm主卡,从而使所有卡进入ready状态
TODO
uploader
manager是uploader的先导,因为它是被监听的上传事件产生者,而事件则是AllAITaskFinished
点评:从这里可以看出,因为CFET非常的模块化,所以不同模块间的通信,很多都是靠配置监听事件以及对应的thing(用CFET下的挂载路径给出)来完成。
csv文件中配置,居然提醒tag名不能写杠杠。暂时不理解。只是首部的杠杠不能写吗?
manager
DelaySecondAfterFinish的设置,是指整个自动挂载的过程是周而复始的过程,结束后暂停的时长有此项设置吗?
在这台电脑上装个mdsplus来测试uploader
快速建树和建点查看https://www.mdsplus.org/index.php?title=Documentation:Tutorial:CreateTrees&open=1769734509573656608817&page=Tutorials%2FTrees+%26+Data
针对上述三件的日志记录
增加配置文件时多注意两点,一是小文件夹名,二是config.json里的initobj为何有时是txt而不是json
此外,不清楚Mds.Upload.csv应该放在uploader下的Config.json中吗?
注意,initObj是obj,因为它可以是单独一个,也可以是{}。(个人感觉应该统一为{})
报错:“Create HDF5 file Failed! Error message: System.TypeInitializationException: “HDF.PInvoke.H5F”的类型初始值设定项引发异常。 ---> System.DllNotFoundException: 无法加载 DLL“hdf5”: 找不到指定的模块。