Skip to content

Commit

Permalink
from TDY PI: working USB / GigE/ USB3
Browse files Browse the repository at this point in the history
  • Loading branch information
sliakat committed Jul 6, 2023
1 parent e8c6baf commit 64cd549
Show file tree
Hide file tree
Showing 8 changed files with 1,197 additions and 568 deletions.
107 changes: 48 additions & 59 deletions PICamApp/src/ADPICam.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -167,66 +167,52 @@ ADPICam::ADPICam(const char *portName, int maxBuffers, size_t maxMemory,

ADPICam_Instance = this;

//Open First available camera. If no camera is available,
// then open a demo camera
error = Picam_OpenFirstCamera(&currentCameraHandle);

if (error != PicamError_None) {
if (error == PicamError_NoCamerasAvailable) {
error = Picam_ConnectDemoCamera(PicamModel_Quadro4320,
"CamNotFoundOnInit", &demoId);
if (error != PicamError_None) {
Picam_GetEnumerationString(PicamEnumeratedType_Error,
error,
&errorString);
const char *demoModelName;
Picam_GetEnumerationString(PicamEnumeratedType_Model,
PicamModel_Quadro4320,
&demoModelName);
asynPrint(pasynUserSelf, ASYN_TRACE_ERROR,
"-------------------------------------------------\n"
"No detectors were available and cannot connect to "
"demo camera %s. Cannot run without a detector. \n"
"Error=%s \n"
"-------------------------------------------------\n",
demoModelName,
errorString);
Picam_DestroyString(demoModelName);
Picam_DestroyString(errorString);
return;
}
error = Picam_OpenFirstCamera(&currentCameraHandle);
if (error != PicamError_None) {
Picam_GetEnumerationString(PicamEnumeratedType_Error,
error,
&errorString);
const char *demoModelName;
Picam_GetEnumerationString(PicamEnumeratedType_Model,
PicamModel_Quadro4320,
&demoModelName);
asynPrint(pasynUserSelf, ASYN_TRACE_ERROR,
"------------------------------------------------\n"
"Trouble opening demo camera %s \n%s"
"------------------------------------------------\n",
demoModelName, errorString);
Picam_DestroyString(demoModelName);
Picam_DestroyString(errorString);
return;
}
} else {
Picam_GetEnumerationString(PicamEnumeratedType_Error, error,
&errorString);
asynPrint(pasynUserSelf, ASYN_TRACE_ERROR,
"------------------------------------------------\n"
"%s:%s Unhandled Error opening first camera: %s\n"
"------------------------------------------------\n",
driverName,
functionName,
errorString);
Picam_DestroyString(errorString);
return;
/*
Connect a SOPHIA 2048BX virtual camera to load -- if no physical camera
is plugged in when Available Cameras are generated, the virtual camera
gets used.
*/
PicamModel demoToConnect = PicamModel_Sophia2048BExcelon;
error = Picam_ConnectDemoCamera(demoToConnect,
"CamNotFoundOnInit", &demoId);
if (error != PicamError_None) {
Picam_GetEnumerationString(PicamEnumeratedType_Error,
error,
&errorString);
const char *demoModelName;
Picam_GetEnumerationString(PicamEnumeratedType_Model,
demoToConnect,
&demoModelName);
asynPrint(pasynUserSelf, ASYN_TRACE_ERROR,
"-------------------------------------------------\n"
"Cannot connect to demo camera %s."
"Cannot run without a detector.\n"
"Error=%s \n"
"-------------------------------------------------\n",
demoModelName,
errorString);
Picam_DestroyString(demoModelName);
Picam_DestroyString(errorString);
return;
}
error = Picam_OpenCamera(&demoId, &currentCameraHandle);
if (error != PicamError_None) {
Picam_GetEnumerationString(PicamEnumeratedType_Error,
error,
&errorString);
const char *demoModelName;
Picam_GetEnumerationString(PicamEnumeratedType_Model,
demoToConnect,
&demoModelName);
asynPrint(pasynUserSelf, ASYN_TRACE_ERROR,
"------------------------------------------------\n"
"Trouble opening demo camera %s \n%s"
"------------------------------------------------\n",
demoModelName, errorString);
Picam_DestroyString(demoModelName);
Picam_DestroyString(errorString);
return;
}
}
PicamAdvanced_GetCameraDevice(currentCameraHandle, &currentDeviceHandle);
selectedCameraIndex = 0;
createParam(PICAM_VersionNumberString, asynParamOctet,
Expand Down Expand Up @@ -1717,6 +1703,9 @@ asynStatus ADPICam::piAcquireStart(){
case PicamPixelFormat_Monochrome16Bit:
imageDataType = NDUInt16;
break;
case PicamPixelFormat_Monochrome32Bit:
imageDataType = NDUInt32;
break;
default:
imageDataType = NDUInt16;
const char *pixelFormatString;
Expand Down
21 changes: 12 additions & 9 deletions PICamSupport/README.txt
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
PICAM is a C++ library provided by Princeton Instruments, a division of Roper
Scientific, Inc. This library provides a common API to drive a number of
cameras from Princeton Instruments. This library is freely available,
PICAM is a C++ library provided by Teledyne Princeton Instruments,
a business unit of Teledyne Digital Imaging, US.

This library provides a common API to drive a number of
cameras from Teledyne Princeton Instruments. This library is freely available,
downloadable, and redistributable. We have included header and library files
here for version 2.8.1.1408 as a convenience for building the EPICS areaDetector
here for version 5.13.3.2211 as a convenience for building the EPICS areaDetector
driver.

Princeton Instruments provides up to date versions of the PICAM driver library
Teledyne Princeton Instruments provides up to date versions of the PICAM driver library
on their website and would prefer users to install directly from their site.

The latest version of PICAM is available from this URL:
ftp://ftp.piacton.com/Public/Software/Official/PICam/
The latest version of PICAM is available from these URLs:
Linux: https://cdn.princetoninstruments.com/picam/picam_sdk.run
Windows: https://cdn.princetoninstruments.com/picam/picam%20install.exe

And the Archives directory contains every other version released
ftp://ftp.piacton.com/Public/Software/Official/PICam/Archives/
You can contact [email protected] to request installers for
specific versions of PICam.

Loading

0 comments on commit 64cd549

Please sign in to comment.