Need help with Windows XP install of ops Well, after being in Linux for a few years, I have another computer with just Windows on it as well now. I have the GUI'd version of mediadownload running on my Linux box (SaturnNights did avidownload, I just modified it to include the still camera and made it a GUI). Now I want to get it going on my Windows box. I thought I'd start with ops, since I would get libusb with that (I already have the GTK stuff I need for Windows). So.....I downloaded ops-0.23 but now I'm completely lost as to actually install what I unzipped - I guess I've been away from Windows too long (grin). So, can someone help an old duffer who has read the how-to's, etc., but for some reason still can't figure this out.
I'd like the absolute newest version of Ops that will run on Windows XP with SP3.
Thanks in advance!
Dave :)
CamCam- 10-17-2008
If your talking just about Ops, it is stand alone. Just run it with the correct version of Libusb. If your having troubles with Libusb, I suggest you download the exe version and install it as it is the easiest way to me. Also don't forget the inf wizard for your camcorder and camera drivers. I run Vista and I have to manually copy the libusb0.sys and libusb0.dll to my camera's inf location.
By the way I run version 1.10.1 libusb on Vista and it works perfectly.
anewguy- 10-17-2008
Here's my output from trying to run ops:
Microsoft Windows XP
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\Valued Customer>cd \dave stuff
The system cannot find the path specified.
C:\Documents and Settings\Valued Customer>cd \
C:\>cd daves stuff
C:\daves stuff>cd ops-0.23
C:\daves stuff\Ops-0.23>ls
'ls' is not recognized as an internal or external command,
operable program or batch file.
C:\daves stuff\Ops-0.23>dir
Volume in drive C has no label.
Volume Serial Number is 4668-AD3B
Directory of C:\daves stuff\Ops-0.23
10/17/2008 03:35 PM <DIR> .
10/17/2008 03:35 PM <DIR> ..
04/18/2007 05:52 PM 7,470 Changelog.txt
10/30/2003 06:15 AM 15,425 GPL.txt
10/17/2008 03:37 PM <DIR> Ops-source
12/30/2007 12:08 PM 380,928 Ops_libusb-0.1.10.1.exe
12/30/2007 12:08 PM 380,928 Ops_libusb-0.1.12.1.exe
12/30/2007 12:08 PM 380,928 Ops_libusb-0.1.8.0.exe
12/30/2007 12:08 PM 380,928 Ops_libusb-cvs20041118.exe
6 File(s) 1,546,607 bytes
3 Dir(s) 148,345,688,064 bytes free
C:\daves stuff\Ops-0.23>ops_libusb-0.10.1.exe
'ops_libusb-0.10.1.exe' is not recognized as an internal or external command,
operable program or batch file.
C:\daves stuff\Ops-0.23>
I think I remember in the past (quite a while ago) trying to do this in Windows 98SE, and it had something I ran first which put the libusb stuff in the correct places - somewhere in c:\program files. I know I'll still need the camera defs to use ops, but I'm mainly concerned with getting the libusb stuff installed and -*test*-('")ing ops, then moving on to my application from Linux using libusb and GTK+.
Dave
CamCam- 10-17-2008
Are you trying to run it from the command line? If so, maybe the filename is to long or has to many unusual characters. Try renaming it to a simple name. Ops is a windows app and doesn't have to be ran from the command line, unless that's what you are going for. Regardless if libusb is installed or not, Ops will attempt to start and throw out an error or something. It is possible it could be related to SP3, but I don't have an SP3 machine so I can't help you there.
The problems with Win 98 shouldn't be apparent in XP, since 98 had crappy usb support in my opinion.
MrBeReady- 10-18-2008
12/30/2007 12:08 PM 380,928 Ops_libusb-0.1.10.1.exe
<snip>
C:\\daves stuff\\Ops-0.23>ops_libusb-0.10.1.exe
'ops_libusb-0.10.1.exe' is not recognized as an internal or external command,
operable program or batch file.
It appears you missed ".1" when trying to run the .exe at the command prompt. It's Ops_libusb-0.1.10.1.exe, not Ops_libusb-0.10.1.exe.
SaturnNiGHTS- 10-18-2008
xp's command interpreter allows tab complete, like bash does.
anewguy- 10-19-2008
Thanks, SaturnNights - I did get ops to run now. I now have another problem perhaps you can help me with (I made another thread but I'll go ahead here anyway).
I installed all of mingw stuff so I have all of gcc, etc., available in Windows. I also installed the GTK stuff for Windows, though pointing to it is a bit of a challenge. Right now, I'm just trying to compile the command line version of my modified avidownload - the one that does both the camcorders and the cameras. After that I'll try to tackle to GTK version. At any rate, I copied the libusb.lib file from ops to c:\libusb. On the gcc line for Windows I have -Lc:\libusb, but in the scan of the files gcc reports back that none of the usb* functions are defined. Since I'm far from a genius here, I was *HOPING* maybe you, BillW, or someone could point me in the right direction so I can get it to find those definitions and move into the real compilation phase. It's almost as if a usb header file isn't being found, even though I copied usb.h from ops. Any ideas to help a dumb guy out?
Thanks!
Dave :)
EDIT: I found out I had the wrong syntax for the gcc line in mingw. I changed that to point to the libusb lib and header installed by the filter package. Getting further, but it is giving me errors about some things declared in the ops-linux.h file I brought over along with the source. Did you have any problems bringing over the ops-linux header file?
Here's the error:
for line 213 in ops-linux.h:
syntax error before '*' token
followed by warning for same line:
data definition has no type or storage class
The ops-linux.h file follows:
#ifndef CERES_H
#define CERES_H
////////////////////////////////////////////////////////
// big-endian and little-endian
#define bswap16(x) ((unsigned short)( (((x)&0xffu)<<8u) | (((x)>>8u)&0xffu) ))
#define bswap32(x) (\
((x)&0xff000000u) >> 24 \
| \
((x)&0x00ff0000u) >> 8 \
| \
((x)&0x0000ff00u) << 8 \
| \
((x)&0x000000ffu) << 24 \
)
// these are compiler-defined, so we put this section BEFORE the includes
#if defined(_WIN32) || defined(_WIN64)
#define __BYTE_ORDER 1
#define __BIG_ENDIAN 0
#define __LITTLE_ENDIAN 1
#elif defined(__APPLE__) && defined(__MACH__)
#include <machine/endian.h>
#else
#include <endian.h>
#endif
#if __BYTE_ORDER == __BIG_ENDIAN
# define cpu_to_le32(x) bswap32(x)
# define le32_to_cpu(x) bswap32(x)
# define cpu_to_le16(x) bswap16(x)
# define le16_to_cpu(x) bswap16(x)
# define cpu_to_be32(x) (x)
# define be32_to_cpu(x) (x)
# define cpu_to_be16(x) (x)
# define be16_to_cpu(x) (x)
#else
# define cpu_to_le32(x) (x)
# define le32_to_cpu(x) (x)
# define cpu_to_le16(x) (x)
# define le16_to_cpu(x) (x)
# define cpu_to_be32(x) bswap32(x)
# define be32_to_cpu(x) bswap32(x)
# define cpu_to_be16(x) bswap16(x)
# define be16_to_cpu(x) bswap16(x)
#endif
#define Log(...) do { fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n"); } while (0)
#define TRUE 1
#define FALSE 0
#include <stdint.h>
#include <usb.h>
#include <stdio.h>
#include <string.h>
typedef uint8_t u8;
typedef uint16_t u16;
typedef uint32_t u32;
#define DEFAULT_CONFIGURATION 1
#define DEFAULT_INTERFACE 0
#define DEFAULT_ALT_INTERFACE 0
#define FILESYS_DELIM "/"
#define CVSUTIL "cvsutil"
#define SATURNDOWNLOAD "saturn_vids"
#define PV2_DOWNLOAD "pv2_pics"
#define FIFILE 0
#define FIDIR 1
#define FIPART 2
#define FIROOT 3
#ifndef LIBUSB_PATH_MAX //libusb may define it already
#define LIBUSB_PATH_MAX 4096
#endif
#define BUFSIZE 4096
#define LINUX_BUFSIZE 64
#define SECTOR_SIZE 512
#define TIMEOUT 5000
#define SHORT_TIMEOUT 500
#define LONG_TIMEOUT 5000
#define CAM_STIMEOUT 3000
#define CAM_LTIMEOUT 14000
#define STRINGSIZE 128
#define CAMCORDER_VENDOR 0x167B
#define CAMERA_VENDOR 0x0DCA
#define VENDOROLD 0x04C5
#define READ_ENDPOINT 0x81
#define WRITE_ENDPOINT 0x81
#define CAMERA_READ_ENDPOINT 0x81
#define CAMERA_WRITE_ENDPOINT 0x01
#define MAX_NUMBER_OF_FILES_IN_DIRECTORY 1000
// FAT code follows
// excerpt from FlushedSector fs@proglang.cjb.net header file. Last updated 2001-11-24
#pragma pack (push, 1) // Force 1 byte structure packing
typedef unsigned char byte; /* 1 byte */
typedef unsigned short word; /* 2 bytes */
typedef unsigned int dword; /* 4 bytes */
// Partition Table Entry, 16 bytes
typedef struct
{
byte State;
byte StartingHead;
word StartingSector:6;
word StartingCylinder:10;
byte Type;
byte EndingHead;
word EndingSector:6;
word EndingCylinder:10;
dword RelativeSectors;
dword NumberOfSectors;
} PartitionTable;
// Master Boot Record, 512 bytes
typedef struct
{
byte ExecutableCode<446>;
PartitionTable Partiton<4>;
word Signature; /*=AA55*/
} MasterBootRecord;
// FAT Boot Record, 512 bytes
typedef struct
{
byte JumpInstruction<3>;
byte OEMID<8>;
word BytesPerSector;
byte SectorsPerCluster;
word ReservedSectors;
byte FATs;
word RootEntries;
word SmallSectors;
byte Media;
word FATSize;
word TrackSize;
word Heads;
dword HiddenSectors;
dword LargeSectors;
byte DriveNumber;
byte CurrentHead;
byte Signature;
dword ID;
byte VolumeLabel<11>;
byte SystemID<8>;
byte LoadInstructions<448>; // 512-64
word BR_Signature; /*=AA55h*/
} BootRecord;
// Time-field in DirEntry, 4 bytes
typedef struct
{
word Sec :5;
word Min :6;
word Hour :5;
word Day :5;
word Month :4;
word Year :7;
} FileTime;
// DirectoryEntry DOS Attributes in a, 1 byte
typedef struct
{
byte ReadOnly :1;
byte Hidden :1;
byte System :1;
byte VolumeID :1;
byte Directory :1;
byte Archive :1;
byte reserved :2;
} FileAttributes;
// Directory entry, 32 bytes
typedef struct
{
char Name<8>;
char Ext<3>;
FileAttributes Attributes;
byte reserved<8>;
word EA_Index;
FileTime Time;
word EntryCluster;
dword Size;
} DirEntry;
MasterBootRecord g_MBR;
BootRecord g_Boot;
unsigned char g_fat<3*512>;
unsigned short g_cluster<1024>;
usb_dev_handle* m_p_handle;
struct usb_device* m_usb_device;
typedef struct file_info { //each one of these is at least 4000 bytes... :(
char filename;
int filesize;
char fullpath;
char dirpath;
int partition;
int filetype;
struct file_info* children; //the culprit
int number_of_children;
} file_info;
#pragma pack(push,1)
typedef struct camera_command {
u8 header<4>; //"LaMS" // 0-4
u8 magic<4>; // 4-8
u32 length; // 8-12
u8 flags; //12-13
u8 lun; //13-14
u8 data_length; //14-15
u8 command; //15-16
u8 unknown; //16-17
u8 data<14>; //17-31
} camera_command;
typedef struct camera_status {
u8 header<4>; //"LaMS" // 0-4
u8 magic<4>; // 4-8
u8 dCSWDataResidue<4>; // 8-12
u8 status; // 12-13
} camera_status;
#pragma pack(pop)
#endif
I'm very raw at this so I know I must be doing something stupid or there is something Linux understands but Windows doesn't or something. If anyone can shed any light on this it would be greatly appreciated!!
Thanks!
Dave
Forumer™ is Voted #1 Free Forum Hosting provider
Build your own community today with the largest message board hosting company.