add libcomm for plc layer

This commit is contained in:
2025-12-24 14:46:43 +08:00
parent 6308aee750
commit 8d4774964c
6 changed files with 199 additions and 0 deletions

73
LibComm/CommWithCC24.cs Normal file
View File

@@ -0,0 +1,73 @@
using Bjcve.Comm.FFP;
using Cognex.VisionPro.Comm;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LibComm
{
public class CommWithCC24 : ICommPLC
{
private CC24 cc24;
public event OnDataReceived OnDataReceived;
public event OnConnectStatus OnConnectStatus;
public event OnTrigCamera OnTrigCamera;
public event OnCameraStatus OnCameraStatus;
public void Initialize()
{
cc24 = new CC24();
cc24.VisionReceivedNewUserData += CC24_NewUserDataReceived;
cc24.PlcConnectionStatusChanged += CC24_PlcConnectionStatusChanged;
cc24.PlcTriggerCamAcqStart += CC24_PlcTriggerCamAcqStart;
cc24.PlcTriggerCamAcqStop += CC24_PlcTriggerCamAcqStop;
cc24.NotifyCamAcqEnabled += CC24_NotifyCamAcqEnabled;
cc24.NotifyCamAcqDisabled += CC24_NotifyCamAcqDisabled;
cc24.Initialize();
cc24.NotifyCamAcqEnable(0);
cc24.NotifyCamAcqEnable(1);
}
public void Stop()
{
cc24.VisionReceivedNewUserData -= CC24_NewUserDataReceived;
cc24.PlcConnectionStatusChanged -= CC24_PlcConnectionStatusChanged;
cc24.PlcTriggerCamAcqStart -= CC24_PlcTriggerCamAcqStart;
cc24.PlcTriggerCamAcqStop -= CC24_PlcTriggerCamAcqStop;
cc24.NotifyCamAcqEnabled -= CC24_NotifyCamAcqEnabled;
cc24.NotifyCamAcqDisabled -= CC24_NotifyCamAcqDisabled;
cc24.Shutdown();
}
public void NoticeCamComplete(int index, byte[] datax)
{
cc24?.NotifyCamInspectionComplete(index, datax);
cc24?.NotifyCamAcqComplete(index);
}
private void CC24_NewUserDataReceived(object sender, CogNdmNewUserDataEventArgs e)
{
OnDataReceived?.Invoke(cc24.ReadBytesFromPLC(0, 4));
}
private void CC24_PlcConnectionStatusChanged(object sender, CogNdmProtocolStatusChangedEventArgs e)
{
OnConnectStatus?.Invoke(e.ProtocolStatus == CogNdmConnectionStatusConstants.Connected);
}
private void CC24_PlcTriggerCamAcqStart(object sender, CogNdmTriggerAcquisitionEventArgs e)
{
OnTrigCamera?.Invoke(e.CameraIndex);
}
private void CC24_PlcTriggerCamAcqStop(object sender, CogNdmTriggerAcquisitionStopEventArgs e)
{
}
private void CC24_NotifyCamAcqEnabled(int cameraIndex, bool isEnabled)
{
OnCameraStatus?.Invoke(cameraIndex, isEnabled);
}
private void CC24_NotifyCamAcqDisabled(int cameraIndex, bool isEnabled)
{
OnCameraStatus?.Invoke(cameraIndex, isEnabled);
}
}
}