week1_2 ni上手记录(未完)

跑起来

  • 修改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

  • 针对上述三件的日志记录

  • 增加配置文件时多注意两点,一是小文件夹名,二是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”: 找不到指定的模块。