public override bool start(uint index) { Monitor.Enter(mLock); try { uint i = 0; uint devCount = SiUSBController.count(); for (uint j = 0; j < devCount; j++) { var vidSB = new StringBuilder(); var pidSB = new StringBuilder(); if (SiUSBController.getVID(j, vidSB) > 0 && SiUSBController.getPID(j, pidSB) > 0) { string vidString = vidSB.ToString(); string pidString = pidSB.ToString(); var vidHex = Util.getHexBytes(vidString); var pidHex = Util.getHexBytes(pidString); Array.Reverse(vidHex); Array.Reverse(pidHex); ushort vID = BitConverter.ToUInt16(vidHex, 0); ushort pID = BitConverter.ToUInt16(pidHex, 0); if (vID == (ushort)VendorID && pID == (ushort)ProductID) { if (i == index) { if (SiUSBController.open(j, ref mDeviceHandle) == false) { Console.WriteLine("SiUSBController.start() : Failed open (SiUSB index : {0})", j); Monitor.Exit(mLock); this.stop(); return(false); } Console.WriteLine("SiUSBController.start() : Success open (SiUSB index : {0})", j); mThreadState = true; mThread = new Thread(threadFunc); mThread.Start(); Monitor.Exit(mLock); return(true); } i++; } } } } catch (Exception e) { Console.WriteLine("SiUSBController.start() : Failed catch({0})", e.Message); } Monitor.Exit(mLock); this.stop(); return(false); }
private static int getPID(uint index, StringBuilder builder) { try { if (index >= SiUSBController.count()) { return(-100); } var status = SIUSBXP.SI_GetProductString(index, builder, SIUSBXP.SI_RETURN_PID); return((status == SIUSBXP.SI_SUCCESS) ? 1 : -1); } catch { } return(-200); }
private static bool open(uint index, ref IntPtr deviceHandle) { try { if (index >= SiUSBController.count()) { return(false); } var status = SIUSBXP.SI_Open(index, ref deviceHandle); return(status == SIUSBXP.SI_SUCCESS); } catch { } return(false); }
public static uint getDeviceCount(USBVendorID vendorID, USBProductID productID) { uint count = 0; try { uint devCount = SiUSBController.count(); for (uint i = 0; i < devCount; i++) { var vidSB = new StringBuilder(); var pidSB = new StringBuilder(); if (SiUSBController.getVID(i, vidSB) > 0 && SiUSBController.getPID(i, pidSB) > 0) { string vidString = vidSB.ToString(); string pidString = pidSB.ToString(); Console.WriteLine("SiUSBController.getDeviceCount() : SiUSB index({0}), VendorID(0x{1:X4}), ProductID(0x{2:X4})", i, vidString, pidString); var vidHex = Util.getHexBytes(vidString); var pidHex = Util.getHexBytes(pidString); Array.Reverse(vidHex); Array.Reverse(pidHex); ushort vID = BitConverter.ToUInt16(vidHex, 0); ushort pID = BitConverter.ToUInt16(pidHex, 0); if (vID == (ushort)vendorID && pID == (ushort)productID) { count++; } } } } catch { } return(count); }
public override bool start() { Monitor.Enter(mLock); try { uint count = SiUSBController.count(); if (count == 0) { Console.WriteLine("SiUSBController.start() : USB device is zero"); Monitor.Exit(mLock); this.stop(); return(false); } Console.WriteLine("SiUSBController.start() : USB device count({0})", count); bool isDeviceOpen = false; for (uint i = 0; i < count; i++) { var vidSB = new StringBuilder(); var pidSB = new StringBuilder(); if (SiUSBController.getVID(i, vidSB) > 0 && SiUSBController.getPID(i, pidSB) > 0) { string vidString = vidSB.ToString(); string pidString = pidSB.ToString(); Console.WriteLine("SiUSBController.start() : Device index({0}), VendorID(0x{1:X4}), ProductID(0x{2:X4})", i, vidString, pidString); var vidHex = Util.getHexBytes(vidString); var pidHex = Util.getHexBytes(pidString); Array.Reverse(vidHex); Array.Reverse(pidHex); ushort vID = BitConverter.ToUInt16(vidHex, 0); ushort pID = BitConverter.ToUInt16(pidHex, 0); if (vID == (ushort)VendorID && pID == (ushort)ProductID) { if (SiUSBController.open(i, ref mDeviceHandle) == true) { Console.WriteLine("SiUSBController.start() : Success open({0})", i); isDeviceOpen = true; break; } else { Console.WriteLine("SiUSBController.start() : Failed open({0})", i); } } } } if (isDeviceOpen == false) { Console.WriteLine("SiUSBController.start() : Failed device open"); Monitor.Exit(mLock); this.stop(); return(false); } mThreadState = true; mThread = new Thread(threadFunc); mThread.Start(); Monitor.Exit(mLock); return(true); } catch (Exception e) { Console.WriteLine("SiUSBController.start() : Failed catch({0})", e.Message); Monitor.Exit(mLock); this.stop(); return(false); } }