public bool InitDriver() { try { int res = mLib.MV_Usb2Init(string.Format("MVCCamera{0}", devIndex), out devIndex, ref capinfo, out handle); if (res == 0 && handle != IntPtr.Zero) { IsInit = true; res = mLib.MV_SetUsb2ADCMode(handle, luminance); DevType type = DevType.MVC1000MF; res = mLib.MV_Usb2GetDeviceType(handle, ref type); sourceName = type.ToString() + devIndex.ToString(); //res = mLib.MV_Usb2SetMirrorMode(handle, 1);//采集数据进行水平垂直翻转 bit0 水平镜像 bit1 垂直镜像 效率较低 return(res == 0); } else { return(false); } } catch { UninitDriver(); return(false); } }
static void Main(string[] args) { Char last_c = '\0'; uint id = 0; string line; DevType type = DevType.vJoy; int hDev = 0; joystick = new vGen(); // Print device' status dev_stat(); // Get type of device Console.WriteLine("\n\nvJoy or vXbox [J/X]?"); ConsoleKeyInfo key = Console.ReadKey(); last_c = Char.ToUpper(key.KeyChar); if (last_c == 'X') { type = DevType.vXbox; } //get device ID Console.WriteLine("\n\nDevice ID [1-16]?"); line = Console.ReadLine(); if (line.Length == 0) { Console.WriteLine("\n\nDevice ID <empty>, exiting?"); return; } id = Convert.ToUInt32(line); // Verify ID if (id < 1) { Console.WriteLine("\n\nDevice ID negative, exiting?"); return; } if ((type == DevType.vXbox) && (id > 4)) { Console.WriteLine("\n\nDevice ID is greater than 4, exiting?"); return; } if ((type == DevType.vJoy) && (id > 16)) { Console.WriteLine("\n\nDevice ID is greater than 16, exiting?"); return; } // Acquire Device and verify joystick.AcquireDev(id, type, ref hDev); dev_stat(); Console.WriteLine("\nHit any key to reliquish device"); Console.ReadKey(); joystick.RelinquishDev(hDev); dev_stat(); Console.WriteLine("\nHit any key to re-acquire device"); Console.ReadKey(); joystick.AcquireDev(id, type, ref hDev); dev_stat(); joystick.GetDevType(hDev, ref type); Console.WriteLine("\nDevice type: " + type.ToString()); dev_axes(hDev); uint nBtn = 0; joystick.GetDevButtonN(hDev, ref nBtn); Console.WriteLine("\nNumber of buttons: " + nBtn.ToString()); uint nHat = 0; joystick.GetDevHatN(hDev, ref nHat); Console.WriteLine("\nNumber of Hats: " + nHat.ToString()); bool go_on = true; do { go_on = SetVal(hDev); } while (go_on); Console.WriteLine("\nHit any key to exit"); Console.ReadKey(); }
/// <summary> /// 接收到数据 /// </summary> private void ReceiverHandler(IAsyncResult ar) { try { if (!IsConnected) { string logMessage = "Cannot start receiver - client not started"; throw new InvalidOperationException(logMessage); } byte[] bufferData = null; byte[] buffer = new byte[ISocketConst.BUFFER_SIZE]; while (IsConnected) { if (!m_Userful || m_Stream == null) { break; } int bytesRead = 0; //try //{ bytesRead = m_Stream.Read(buffer, 0, ISocketConst.BUFFER_SIZE); //} //catch (Exception ex) //{ // log.LOG(ex); // break; //} if (bytesRead == 0) { throw new IOException("No Data!"); } byte[] readData = buffer.Take(bytesRead).ToArray(); if (bufferData != null && bufferData.Length > 0) { readData = bufferData.Concat(readData).ToArray(); } if (m_isScan) { //读取出来消息内容 string code = Encoding.ASCII.GetString(readData, 0, ISocketConst.CODE_SIZE); log.LOG("Scan: " + code); //Console.WriteLine(code.Split('@').Length + ":"+code); if (!string.IsNullOrEmpty(code)) { string[] str = m_DevName.Split('-'); if (ReceiveCode != null) { try { ReceiveCode(str[1], str[2], code); } catch (Exception e) { log.LOG(e); //Console.WriteLine(ex.Message + ex.StackTrace); } } } else { readData = new byte[0]; } continue; } int size = 0; // make sure we at least have one header while (readData.Count() > ISocketConst.HEADTAIL_SIZE) { log.LOG("Read: " + BitConverter.ToString(readData)); DevType head = (DevType)BitConverter.ToUInt16(ShiftBytes(readData, 0, 2), 0); switch (head) { case DevType.固定辊台: size = ISocketConst.FRT_SIZE; break; case DevType.摆渡车: size = ISocketConst.ARF_SIZE; break; case DevType.运输车: size = ISocketConst.RGV_SIZE; break; case DevType.行车: size = ISocketConst.AWC_SIZE; break; case DevType.包装线辊台: size = ISocketConst.PKL_SIZE; break; default: size = 0; break; } if (size == 0) { readData = new byte[0]; break; //throw new IOException("Header key did not match!"); } if (readData.Count() < size) { throw new IOException("messagesize is small than" + size + " (" + head.ToString() + ") !"); } ushort tailKey = BitConverter.ToUInt16(ShiftBytes(readData, size - 2, 2), 0); if (tailKey == ISocketConst.TAIL_KEY) { byte[] data = new byte[size]; Array.Copy(readData, 0, data, 0, size); NoticeDataReceive(head, data); } // remove from data array readData = new byte[0]; } if (size != 0) { // save until next round bufferData = readData; } } } catch (Exception e) { log.LOG(e); // unclean disconnect from service Reconnect(); //Console.WriteLine(e.Message + e.StackTrace); } }