OpenCores
URL https://opencores.org/ocsvn/ft2232hcore/ft2232hcore/trunk

Subversion Repositories ft2232hcore

[/] [ft2232hcore/] [trunk/] [pc_test_app/] [main.cpp] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 wes314
 
2
#include <stdio.h>
3
#include <time.h>
4
#include <windows.h>
5
 
6
#include "ftd2xx.h"
7
#include "types.h"
8
 
9
 
10
#pragma comment(lib, "ftd2xx.lib")
11
 
12
 
13
int main(void)
14
{
15
        FT_HANDLE ftHandle;
16
 
17
        FT_STATUS ftStatus = FT_Open (0, &ftHandle);
18
 
19
        if (!FT_SUCCESS(ftStatus))
20
        {
21
                printf("Unable to open USB device\n");
22
                return 0;
23
        }
24
 
25
        FT_Purge(ftHandle, FT_PURGE_RX | FT_PURGE_TX);
26
        FT_SetBitMode(ftHandle, 0, 0x40); // Single Channel Synchronous 245 FIFO Mode
27
        FT_SetUSBParameters(ftHandle, 32768, 4096);
28
        FT_SetResetPipeRetryCount(ftHandle, 100);
29
        FT_SetFlowControl(ftHandle, FT_FLOW_RTS_CTS, 0, 0);       //Required to avoid data loss, see appnote "an_130_ft2232h_used_in_ft245 synchronous fifo mode.pdf"
30
        FT_SetTimeouts(ftHandle, 500, 0);
31
 
32
        unsigned long start = GetTickCount();
33
        unsigned long last = start;
34
        unsigned char buffer[4096];
35
        int filesize = 0;
36
        int errors = 0;
37
        unsigned char sequence = 0;
38
        bool initialised = false;
39
 
40
 
41
        while(true)
42
        {
43
                DWORD BytesRead = 0;
44
 
45
                if (FT_Read (ftHandle, buffer, sizeof(buffer), &BytesRead) != FT_OK)
46
                        break;
47
 
48
                for (uint32_t i = 0; i < BytesRead; i++)
49
                {
50
                        uint8_t c = buffer[i];
51
 
52
                        sequence++;
53
 
54
              if (!initialised)
55
                {
56
                                sequence = c;
57
                                initialised = true;
58
                        }
59
 
60
                        if (c != sequence)
61
                        {
62
                                errors++;
63
                                sequence = c;
64
                        }
65
                }
66
 
67
                filesize += BytesRead;
68
 
69
                unsigned long current = GetTickCount();
70
 
71
                if (current - last >= 500)
72
                {
73
                        double kbsec = (double) ((double) filesize / 1000) / ((double) (current - start) / 1000);
74
                        int timepassed = (current - start) / 1000;
75
 
76
                        printf("Sec:%d Errors: %d Size:%dKb Rate:%.1fKb/s       \r", timepassed, errors, filesize/1000, kbsec);
77
                        fflush(stdout);
78
 
79
                        last = current;
80
                }
81
        }
82
 
83
        FT_SetBitMode(ftHandle, 0, 0);
84
 
85
        FT_Close(ftHandle);
86
 
87
        return 0;
88
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.