找回密码
 注册
LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 2255|回复: 10

求教:基于虚拟仪器测量织机张力系统

[复制链接]
发表于 2007-1-21 20:54:15 | 显示全部楼层 |阅读模式
急!!!  拜托各位好心人了!!!
发表于 2007-1-21 23:50:08 | 显示全部楼层
织机张力,首先这个数据你怎么采集呢,
你最好能说清楚点.因为大家并不一定做的是一样的事情
清楚了才好帮你
回复 顶

使用道具 举报

 楼主| 发表于 2007-1-22 21:25:39 | 显示全部楼层

求教:基于虚拟仪器测量织机张力系统

通过传感器测量织机经线上的张力得到模拟信号,经单片机把模拟信号转换为数字信号,并将数据进行分析处理,通过USB接口把数据传到PC机上,通过LABVIEW软件分析处理,把信号显示在屏幕上,供生产操作者直观地观察张力及其变化

这是我们项目的大体流程,我们现在正在做labview这一块,希望通过调用dll库函数把采集到的数据在xy graphy上显示出来

最后要显示包括开始采集的主轴角度,采样间隔角度,最大/最小张力以及平均值等数据

我们的困难是labview与usb的数据连接,调用dll库函数这些

ps:我们不知道怎么传附件  如果可以我们想截图给你们看下  这样更直观一些

我们的邮箱是:flyhreat@163.com    谢谢各位啦  
回复 顶

使用道具 举报

发表于 2007-1-22 21:40:51 | 显示全部楼层
1:labview和usb的连接,因为时间关系,我就不给你找帖子了,cpubbs老大曾经写过一个教材,你去搜索下应该能发现的;
2:调用dll,labview有提供这个功能,你呢,首先要做的就是熟悉这个dll的功能,它都提供哪些函数,这些个函数的proto type是怎么样的,然后自己去找下labview中关于这个功能的help,节点名称应该是 call library node,主要看下数据类型之间的相互转化
3:如果还有问题,欢迎讨论~~~
回复 顶

使用道具 举报

 楼主| 发表于 2007-1-22 22:18:18 | 显示全部楼层
以下是 dll库函数自带的vb程序  

里面有关于这个dll库函数提供的一些功能函数的程序代码  

我们觉得不太理解  能不能帮我们看一下  详细说明下这些功能函数

大恩大德,没齿难忘!!!!!!!!!
回复 顶

使用道具 举报

 楼主| 发表于 2007-1-22 22:18:35 | 显示全部楼层
Option Explicit

' Declare statements for all the functions in the SiF32xUSb DLL
' NOTE: These statements assume that the DLL file is located in
'       the same directory as this project.
'       If you change the location of the DLL, be sure to change the location
'       in the declare statements also.
Public Declare Function SI_GetNumDevices Lib "SiUSBXp.dll" (ByRef lpwdNumDevices As Long) As Integer
Public Declare Function SI_GetProductString Lib "SiUSBXp.dll" (ByVal dwDeviceNum As Long, ByRef lpvDeviceString As Byte, ByVal dwFlags As Long) As Integer
Public Declare Function SI_Open Lib "SiUSBXp.dll" (ByVal dwDevice As Long, ByRef cyHandle As Long) As Integer
Public Declare Function SI_Close Lib "SiUSBXp.dll" (ByRef cyHandle As Long) As Integer
Public Declare Function SI_Read Lib "SiUSBXp.dll" (ByVal cyHandle As Long, ByRef lpBuffer As Byte, ByVal dwBytesToRead As Long, ByRef lpdwBytesReturned As Long) As Integer
Public Declare Function SI_Write Lib "SiUSBXp.dll" (ByVal cyHandle As Long, ByRef lpBuffer As Byte, ByVal dwBytesToWrite As Long, ByRef lpdwBytesWritten As Long) As Integer
Public Declare Function SI_SetTimeouts Lib "SiUSBXp.dll" (ByVal dwReadTimeout As Long, ByVal dwWriteTimeout As Long) As Integer
Public Declare Function SI_GetTimeouts Lib "SiUSBXp.dll" (ByRef lpdwReadTimeout As Long, ByRef lpdwWriteTimeout As Long) As Integer
Public Declare Function SI_CheckRXQueue Lib "SiUSBXp.dll" (ByVal cyHandle As Long, ByRef lpdwNumBytesInQueue As Long, ByRef lpdwQueueStatus As Long) As Integer

'Masks for the serial number and description
Public Const SI_RETURN_SERIAL_NUMBER = &H0
Public Const SI_RETURN_DESCRIPTION = &H1

'Masks for return values from the device
Public Const SI_SUCCESS = &H0
Public Const SI_DEVICE_NOT_FOUND = &HFF
Public Const SI_INVALID_HANDLE = &H1
Public Const SI_READ_ERROR = &H2
Public Const SI_RX_QUEUE_NOT_READY = &H3
Public Const SI_WRITE_ERROR = &H4
Public Const SI_RESET_ERROR = &H5
Public Const SI_INVALID_BUFFER = &H6
Public Const SI_INVALID_REQUEST_LENGTH = &H7
Public Const SI_DEVICE_IO_FAILED = &H8

Public Const SI_QUEUE_NO_OVERRUN = &H0
Public Const SI_QUEUE_OVERRUN = &H1
Public Const SI_QUEUE_READY = &H2

Public Const SI_MAX_DEVICE_STRLEN = 256
Public Const SI_MAX_READ_SIZE = 64
Public Const SI_MAX_WRITE_SIZE = 64

Public Const INVALID_HANDLE_VALUE = &H1

Public Const MAX_PACKET_SIZE = &H40
Public Const MAX_WRITE_PKTS = &H8

Public Const FT_READ_MSG = &H0
Public Const FT_WRITE_MSG = &H1
Public Const FT_READ_ACK = &H2
Public Const FT_MSG_SIZE = &H3

'Variables used within the project
Global hUSBDevice  'global handle that is set when connected with the usb device
Global Status      'status, value to set when communicating with the board to determine success
Global TempString  'tempstring, contains the value of the file when performing a read

Public Const IOBufSize = 12
Global IOBuf(IOBufSize) As Byte 'io buffer; bits are defined as follows:
'IOBuf(0) = LED1
'IOBuf(1) = LED2
'IOBuf(2) = Port
'IOBuf(3) = Analog1
'IOBuf(4) = Analog2
'IOBuf(5,6,7) = Unused
'IOBuf(8,9,10,11) = Number Of Interrupts

Public Function ConvertToVBString(Str)

    Dim NewString As String
    Dim i As Integer
   
    'for the received string array, loop until we get
    'a 0 char, or until the max length has been obtained
    'then add the ascii char value to a vb string
    i = 0
    Do While (i < SI_MAX_DEVICE_STRLEN) And (Str(i) <> 0)
        NewString = NewString + Chr$(Str(i))
        i = i + 1
    Loop
   
    ConvertToVBString = NewString
   
End Function


Public Function DeviceWrite(Buffer() As Byte, dwSize As Long, lpdwBytesWritten As Long, dwTimeout As Long) As Boolean
    Dim TmpReadTO As Long
    Dim TmpWriteTO As Long
    Dim Stat As Integer
    Dim WriteStatus As Integer
   
    'save timeout values to replace after the write
    Stat = SI_GetTimeouts(TmpReadTO, TmpWriteTO)
    Stat = SI_SetTimeouts(0, dwTimeout)
   
    WriteStatus = SI_Write(hUSBDevice, Buffer(0), dwSize, lpdwBytesWritten)
   
    'replace timeouts
    Stat = SI_SetTimeouts(TmpReadTO, TmpWriteTO)
   
    If WriteStatus = SI_SUCCESS Then
        DeviceWrite = True
    Else
        DeviceWrite = False
    End If
  
End Function



Public Function DeviceRead(Buffer() As Byte, dwSize As Long, lpdwBytesRead As Long, dwTimeout As Long) As Boolean

    Dim TmpReadTO As Long
    Dim TmpWriteTO As Long
    Dim Stat As Integer
    Dim ReadStatus As Integer
    Dim QueueStatus As Long
    Dim BytesInQueue As Long
    Dim QueueStatNAndQueueReady As Long
    Stat = SI_SUCCESS
    QueueStatus = SI_QUEUE_NO_OVERRUN
    BytesInQueue = 0
   
    'save the timeout values to replace after the read
    Stat = SI_GetTimeouts(TmpReadTO, TmpWriteTO)
   
    If dwTimeout = 0 Then
        'wait forever until queue ready
        'QueueStatNAndQueueReady = Not (QueueStatus And SI_QUEUE_READY)
        Do While (Stat = SI_SUCCESS) And (QueueStatus <> SI_QUEUE_READY)
            Stat = SI_CheckRXQueue(hUSBDevice, BytesInQueue, QueueStatus)
            'QueueStatNAndQueueReady = Not (QueueStatus And SI_QUEUE_READY)
        Loop
    Else
        'set a timeout for the read
        Stat = SI_SetTimeouts(dwTimeout, 0)
    End If

    'read in the ack
    If Stat = SI_SUCCESS Then
        ReadStatus = SI_Read(hUSBDevice, Buffer(0), dwSize, lpdwBytesRead)
    End If
   
    'restore timeouts
    Stat = SI_SetTimeouts(TmpReadTO, TmpWriteTO)

    If ReadStatus = SI_SUCCESS Then
        DeviceRead = True
    Else
        DeviceRead = False
    End If
   
End Function

Public Sub MemSet(Buffer() As Byte, Value As Byte, Amount As Long)
   
    'this function sets all elements of on array to 0
    Dim i
   
    For i = 0 To (Amount - 1)
        Buffer(i) = Value
    Next
   
End Sub
回复 顶

使用道具 举报

发表于 2007-1-23 18:04:47 | 显示全部楼层
Public Declare Function SI_GetTimeouts Lib "SiUSBXp.dll" (ByRef lpdwReadTimeout As Long, ByRef lpdwWriteTimeout As Long) As Integer
首先你不用讲的那么....这里是大家交流的地方
我就拿一个给你讲一吧
在LV里,你通过CALL节点设用这个DLL,
这里ByRef lpdwReadTimeout As Long指 lpdwReadTimeout 为I32型,整个函数返回值为I32型
当然一些特殊的有可能是U32,这个你可以试。
Public Const SI_QUEUE_READY = &H2
这个在VB调用Const SI_QUEUE_READY 的地方在LV中将16进制的2换进去,
Public Const SI_MAX_DEVICE_STRLEN = 256
这个则为十进直接换进去
对于LV中DLL使用
你可以看下面的连接
http://www.cpubbs.com/bbs/viewth ... 06&highlight=dl
回复 顶

使用道具 举报

 楼主| 发表于 2007-1-23 23:15:39 | 显示全部楼层
非常感谢  那些资料我们已经详细看过

但是我们这个项目不用数据采集卡,是用USB  在调用dll库函数的时候我们不知如何下手

望高手指点迷津!
回复 顶

使用道具 举报

发表于 2007-10-24 16:36:13 | 显示全部楼层
我也是遇到一样的问题
我dll里面的函数会调用了
就是SI_write(1,2,3,4)的第2个参数不会设置,
有谁做过请指点我一下
谢谢了!
回复 顶

使用道具 举报

发表于 2007-10-25 08:44:32 | 显示全部楼层
在LV里面调用dll相当麻烦了
哎!
我做过一个这样的
首先你要对dll文件本身有一定的了解
对于函数的输入输出数据要有一定的认识
然后参考头文件进行配置参数
我懂的也不多
做出来纯熟偶然
呵呵
不过大部分数据都是I32之类的
反复尝试,
相信你会成功的
呵呵
回复 顶

使用道具 举报

发表于 2007-10-25 08:49:42 | 显示全部楼层
其实关于USB的问题
是那么的USB协议不符合USBTMC协议
而USBTMC是2003年列入VISA的
现在的VISA要么是NI编写的
要么是一个美国仪器公司编写的
我们国人没有自己开发的VISA
都要设计成符合他们的
郁闷
不过我相信我们以后会有的
呵呵
因为有俺......


们公司
回复 顶

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2026-10-1 05:37 , Processed in 0.047213 second(s), 9 queries , Gzip On, File On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表