void Awake() { //DontDestroyOnLoad(gameObject); if (_instance == null) { _instance = this; } logMessage = HUD.transform.Find("Log").GetComponent <Text>(); scoreText = HUD.transform.Find("Score").GetComponent <Text>(); nameText = HUD.transform.Find("Name").GetComponent <Text>(); dayText = HUD.transform.Find("Day").GetComponent <Text>(); clockText = HUD.transform.Find("Clock").GetComponent <Text>(); chunkText = HUD.transform.Find("ChunkPosition").GetComponent <Text>(); blockText = HUD.transform.Find("BlockPosition").GetComponent <Text>(); ballText = HUD.transform.Find("Balls").GetComponent <Text>(); pickupText = HUD.transform.Find("Pickups").GetComponent <Text>(); startGame = HUD.transform.GetComponent <StartGame>(); camOp = mainCamera.GetComponentInParent <CameraOperator>(); player.transform.position = new Vector3(0f, -3f, 10f); player.GetComponent <Rigidbody>().isKinematic = true; playerActive = false; RenderSettings.fogDensity = 10f; RenderSettings.skybox.SetColor("_Tint", RenderSettings.fogColor); StartCoroutine(GetRandomWord()); // float resolution = 1E9f / Stopwatch.Frequency; //Game.Log(String.Format("The minimum measurable time on this system is: {0} nanoseconds", resolution.ToString())); }
// Update is called once per frame void Update() { if (GetComponent <Renderer>().isVisible&& Input.GetMouseButton(0)) { Vector3 camPos = Camera.main.WorldToScreenPoint(transform.position); camPos.y = CameraOperator.InvertMouseY(camPos.y); selected = CameraOperator.selection.Contains(camPos); if (selected) { GetComponent <Renderer>().material.color = Color.red; } else { GetComponent <Renderer>().material.color = Color.white; } } if (selected && Input.GetMouseButtonUp(1)) { Vector3 destination = CameraOperator.GetDestination(); if (destination != Vector3.zero) { moveToDest = destination; moveToDest.y += floorOffset; } } UpdateMove(); }
public void Draw(SpriteBatch spriteBatch, CameraOperator cameraOperator) { spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, cameraOperator.Camera.CalculateTransformMatrix(Vector2.One)); _sprite.Draw(spriteBatch); spriteBatch.End(); }
void Update() { if (Input.GetMouseButtonDown(1)) //Move click effect { Instantiate(moveEffectObject, CameraOperator.GetDestination(), moveEffectObject.transform.rotation); } //Debug.Log(targets.Length); }
private void InitCamera() { m_CameraPicBox = pictureHost.Child as System.Windows.Forms.PictureBox; m_CameraDeviceList = new ComboBox(); m_pDeviceList = new MyCamera.MV_CC_DEVICE_INFO_LIST(); m_pOperator = new CameraOperator(); CarmerDeviceListAcq(); }
internal void OnPanOutComplete() { CameraOperator.FollowFocusObject(); if (onComplete != null) { onComplete(); } }
public void Draw(SpriteBatch spriteBatch, CameraOperator cameraOperator) { spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, cameraOperator.Camera.CalculateTransformMatrix(Vector2.One)); foreach (Slime slime in SlimeList) { slime.Draw(spriteBatch); } spriteBatch.End(); }
public bool FindCameraDevice() { bool bRe = false; //System.GC.Collect(); m_CameraListComboBox.Items.Clear(); int nRet = CameraOperator.EnumDevices(MyCamera.MV_GIGE_DEVICE | MyCamera.MV_USB_DEVICE, ref m_CameraList); if (0 != nRet) { MessageBox.Show("枚举设备失败!"); bRe = false; } //在窗体列表中显示设备名 for (int i = 0; i < m_CameraList.nDeviceNum; i++) { MyCamera.MV_CC_DEVICE_INFO device = (MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(m_CameraList.pDeviceInfo[i], typeof(MyCamera.MV_CC_DEVICE_INFO)); if (device.nTLayerType == MyCamera.MV_GIGE_DEVICE) { IntPtr buffer = Marshal.UnsafeAddrOfPinnedArrayElement(device.SpecialInfo.stGigEInfo, 0); MyCamera.MV_GIGE_DEVICE_INFO gigeInfo = (MyCamera.MV_GIGE_DEVICE_INFO)Marshal.PtrToStructure(buffer, typeof(MyCamera.MV_GIGE_DEVICE_INFO)); if (gigeInfo.chUserDefinedName != "") { m_CameraListComboBox.Items.Add("GigE: " + gigeInfo.chUserDefinedName + " (" + gigeInfo.chSerialNumber + ")"); } else { m_CameraListComboBox.Items.Add("GigE: " + gigeInfo.chManufacturerName + " " + gigeInfo.chModelName + " (" + gigeInfo.chSerialNumber + ")"); } } else if (device.nTLayerType == MyCamera.MV_USB_DEVICE) { IntPtr buffer = Marshal.UnsafeAddrOfPinnedArrayElement(device.SpecialInfo.stUsb3VInfo, 0); MyCamera.MV_USB3_DEVICE_INFO usbInfo = (MyCamera.MV_USB3_DEVICE_INFO)Marshal.PtrToStructure(buffer, typeof(MyCamera.MV_USB3_DEVICE_INFO)); if (usbInfo.chUserDefinedName != "") { m_CameraListComboBox.Items.Add("USB: " + usbInfo.chUserDefinedName + " (" + usbInfo.chSerialNumber + ")"); } else { m_CameraListComboBox.Items.Add("USB: " + usbInfo.chManufacturerName + " " + usbInfo.chModelName + " (" + usbInfo.chSerialNumber + ")"); } } } //选择第一项 if (m_CameraList.nDeviceNum != 0) { m_CameraListComboBox.SelectedIndex = 0; bRe = true; } return(bRe); }
private void btnSearch_Click(object sender, EventArgs e) { cbxCameras.Items.Clear(); camerastring = CameraOperator.EnumDevices(); foreach (var item in camerastring) { cbxCameras.Items.Add(item.Key); } ShowButtonState(true, false, false, false, false, false, false, false, false, false); }
private void OnDestroy() { if (_instance == this) { _instance = null; _camera = null; _focus = null; _averagingA = null; _averagingB = null; } }
protected override void Awake() { base.Awake(); // Lock or unlock the cursor. Cursor.lockState = m_LockCursor ? CursorLockMode.Locked : CursorLockMode.None; Cursor.visible = !m_LockCursor; m_PivotEulers = m_Pivot.rotation.eulerAngles; m_PivotTargetRot = m_Pivot.transform.localRotation; m_TransformTargetRot = transform.localRotation; camOp = transform.GetComponent <CameraOperator>(); }
public void Update(GameTime gameTime, CameraOperator cameraOperator, Entities entities, World world) { foreach (Coin coin in _coins) { coin.Update(gameTime); } _seconds += gameTime.ElapsedGameTime.Milliseconds * 1e-3f; if (_seconds > 1f) { --_seconds; RotatableRectangleF cameraViewport = cameraOperator.Camera.Viewport; if (_coins.Count == _coins.Capacity) { Remove(_coins[0], world); } //select a way to launch if (InfiniteIsland.Random.Next(2) == 0) { //Launch from the left _coins.Add( new Coin( position: (cameraViewport.TopLeft + new Vector2(0, (float)InfiniteIsland.Random.NextDouble() * cameraViewport.Dimensions.Y * .75f)).ToMeters(), linearVelocity: entities.Player.Body.Wheel.LinearVelocity * new Vector2(1.5f + (float)InfiniteIsland.Random.NextDouble() / 2.5f, -2 * (float)InfiniteIsland.Random.NextDouble()), world: world)); } else { //Launch from the right _coins.Add( new Coin( position: (cameraViewport.TopRight + new Vector2(0, (float)InfiniteIsland.Random.NextDouble() * cameraViewport.Dimensions.Y * .75f)).ToMeters(), linearVelocity: entities.Player.Body.Wheel.LinearVelocity * (new Vector2( x: 1.5f + (float)InfiniteIsland.Random.NextDouble() / 2.5f, y: -2 * (float)InfiniteIsland.Random.NextDouble()) - Vector2.UnitX), world: world)); } } }
public void Spawn(EnvironmentCube cube) { gameObject.SetActive(true); transform.position = cube.GetCoordinates().GetWorldPosition(); Camera.main.transform.position = new Vector3(transform.position.x, Camera.main.transform.position.y, transform.position.z); _currentCube = cube; _canMove = true; _health = MAX_HEALTH; CameraOperator.SetFocusObject(transform); CameraOperator.SnapToFocus(); CameraOperator.FollowFocusObject(); }
// Update is called once per frame void Update() { if (Input.GetMouseButtonUp(0)) { Vector3 camPos = Camera.main.WorldToScreenPoint(transform.position); camPos.y = CameraOperator.InvertY(camPos.y); bool toggle = CameraOperator.selection.Contains(camPos); if (toggle) { //toggle player selected cell selected = !selected; //do the mirror toggle GameObject mirroredCell = null; int[] flippedId = new int[2]; flippedId[1] = id[1]; flippedId[0] = buildAndEnable.width - 1 - id[0]; /* * int half = buildAndEnable.width/2; * if (id[0] < half){ * flippedId[0] = buildAndEnable.width - 1 - id[0]; * } else { * flippedId[0] = * }*/ foreach (GameObject c in buildAndEnable.grid) { if ((c.GetComponent <Cell>().id[0] == flippedId[0]) && c.GetComponent <Cell>().id[1] == flippedId[1]) { c.GetComponent <Cell>().selected = !c.GetComponent <Cell>().selected; } } } } if (selected) { GetComponent <Renderer>().material.color = Color.red; } else { GetComponent <Renderer>().material.color = Color.white; } }
static public void PanToFocus(float duration, float delay = 0.0f, Ease ease = Ease.InOutCubic, DG.Tweening.Core.TweenCallback onComplete = null) { CameraOperator script = instance; if (script != null) { if (_focus != null && _camera != null) { UnfollowFocusObject(); UnaverageBetweenObjects(); _camera.transform.DOKill(); _camera.transform.DOMove(script.GetCameraTargetPosition(_focus.position), duration). SetDelay(delay).SetEase(ease).OnComplete(onComplete); } } }
private void btnOpen_Click(object sender, EventArgs e) { if (cbxCameras.Items.Count != 0) { temp = new CameraOperator(); MyCamera.MV_CC_DEVICE_INFO cameraInfo; camerastring.TryGetValue(cbxCameras.Text, out cameraInfo); camera = new HikvisionCamera(temp, cameraInfo); camera.ImageEvent += ImagShow; camera.Open(); camera.IP = cbxCameras.Text; ShowButtonState(true, true, true, false, true, true, true, true, true, true); txtGain.Text = camera.GainCur.ToString(); txtExposure.Text = camera.ShuterCur.ToString(); } }
private void Awake() { if (_instance == null) { _instance = this; _instance.hideFlags = HideFlags.HideInInspector | HideFlags.HideInHierarchy; _instance.gameObject.AddComponent <ScreenResizeEvent>(); if (_camera == null) { SetActiveCamera(Camera.main); } } else { DestroyImmediate(this); } }
public Play(Game game) : base(game) { Cursor = new Cursor(); Debug = new Debug(game, World, this); Entities = new Entities(World, this); Terrain = new Terrain(game.GraphicsDevice, World); CameraOperator = new CameraOperator(game.GraphicsDevice.Viewport.Bounds); HUD = new HUD(); Background = new Background(new Vector2(game.GraphicsDevice.Viewport.Width, game.GraphicsDevice.Viewport.Height)); Wait.Until(time => Tweening.Tween( start: 0f, end: 1f, progress: time.Alive / 2f, step: value => Factor = value, scale: TweenScales.Quadratic)); }
void Start() { functionValues = new float[NumberOfSamples][][]; for (int i = 0; i<NumberOfSamples; i++) { functionValues [i] = new float[NumberOfSamples][]; for (int j = 0; j<NumberOfSamples; j++) { functionValues [i] [j] = new float[NumberOfSamples]; for (int k = 0; k<NumberOfSamples; k++) { functionValues [i] [j] [k] = 0; } } } cameraman = GetComponent<CameraOperator> (); cameraman.enabled = false; index = Vector3.zero; }
protected void ApplyCameraSettings() { Camera playerCamera = Camera.main; CameraOperator.SetActiveCamera(playerCamera); if (crosshair != null) { crosshair.gameObject.SetActive(false); } if (cameraScheme == CameraScheme.FirstPerson || cameraScheme == CameraScheme.ThirdPerson) { playerCamera.fieldOfView = cameraFOV; CameraOperator.AttachTo(GetLookTransform()); playerCamera.transform.localRotation = Quaternion.identity; if (cameraScheme == CameraScheme.ThirdPerson) { playerCamera.transform.localEulerAngles = new Vector3(cameraAngle, 0.0f, 0.0f); playerCamera.transform.localPosition = playerCamera.transform.forward * cameraDistance; } else { if (crosshair != null) { crosshair.gameObject.SetActive(true); } } } else if (cameraScheme == CameraScheme.Overhead) { if (cameraFollow) { CameraLookAtFocus(); CameraFollowFocus(); } playerCamera.transform.position = new Vector3(playerCamera.transform.position.x, cameraHeight, playerCamera.transform.position.z); } }
public override void OnInspectorGUI() { controller = (CameraOperator)target; Shot prevShot = controller.Shot; controller.Shot = (Shot)EditorGUILayout.ObjectField ("Shot", controller.Shot, typeof(Shot), false); if (controller.Shot != null) { if (controller.Shot != prevShot) EditorUtility.SetDirty (controller.Shot); bool actorsChanged = false; for (int i=0;i<controller.Actors.Length;i++){ Actor prev = controller.Actors[i]; controller.Actors[i] = (Actor)EditorGUILayout.ObjectField("Actor "+i,controller.Actors[i],typeof(Actor),true); actorsChanged = prev != controller.Actors[i]; } if (actorsChanged && Application.isPlaying) controller.SelectShot(controller.Shot,CameraOperator.Transition.Smooth,controller.Actors); controller.MovementResponsiveness = EditorGUILayout.Slider("Movement Responsiveness",controller.MovementResponsiveness,0,1); controller.RotationResponsiveness = EditorGUILayout.Slider("Rotation Responsiveness",controller.RotationResponsiveness,0,1); EditorGUILayout.Separator(); if (controller.ReadyForEvaluation){ controller.Shot.GetQuality(controller.Actors,controller.transform.GetComponent<Camera>()); foreach (Property p in controller.Shot.Properties){ string sbj = p.MainSubjectIndex.ToString(); if (p.PropertyType == Property.Type.RelativePosition) sbj += " "+(((RelativePosition)p).DesiredPosition).ToString()+" "+((RelativePosition)p).SecondaryActorIndex; EditorGUILayout.LabelField(p.PropertyType+" on "+sbj+" = "+p.Evaluate(controller.Actors)); } for (int i=0;i<controller.Actors.Length;i++) EditorGUILayout.LabelField("Visibility on "+i+" = "+controller.Actors[i].Visibility); } } }
void AdjustCameraCount(int necessaryCameraCount, ref List <CameraInStudio> refCameraList) { for (int i = refCameraList.Count; i < necessaryCameraCount; i++) { CameraOperator cameraOperator = uiCameraGenerator.Generate(); cameraOperator.transform.position = ConstUi.CameraPositionBase + ConstUi.CameraPositionInterval * i; CameraInStudio cameraInStudio = new CameraInStudio(ConstCamera.Ui, i, cameraOperator); refCameraList.Add(cameraInStudio); cameraBank.AddCamera(cameraInStudio); } for (int i = 0; i < necessaryCameraCount; i++) { refCameraList[i].CameraOperator.EnableCamera(true); } for (int i = necessaryCameraCount; i < refCameraList.Count; i++) { refCameraList[i].CameraOperator.EnableCamera(false); } }
private SettingForm() { InitializeComponent(); tabControl1.TabPages[3].Controls.Add(CameraOperator.GetThis(Global.ContempProductType)); #region 标记窗体原有尺寸 hv_hWindowHandle = hWindowControl1.HalconWindow; HOperatorSet.SetColor(hv_hWindowHandle, "red"); m_sHDevEnginePath = Global.di + "\\HE"; ListControl(this); m_iOriFormWidth = this.Width; m_iOriFormHeight = this.Height; #endregion HOperatorSet.GenEmptyObj(out ho_Image); hv_hWindowHandle = hWindowControl1.HalconWindow; }
// Update is called once per frame void Update() { if (Input.GetMouseButton(0) && (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))) { Vector3 campos = Camera.main.WorldToScreenPoint(transform.position); campos.y = CameraOperator.InverseMouseY(campos.y); this.gameObject.GetComponent <QuadracopterRayPointTracker>().selected = CameraOperator.selection.Contains(campos); } if (this.gameObject.GetComponent <QuadracopterRayPointTracker>().selected) // && droneCam==null) { this.transform.FindChild("indicator").gameObject.SetActive(true); /* foreach (GameObject drone in GameObject.FindGameObjectsWithTag("drone")) * { * if (!drone.GetComponent<QuadracopterRayPointTracker>().selected) * { * droneCam = drone; * drone.GetComponent<QuadracopterRayPointTracker>().selected = true; * drone.GetComponent<QuadCopterController>().agentchosen = true; * drone.transform.parent = this.transform; * drone.transform.position = new Vector3(drone.transform.position.x, drone.transform.position.y + 7, drone.transform.position.z-5); * break; * } * }*/ } else //if(!this.gameObject.GetComponent<QuadracopterRayPointTracker>().selected) { this.transform.FindChild("indicator").gameObject.SetActive(false); /* if (droneCam != null) * { * droneCam.GetComponent<QuadracopterRayPointTracker>().selected = false; * droneCam.GetComponent<QuadCopterController>().agentchosen = false ; * droneCam.transform.parent = GameObject.Find("drones").transform; * } * droneCam = null; */ } }
public void Draw(SpriteBatch spriteBatch, CameraOperator cameraOperator, bool revealCoins) { if (revealCoins) { spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, cameraOperator.Camera.CalculateTransformMatrix(Vector2.One)); foreach (Coin coin in _coins) { coin.Sprite.Key = coin.Type; Vector2 badOffset = Vector2.Zero; if (coin.Type == Coin.AnimationKeys.Bad) { badOffset = new Vector2( x: (float)(InfiniteIsland.Random.NextDouble() - .5f) * 15, y: (float)(InfiniteIsland.Random.NextDouble() - .5f) * 15); coin.Sprite.Body.Center += badOffset; } coin.Sprite.Body.Pivot -= Vector2.One * 3; coin.Sprite.Body.Center -= Vector2.One * 3; coin.Draw(spriteBatch); coin.Sprite.Body.Center += Vector2.One * 3; coin.Sprite.Body.Pivot += Vector2.One * 3; coin.Sprite.Body.Center -= badOffset; } spriteBatch.End(); } else { spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, cameraOperator.Camera.CalculateTransformMatrix(Vector2.One)); foreach (Coin coin in _coins) { coin.Sprite.Key = Coin.AnimationKeys.Outline; coin.Draw(spriteBatch); } spriteBatch.End(); } }
public override void Close() { try { IsLink = false; if (m_pOperator != null) { //停止采集 m_pOperator.StopGrabbing(); //关闭设备 m_pOperator.Close(); m_pOperator = null; } } catch (Exception ex) { Util.WriteLog(this.GetType(), ex); Util.Notify("相机关闭异常"); } }
void Update() { Renderer tmpRender = transform.GetComponentsInChildren <MeshRenderer>()[0].GetComponent <Renderer>(); if (tmpRender.isVisible && Input.GetMouseButton(0)) { if (!selectedByClick) { Vector3 campPos = Camera.main.WorldToScreenPoint(transform.position); campPos.y = CameraOperator.InvertScreenY(campPos.y); selected = CameraOperator.selection.Contains(campPos); } } if (selected && Input.GetMouseButtonUp(1)) { Vector3 destination = CameraOperator.GetDestination(); if (destination != Vector3.zero) { MoveTo(destination); } } }
void selectionManagement() { if (renderer.isVisible && Input.GetMouseButton(0)) { Vector3 camPos = Camera.main.WorldToScreenPoint(rigidbody.position); camPos.y = CameraOperator.InvertMouse(camPos.y); selected = CameraOperator.selection.Contains(camPos); } if (selected) { transform.GetChild(0).light.intensity = 0.25f; } else { transform.GetChild(0).light.intensity = 0f; } if (selected && Input.GetKeyDown("mouse 1")) { moveNow = true; } }
public void DestOffset() //Formation movement { Vector3 destination = CameraOperator.GetDestination(); float averageX = 0, averageZ = 0; for (int x = 0; x < selectedUnits.Count; x++) { averageX += selectedUnits[x].transform.position.x; averageZ += selectedUnits[x].transform.position.z; } averageX /= selectedUnits.Count; averageZ /= selectedUnits.Count; for (int x = 0; x < selectedUnits.Count; x++) { Vector3 Temp = destination; if (selectedUnits[x].transform.position.x <= averageX) { Temp.x -= averageX - selectedUnits[x].transform.position.x; } else { Temp.x += selectedUnits[x].transform.position.x - averageX; } if (selectedUnits[x].transform.position.z <= averageZ) { Temp.z -= averageZ - selectedUnits[x].transform.position.z; } else { Temp.z += selectedUnits[x].transform.position.z - averageZ; } selectedUnits[x].SendMessage("SetDest", Temp); } }
public HikvisionCamera(CameraOperator m_pOperator, int index) { this.m_pOperator = m_pOperator; this.cameraIndex = index; }
public static bool Open() { try { int cameraCount = 0; if ((CameraFlag & CameraFlag.Basler) == CameraFlag.Basler) { //#region basler相机遍历查询 //List<Basler.Pylon.ICameraInfo> g_allCameras = Basler.Pylon.CameraFinder.Enumerate(); //if (g_allCameras.Count > 0) //{ // for (int i = 0; i < g_allCameras.Count; i++) // { // Basler.Pylon.Camera g_camera = new Basler.Pylon.Camera(g_allCameras[i]); // if (true == g_camera.IsOpen) // g_camera.Close(); // g_camera.Open(); // string id = g_camera.Parameters[Basler.Pylon.PLCamera.DeviceUserID].GetValue(); // int id1; // if (int.TryParse(id, out id1)) // { // if (CameraDic.Keys.Contains(id1) == false) // { // CameraDic.Add(id1, new BaslerCamera(g_camera, id1)); // cameraCount++; // } // } // else // { // Util.Notify("相机ID未设置"); // } // } //} //#endregion } if ((CameraFlag & CameraFlag.Hikvision) == CameraFlag.Hikvision) { #region 海康相机遍历枚举 MyCamera.MV_CC_DEVICE_INFO_LIST m_pDeviceList = new MyCamera.MV_CC_DEVICE_INFO_LIST(); int nRet; nRet = CameraOperator.EnumDevices(MyCamera.MV_GIGE_DEVICE | MyCamera.MV_USB_DEVICE, ref m_pDeviceList); if (0 == nRet && m_pDeviceList.nDeviceNum > 0) { for (int i = 0; i < m_pDeviceList.nDeviceNum; i++) { MyCamera.MV_CC_DEVICE_INFO device = (MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(m_pDeviceList.pDeviceInfo[i], typeof(MyCamera.MV_CC_DEVICE_INFO)); if (device.nTLayerType == MyCamera.MV_GIGE_DEVICE) { IntPtr buffer = Marshal.UnsafeAddrOfPinnedArrayElement(device.SpecialInfo.stGigEInfo, 0); MyCamera.MV_GIGE_DEVICE_INFO gigeInfo = (MyCamera.MV_GIGE_DEVICE_INFO)Marshal.PtrToStructure(buffer, typeof(MyCamera.MV_GIGE_DEVICE_INFO)); int key; if (int.TryParse(gigeInfo.chUserDefinedName, out key)) { if (CameraDic.Keys.Contains(key) == false) { CameraOperator m_pOperator = new CameraOperator(); //打开设备 nRet = m_pOperator.Open(ref device); //Util.Notify("打开相机"); if (MyCamera.MV_OK == nRet) { CameraDic.Add(key, new HikvisionCamera(m_pOperator, key)); cameraCount++; } } } else { Util.Notify("相机ID未设置"); } } else if (device.nTLayerType == MyCamera.MV_USB_DEVICE) { IntPtr buffer = Marshal.UnsafeAddrOfPinnedArrayElement(device.SpecialInfo.stUsb3VInfo, 0); MyCamera.MV_USB3_DEVICE_INFO usbInfo = (MyCamera.MV_USB3_DEVICE_INFO)Marshal.PtrToStructure(buffer, typeof(MyCamera.MV_USB3_DEVICE_INFO)); int key; if (int.TryParse(usbInfo.chUserDefinedName, out key)) { if (CameraDic.Keys.Contains(key) == false) { CameraOperator m_pOperator = new CameraOperator(); //打开设备 nRet = m_pOperator.Open(ref device); if (MyCamera.MV_OK == nRet) { CameraDic.Add(key, new HikvisionCamera(m_pOperator, key)); cameraCount++; } } else { Util.Notify("相机ID未设置"); } } } } } #endregion } if ((CameraFlag & CameraFlag.Mindvision) == CameraFlag.Mindvision) { #region 迈徳威视相机遍历枚举 CameraSdkStatus status; tSdkCameraDevInfo[] tCameraDevInfoList; status = MvApi.CameraEnumerateDevice(out tCameraDevInfoList); if (status == CameraSdkStatus.CAMERA_STATUS_SUCCESS) { if (tCameraDevInfoList != null && tCameraDevInfoList.Count() > 0)//此时iCameraCounts返回了实际连接的相机个数。如果大于1,则初始化第一个相机 { for (int i = 0; i < tCameraDevInfoList.Count(); i++) { IntPtr m_Grabber; status = MvApi.CameraGrabber_Create(out m_Grabber, ref tCameraDevInfoList[i]); if (status == CameraSdkStatus.CAMERA_STATUS_SUCCESS) { CameraHandle m_hCamera = 0; // 句柄 MvApi.CameraGrabber_GetCameraHandle(m_Grabber, out m_hCamera); byte[] pName = new byte[255]; MvApi.CameraGetFriendlyName(m_hCamera, pName); string str = System.Text.Encoding.ASCII.GetString(pName).Substring(0, 1); int key = -1; if (int.TryParse(str, out key) && CameraDic.Keys.Contains(key) == false) { CameraDic.Add(key, new MindCamera(m_hCamera, m_Grabber, key)); cameraCount++; } //else //{ // Util.Notify("相机ID未设置"); //} } } } } #endregion } if ((CameraFlag & CameraFlag.Microvision) == CameraFlag.Microvision) { #region 维视图像相机相机遍历枚举 //个数枚举 MVGigE.MVInitLib(); int CamNum = 0; MVSTATUS r = MVGigE.MVGetNumOfCameras(out CamNum); for (int i = 0; i < CamNum; i++) { IntPtr m_hCam; byte index = (byte)i; r = MVGigE.MVOpenCamByIndex(index, out m_hCam); if (m_hCam != IntPtr.Zero) { MVCamInfo pCamInfo; MVGigE.MVGetCameraInfo(index, out pCamInfo); string str = pCamInfo.mUserDefinedName; int key = -1; if (int.TryParse(str, out key) && CameraDic.Keys.Contains(key) == false) { CameraDic.Add(key, new MicrovisionCamera(m_hCam, key)); cameraCount++; } else { Util.Notify("相机ID未设置"); } } } #endregion } if ((CameraFlag & CameraFlag.ICImaging) == CameraFlag.ICImaging) { #region 美精相机遍历查询 TIS.Imaging.ICImagingControl cameraFind = new TIS.Imaging.ICImagingControl(); foreach (TIS.Imaging.Device Item in cameraFind.Devices) { string cameraName = Item.Name; int index1 = cameraName.IndexOf("["); if (index1 > -1) { string dat = cameraName.Substring(index1); string dat1 = dat.Replace("[", "").Replace("]", ""); int id1; if (int.TryParse(dat1, out id1)) { if (CameraDic.Keys.Contains(id1) == false) { TIS.Imaging.ICImagingControl cameraTmp = new TIS.Imaging.ICImagingControl(); cameraTmp.Device = Item.Name; bool x = cameraTmp.DeviceValid; CameraDic.Add(id1, new ICImagingCamera(cameraTmp, id1)); cameraCount++; } } } } #endregion } if ((CameraFlag & CameraFlag.DirectShow) == CameraFlag.DirectShow) { #region DirectShow相机 当前只支持一个相机 HFramegrabber framegrabber = new HFramegrabber(); //HTuple Information = null; //HTuple ValueList = null; //HOperatorSet.InfoFramegrabber("DirectShow", "info_boards",out Information,out ValueList); framegrabber.OpenFramegrabber("DirectShow", 1, 1, 0, 0, 0, 0, "default", 8, DirectShowColorSpace, -1, "false", DirectShowCameraType, DirectShowIndex, 0, -1); CameraDic.Add(1, new DirectShowCamera(framegrabber, 1)); #endregion } if ((CameraFlag & CameraFlag.DaHeng) == CameraFlag.DaHeng) { //#region 大恒相机 //List<IGXDeviceInfo> listGXDeviceInfo = new List<IGXDeviceInfo>(); //IGXFactory IGXFactory1 = IGXFactory.GetInstance(); //IGXFactory1.Init(); //IGXFactory1.UpdateDeviceList(200, listGXDeviceInfo); //foreach (var item in listGXDeviceInfo) //{ // string name = item.GetUserID(); // int key; // if (int.TryParse(name, out key)) // { // if (CameraDic.Keys.Contains(key) == false) // { // IGXDevice IGXDevice1 = null; // IGXDevice1 = IGXFactory1.OpenDeviceBySN(item.GetSN(), GX_ACCESS_MODE.GX_ACCESS_EXCLUSIVE); // CameraDic.Add(key, new DHCamera(IGXFactory1, IGXDevice1)); // } // } //} //#endregion } if ((CameraFlag & CameraFlag.Gige) == CameraFlag.Gige) { //#region Gige相机遍历查询 HTuple Information = null; HTuple ValueList = null; HOperatorSet.InfoFramegrabber("GigEVision", "info_boards", out Information, out ValueList); for (int i = 0; i < ValueList.Length; i++) { string valueTmp = ValueList[i]; string name = GetGigeValue(valueTmp, "user_name:"); string device = GetGigeValue(valueTmp, "device:"); if (name != null && device != null) { int id1; if (int.TryParse(name, out id1)) { if (CameraDic.Keys.Contains(id1) == false) { HFramegrabber grabber = new HFramegrabber(); grabber.OpenFramegrabber("GigEVision", 0, 0, 0, 0, 0, 0, "default", -1, "default", -1, "false", "default", device, 0, -1); CameraDic.Add(id1, new GigeCamera(grabber, id1)); cameraCount++; } } } } //List<ICameraInfo> g_allCameras = CameraFinder.Enumerate(); //if (g_allCameras.Count > 0) //{ // for (int i = 0; i < g_allCameras.Count; i++) // { // Basler.Pylon.Camera g_camera = new Basler.Pylon.Camera(g_allCameras[i]); // if (true == g_camera.IsOpen) // g_camera.Close(); // g_camera.Open(); // string id = g_camera.Parameters[PLCamera.DeviceUserID].GetValue(); // int id1; // if (int.TryParse(id, out id1)) // { // if (CameraDic.Keys.Contains(id1) == false) // { // CameraDic.Add(id1, new BaslerCamera(g_camera, id1)); // cameraCount++; // } // } // else // { // Util.Notify("相机ID未设置"); // } // } //} //#endregion } //打开相机 foreach (var item in CameraDic.Values) { item.Open(); Thread.Sleep(30); } if (CameraInitFinishEvent != null) { CameraInitFinishEvent(null, null); } //else //{ // Util.Notify("无相机连接"); // return false; //} } catch (Exception ex) { Util.WriteLog(typeof(CameraManger), ex); Util.Notify("相机打开出现异常"); Close(); return(false); } return(true); }
private void InitCamera() { m_pDeviceList = new MyCamera.MV_CC_DEVICE_INFO_LIST(); m_pOperator = new CameraOperator(); }