除了直接操作端口外,个别情况下我们可能会遇到直接读写物理内存的问题。LABWINDOWS/CVI提供了几个有关物理内存的函数,自然我们可以通过CIN或者DLL,使LABVIEW间接具有操控物理内存的能力,但这不是我们今天要探索的。
下面是CVI支持的IO端口操作函数和有关物理内存操作的函数列表和简单说明。
Port IO Input Byte From Port inp Input Word From Port inpw Input Double Word From Port inpd Output Byte To Portoutp Output Word To Port outpw Output Double Word To Port
Physical Memory Access Read From Physical Memory ReadFromPhysicalMemory Read From Physical Memory ExReadFromPhysicalMemoryEx Write To Physical Memory WriteToPhysicalMemory Write To Physical Memory ExWriteToPhysicalMemoryEx Map Physical Memory MapPhysicalMemory Unmap Physical Memory
过去一般的做法是把上述的函数封装成DLL或者创建CIN。
如果我们跟踪LV中的端口操作函数,可以发现LV中的IN OUT实际上也是通过调用一个DLL中的函数,从函数名称上也应该是封装了上述的函数。
实际上,这个DLL文件包含了很多函数,只是没有直接向用户敞开,下面是隐藏的函数列表。
从DLL文件名称上看,该DLL文件应该是重新封装的打包DLL..
下面我们探索一下这些隐含的函数是否直接可用,由于直接操控物理内存,使用时要特别注意。看看CVI中ReadFromPhysicalMemory函数的原型定义。
--------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------
经常使用计算机端口操作的朋友们可能经常会在BIOS中查看计算机串口、并口的端口地址。COM1和COM2的地址一般为0X3F8和0X2F8,计算机并口的数据寄存器地址一般为0X378,早期计算机也有0X3BC的情况。这些端口地址在计算机启动后,会直接映射到0X400开始的一段内存空间上。DOS时代可以直接通过DEBUG来查看,下面我们通过读物理内存函数来验证一下这些函数是否可用。
从实验的结果上看,正确返回了0X3F8 0X2F8 0X378,这说明了这些隐含的函数是完全可用的。这些函数使用时必须谨慎,下面给出读物理内存函数的详细配置,以防出现问题。
上一篇:LABVIEW的深入探索之功能强大的位操作能力
下一篇:LABVIEW的深入探索之已链接控件引用与未链接控件引用
推荐阅读最新更新时间:2024-03-30 23:03