请问在labview中,是否可以使用中断方式读取数据。我使用的是CH372芯片,网页上提供的lv例子中中断调用总是不正常。
在labview中能不能提供一种获取函数地址或函数指针的机制,如果能的话就可以使用,CH375SetIntRoutine第2个参数就是接受一个函数地址或函数指针,"不正常"是指什么,能进中断服务程序吗? 还有就是你说的"中断方式读取数据",中断方式是上位机调用CH375SetIntRoutine设置一个回调函数,下位机向端点1写一个数据包,我们的动态库就会自动读取数据包,然后再调用你设置的回调函数,回调函数的参数就是读到的数据,不需要你再去调用CH375ReadInter读数据了
谢谢。我一旦调用CH375ReadInter读取中断时,lv系统就“死机”不能操作了。这样看来,是否labview无法使用CH375的中断读取方式?
调用CH375ReadData会死机吗?这很可能是因为没为CH375ReadInter设置超时,用CH375SetTimeoutEx设置中断上传数据的超时时间试试
调用CH375ReadData操作是正常的,也用了CH375SetTimeoutEx。但只要使用中断函数有关的操作就“假死”了。有些资料说labview中没有指针机制,是否这个原因造成不可使用中断函数了?
CH375ReadData的第2个,第3个参数不是指针类型的嘛!如果没有肯定会有替代的机制. 如果不使是CH375SetIntRoutine,而使用CH375ReadInter的话,使用的方法跟CH375ReadData是一样的,没有什么区别,CH375ReadInter读是端点1的数据,CH375ReadData是读的端点2的数据.注意CH375SetTimeoutEx的第5个参数是设置中断上传数据的超时时间.如果使用了CH375ReadInter的话就不要调用CH375SetIntRoutine了
我再次核对了CH375DLL.H中的定义,CH375SetIntRoutine和CH375ReadInter的第一个参数都是指定“CH375设备序号,必须是0”。第二个参数前者是指定中断服务回调程序;后者指向一个足够大的缓冲区、及长度单元。 在示例中也是这么设置的参数,看不出什么异常值。所以,提到的端点1和端点2从哪里区分看不出,还得麻烦您解释一下。另外一点就是,在labview中只要一执行CH375ReadInter就会假死,lv再也不能操作了。 如果使用CH375ReadInter是否仍然需要采用循环读取? 还有一个原因不知是否DLL库文件或LV的示例程序有问题。烦请指教,多谢。
端点1和端点2是在下位机里区分的,如果你下位机不从端点1上传数据,上位机就调用CH375ReadInter的话,CH375ReadInter读不到数据就会一直等所以会有死机的现象,CH375ReadInter可以采用循环读取,这个跟CH375ReadData是一样的.
明白了不少,再次感谢。
请问,lv中除了数组操作好像不能得到函数的指针,是否CH375SetIntRoutine函数无法实现?
在c语言里函数名就是函数地址,vb中有个address of来获取函数地址,lv中就不清楚了,你可以到网上去找这方面的资料.