LABVIEW的深入探索——LABVIEW能否读写物理内存
熟悉LABVIEW的朋友们都知道,LABVIEW提供了类似于汇编语言的IN OUT指令,可以直接操作计算机端口,这在一般编程语言中是禁止的, 体现了LABVIEW强大的硬件操控能力。
除了直接操作端口外,个别情况下我们可能会遇到直接读写物理内存的问题。LABWINDOWS/CVI提供了几个有关物理内存的函数,自然我们可以通过CIN或者DLL,使LABVIEW间接具有操控物理内存的能力,但这不是我们今天要探索的。
下面是CVI支持的IO端口操作函数和有关物理内存操作的函数列表和简单说明。
过去一般的做法是把上述的函数封装成DLL或者创建CIN。
如果我们跟踪LV中的端口操作函数,可以发现LV中的IN OUT实际上也是通过调用一个DLL中的函数,从函数名称上也应该是封装了上述的函数。
除了直接操作端口外,个别情况下我们可能会遇到直接读写物理内存的问题。LABWINDOWS/CVI提供了几个有关物理内存的函数,自然我们可以通过CIN或者DLL,使LABVIEW间接具有操控物理内存的能力,但这不是我们今天要探索的。
下面是CVI支持的IO端口操作函数和有关物理内存操作的函数列表和简单说明。
过去一般的做法是把上述的函数封装成DLL或者创建CIN。
如果我们跟踪LV中的端口操作函数,可以发现LV中的IN OUT实际上也是通过调用一个DLL中的函数,从函数名称上也应该是封装了上述的函数。
实际上,这个DLL文件包含了很多函数,只是没有直接向用户敞开,下面是隐藏的函数列表。
从DLL文件名称上看,该DLL文件应该是重新封装的打包DLL..
下面我们探索一下这些隐含的函数是否直接可用,由于直接操控物理内存,使用时要特别注意。看看CVI中ReadFromPhysicalMemory函数的原型定义。
下面我们探索一下这些隐含的函数是否直接可用,由于直接操控物理内存,使用时要特别注意。看看CVI中ReadFromPhysicalMemory函数的原型定义。
经常使用计算机端口操作的朋友们可能经常会在BIOS中查看计算机串口、并口的端口地址。COM1和COM2的地址一般为0X3F8和0X2F8,计算机并口的数据寄存器地址一般为0X378,早期计算机也有0X3BC的情况。这些端口地址在计算机启动后,会直接映射到0X400开始的一段内存空间上。DOS时代可以直接通过DEBUG来查看,下面我们通过读物理内存函数来验证一下这些函数是否可用。
从实验的结果上看,正确返回了0X3F8 0X2F8 0X378,这说明了这些隐含的函数是完全可用的。这些函数使用时必须谨慎,下面给出读物理内存函数的详细配置,以防出现问题。