streaming with tc-08 and using excel

 
Post new topic   Reply to topic    Pico Technology Forum Index -> General Software Discussions
Author Message
gabi
Guest





PostPosted: Tue Jul 12, 2005 10:25 am    Post subject: streaming with tc-08 and using excel Reply with quote

I'm trying to read values into an excel sheet while streaming with tc-08 (usb) but get the message "Not enough memory" or somethimes the application just closes.
I'm using XP Professional SP1 on a Pentium 2,8 GHz with 504 MB Ram.
I've tried to shut down all other applications but I'm not authorized to shut down F-secure as long as my computer is in the network. Could this be the problem? Is it processor capacity or Ram that give me problems?

The code works fine in while debugging so that's not the problem.
Back to top
Sarah
Guest





PostPosted: Wed Jul 13, 2005 12:48 pm    Post subject: Reply with quote

Hi

Thank you for your post.

Are you using our example? If not then try using ours to see if this works. Let me know how you get on with this.

Best Regards
Back to top
Guest






PostPosted: Fri Jul 15, 2005 6:08 am    Post subject: Reply with quote

Hi!

Yes we have tried with your example and it's working fine, but it' s just single mode and we need to use streaming mode, so now we have modified it a little.

Instead of your Timer1_timer -function we use this function. (for the moment just with two channels)



Code:
Private Sub Get_Readings()
   
  ReDim temp_buffer(1000) As Single
  Dim times_ms_buffer(9) As Long
  Dim overflow_flag(9) As Integer
  Dim channel As Integer
  Dim nr_of_readings As Integer
  Dim counter As Integer
  Dim r As Integer 
  Dim k As Variant 
   
 
    If (Not in_timer) Then
      in_timer = True
   
    For channel = 0 To 1 Step 1
     
        nr_of_readings = usb_tc08_get_temp(tc08_handle, temp_buffer(channel), times_ms_buffer(channel), 800, overflow_flag(channel), channel, 0, 0)
       
        If (nr_of_readings) > 0 Then
       
            counter = 0
            r = rw(channel)
            k = clmn(channel)
               
                Do
                    Cells(r, k).Value = temp_buffer(counter)
                    counter = counter + 1
                    r = r + 1
                Loop While counter < nr_of_readings
                rw(channel) = r
       
        ElseIf nr_of_readings < 0 Then
                Cells(6, "I").Value = "Get Readings, Error Code: " & usb_tc08_get_last_error(tc08_handle)
               
                in_timer = False
                Call Stop_Streaming
                Call Close_tc08
                Exit Sub
               
        Else
            Cells(7, "I").Value = "Nr of readings from channel (channel) = 0"
           
       
        End If
           
    'ReDim temp_buffer(1000) As Single
    Next channel
     
    'Cells(10, "I").Value = times_ms_buffer()
   
    in_timer = False
       
    End If
 
 
   If running > 0 Then
        Application.OnTime Now + TimeValue("00:00:30"), "Get_Readings"
   End If
   
End Sub 


Following arrays are used to take care of where to write the results on the excel sheet. They are defined under the Open_tc08 -function.

rw = Array(12, 12, 12, 12, 12, 12)
clmn = Array("A", "B", "C", "D", "E", "F")

What about the size of temp_buffer. Is it too small? I'm not really sure about how it works.

I've tried with slower streaming, like 30 ms and then manually debugged the code, and it works fine.

From monday I'm on vacation four weeks so nothing happens here until after that, but I really hope we could solve this problem in august.

Regards
Gabi
Back to top
gabi
Guest





PostPosted: Tue Sep 06, 2005 12:39 pm    Post subject: Reply with quote

Hello!

I've still not found out what the problem is. Could anybody help me.

Is there some problem with my code? It's in this part (see below) that the program just closes. Or is the problem just that streaming and excel/vba doesn't go together ?? Please help. As I wrote before there is no problem in single mode.

Code:
For channel = 0 To 4 Step 1
     
        nr_of_readings = usb_tc08_get_temp(tc08_handle, temp_buffer(channel), times_ms_buffer, 500, overflow_flag(channel), channel, 0, 0)
       
        If (nr_of_readings) > 0 Then
         
            i = 0
            r = rw(channel)
            k = clmn(channel)
            Cells(11, k).Value = nr_of_readings
                             
            Do Until i = nr_of_readings
                Cells(r, k).Value = temp_buffer(i)
                i = i + 1
                r = r + 1
            Loop
            rw(channel) = r
       
       
            'For i = 1 To nr_of_readings
                'result(i, channel) = temp_buffer(channel)
           
            'Next i
       
          End If
           
    Next channel


Regards
gabi
Back to top
Guest






PostPosted: Tue Sep 06, 2005 12:40 pm    Post subject: Reply with quote

gabi wrote:
Hello!

I've still not found out what the problem is. Could anybody help me.

Is there some problem with my code? It's in this part (see below) that the program just closes. Or is the problem just that streaming and excel/vba doesn't go together ?? Please help. As I wrote before there is no problem in single mode.

Code:
For channel = 0 To 4 Step 1
     
        nr_of_readings = usb_tc08_get_temp(tc08_handle, temp_buffer(channel), times_ms_buffer, 500, overflow_flag(channel), channel, 0, 0)
       
        If (nr_of_readings) > 0 Then
         
            i = 0
            r = rw(channel)
            k = clmn(channel)
            Cells(11, k).Value = nr_of_readings
                             
            Do Until i = nr_of_readings
                Cells(r, k).Value = temp_buffer(i)
                i = i + 1
                r = r + 1
            Loop
            rw(channel) = r
                       
          End If
           
    Next channel


Regards
gabi
Back to top
Michael
Guru
Guru


Joined: 07 Jul 2005
Posts: 93
Location: St Neots, Cambridgeshire

PostPosted: Wed Sep 07, 2005 9:52 am    Post subject: Reply with quote

Hello Gabi,

Thank you for your post.

Try the usb_tc08_get_last_error command. If you get a error code 3 returned, you will need to add the following function declaration and remove or comment the previous version.

Declare Function usb_tc08_get_single Lib "c:\usbtc08.dll" (ByVal handle As Integer, temp As Single, ByRef overflow_flags, ByVal units As Integer) As Integer

If this does not solve your problems, please get back to us.

Best regards,
Michael
Back to top
gabi
Guest





PostPosted: Thu Sep 08, 2005 7:52 am    Post subject: Reply with quote

Thank you for your answer!

Now It's working a little better with the other declaration (error code was 3), but I still have problems with "Not enough memory". I think it could be something in my code.

When finding out how many readings there is from every channel i use this function:
Code:

Dim temp_buffer(9) As Single
nr_of_readings = usb_tc08_get_temp(tc08_handle, temp_buffer(channel), times_ms_buffer, 500, overflow_flag(channel), channel, 0, 0)

where channel is 0 to 9

But how do I retrieve the values of the readings for the channels. I can't really figure this out. I've tried to read the example for streaming mode but there is just this part, and then it says that "now do something with the readings". I've tried looping through the temp_buffer variable like you can see in my code above. Is that the right way to do it? How do I define the temp_buffer variable?

Hoping for answers
gabi
Back to top
Michael
Guru
Guru


Joined: 07 Jul 2005
Posts: 93
Location: St Neots, Cambridgeshire

PostPosted: Thu Sep 08, 2005 2:59 pm    Post subject: Reply with quote

Hello Gabi,

Thank you for your post.

Nearly there! You will need to set up each channel that you wish to use. The usb_tc08_set_channel command must be called for each channel. You can then call the usb_tc08_run command to start streaming all like this:
Sub Open_Click()
Dim ok As Integer

If (tc08_handle < 1) Then
Cells(14, "E").value = "Opening TC-08"
tc08_handle = usb_tc08_open_unit()
If (tc08_handle > 0) Then
Cells(14, "E").value = "TC-08 opened"
Call usb_tc08_set_mains(tc08_handle, True)
ok = usb_tc08_set_channel(tc08_handle, 0, Asc("k")) 'Set for each ch
ok = usb_tc08_set_channel(tc08_handle, 1, Asc("k"))
ok = usb_tc08_set_channel(tc08_handle, 2, Asc("k"))
ok = usb_tc08_run(tc08_handle, 1000) 'Start streaming!
'Call Timer1_Timer 'Not required
Else
If (tc08_handle = 0) Then
Cells(14, "E").value = "Unable to open TC-08"
Else
Cells(14, "E").value = "Error Code: " & usb_tc08_get_last_error(0)
End If
End If
End If

You can now call your Get_Readings sub to start!

Best regards,
Michael
Back to top
Guest






PostPosted: Wed Sep 21, 2005 9:57 am    Post subject: Reply with quote

Hello again!

Yes, I have already that code. It's the looping throug the temp_buffer that's the problem.

When finding out the number of readings, should temp_buffer be defined like "Dim temp_buffer(9)" if I use nine channels?
Code:

nr_of_readings = usb_tc08_get_temp(tc08_handle, temp_buffer(channel), times_ms_buffer, 500, overflow_flag(channel), channel, 0, 0)


But how can I use the same variable when retreiving the readings?
Do I instead have to define the temp_variable so it can hold 500 readings or so?

Code:

Do Until i = nr_of_readings + 1
                Cells(r, k).Value = temp_buffer(i)
                i = i + 1
Loop


Because it's at this part of the code that i get the error message "Not enough memory", or Excel just shuts down. Please help, I really have problem understanding this part.

regards
Gabi
Back to top
Display posts from previous:   
Post new topic   Reply to topic    Pico Technology Forum Index -> General Software Discussions
All times are GMT
Page 1 of 1

 


Pico Technology topic RSS feed 
Powered by phpBB © 2001, 2005 phpBB Group