From: Mark Rivers <rivers at cars.uchicago.edu>
Sent: 21 July 2020 14:01
To: '吴煊' <wux at ihep.ac.cn>; Akeroyd, Freddie (STFC,RAL,ISIS) <freddie.akeroyd at stfc.ac.uk>
Cc: tech-talk at aps.anl.gov
Subject: RE: RE: SteamDevice 2.8.x build on Windows issue
I just tested with base 7.0.4, stream 2.8.14, Visual Studio 2017, Windows 10.
It works OK, I do not get the error about STREAM_PROTOCOL_PATH being undefined.
I don’t actually have the device connected, so Stream is reporting timeouts.
Here is the output when I start the IOC.
J:\epics\devel\CARS\iocBoot\ioc13LQExcel>..\..\bin\windows-x64-static-vs2017\CARSApp.exe st.cmd.test
errlogInit(5000)
< envPaths
epicsEnvSet("IOC","ioc13LQExcel")
epicsEnvSet("TOP","J:/epics/devel/CARS")
epicsEnvSet("SUPPORT","J:/epics/devel")
epicsEnvSet("ALLEN_BRADLEY","J:/epics/devel/allenBradley-2-3")
epicsEnvSet("AREA_DETECTOR","J:/epics/devel/areaDetector-3-9")
epicsEnvSet("EPICS_BASE","H:/epics-devel/base-7.0.4")
epicsEnvSet("ASYN","J:/epics/devel/asyn-4-40")
epicsEnvSet("ADSUPPORT","J:/epics/devel/areaDetector-3-9/ADSupport")
epicsEnvSet("ADCORE","J:/epics/devel/areaDetector-3-9/ADCore")
epicsEnvSet("AUTOSAVE","J:/epics/devel/autosave-5-10")
epicsEnvSet("BUSY","J:/epics/devel/busy-1-7-2")
epicsEnvSet("CALC","J:/epics/devel/calc-3-7-3")
epicsEnvSet("SNCSEQ","J:/epics/devel/seq-2-2-5")
epicsEnvSet("SSCAN","J:/epics/devel/sscan-2-11-3")
epicsEnvSet("DEVIOCSTATS","J:/epics/devel/devIocStats-3-1-16")
epicsEnvSet("ADANDOR","J:/epics/devel/areaDetector-3-9/ADAndor")
epicsEnvSet("ADROPER","J:/epics/devel/areaDetector-3-9/ADRoper")
epicsEnvSet("ADLIGHTFIELD","J:/epics/devel/areaDetector-3-9/ADLightField")
epicsEnvSet("ADMAR345","J:/epics/devel/areaDetector-3-9/ADmar345")
epicsEnvSet("ADMARCCD","J:/epics/devel/areaDetector-3-9/ADmarCCD")
epicsEnvSet("ADPERKINELMER","J:/epics/devel/areaDetector-3-9/ADPerkinElmer")
epicsEnvSet("ADPILATUS","J:/epics/devel/areaDetector-3-9/ADPilatus")
epicsEnvSet("ADPROSILICA","J:/epics/devel/areaDetector-3-9/ADProsilica")
epicsEnvSet("ADPOINTGREY","J:/epics/devel/areaDetector-3-9/ADPointGrey")
epicsEnvSet("ADEIGER","J:/epics/devel/areaDetector-3-9/ADEiger")
epicsEnvSet("ADGENICAM","J:/epics/devel/areaDetector-3-9/ADGenICam")
epicsEnvSet("ADSPINNAKER","J:/epics/devel/areaDetector-3-9/ADSpinnaker")
epicsEnvSet("ADARAVIS","J:/epics/devel/areaDetector-3-9/ADAravis")
epicsEnvSet("ADVIMBA","J:/epics/devel/areaDetector-3-9/ADVimba")
epicsEnvSet("CARS","J:/epics/devel/CARS")
epicsEnvSet("CRYOCONM32","J:/epics/devel/CryoconM32")
epicsEnvSet("DAC128V","J:/epics/devel/dac128V-2-9")
epicsEnvSet("DANTE","J:/epics/devel/dante-1-0")
epicsEnvSet("DELAYGEN","J:/epics/devel/delaygen-1-2-1")
epicsEnvSet("IP","J:/epics/devel/ip-2-20-1")
epicsEnvSet("IPAC","J:/epics/devel/ipac-2-15")
epicsEnvSet("IP330","J:/epics/devel/ip330-2-9")
epicsEnvSet("IPUNIDIG","J:/epics/devel/ipUnidig-2-11")
epicsEnvSet("MCA","J:/epics/devel/mca-7-8")
epicsEnvSet("MEASCOMP","J:/epics/devel/measComp-2-4")
epicsEnvSet("MODBUS","J:/epics/devel/modbus-3-0")
epicsEnvSet("MOTOR","J:/epics/devel/motor-7-0")
epicsEnvSet("OPTICS","J:/epics/devel/optics-2-13-3")
epicsEnvSet("QUADEM","J:/epics/devel/quadEM-9-3")
epicsEnvSet("SOFTGLUE","J:/epics/devel/softGlue-2-8-2")
epicsEnvSet("STD","J:/epics/devel/std-3-6")
epicsEnvSet("STREAM","J:/epics/devel/stream-2-8-14")
epicsEnvSet("TPMAC","J:/epics/devel/tpmac-3-11dls5")
epicsEnvSet("VAC","J:/epics/devel/vac-1-9")
epicsEnvSet("VME","J:/epics/devel/vme-2-9-2")
epicsEnvSet(STREAM_PROTOCOL_PATH, J:/epics/devel/ip-2-20-1/db:J:/epics/devel/CARS/db)
# Tell EPICS all about the record types, device-support modules, drivers,
# etc. in this build from CARS
dbLoadDatabase("../../dbd/CARSWin32.dbd")
CARSWin32_registerRecordDeviceDriver(pdbbase)
drvAsynSerialPortConfigure("serial1", "COM1")
asynOctetSetInputEos("serial1",0,"\r\n")
asynOctetSetOutputEos("serial1",0,"\r\n")
# Laser Quantum Excel laser
dbLoadRecords("J:/epics/devel/CARS/db/LQExcel.db", "P=13LQE1:,R=L1,PORT=serial1")
iocInit
Starting iocInit
############################################################################
## EPICS R7.0.4
## Rev. GSECARS-Build
############################################################################
2020/07/21 07:43:48.499261 serial1 13LQE1:L1PowerOut: No reply within 1000 ms to "POWER?"
2020/07/21 07:43:48.508047 win4cd4 13LQE1:L1PowerOut: @init handler failed
2020/07/21 07:43:48.514825 win4cd4 13LQE1:L1PowerOut: Record initialization failed
iocRun: All initialization complete
epics> 2020/07/21 07:43:50.546082 serial1 13LQE1:L1PowerIn: No reply within 1000 ms to "POWER?"
2020/07/21 07:43:51.556041 serial1 13LQE1:L1LaserTemp: No reply within 1000 ms to "LASTEMP?"
epics> 2020/07/21 07:43:52.566191 serial1 13LQE1:L1PowerIn: No reply within 1000 ms to "POWER?"
2020/07/21 07:43:53.576246 serial1 13LQE1:L1PSUTemp: No reply within 1000 ms to "PSUTEMP?"
2020/07/21 07:43:54.586484 serial1 13LQE1:L1LaserTemp: No reply within 1000 ms to "LASTEMP?"
It is clearly finding and using STREAM_PROTOCOL_PATH because it is finding the protocol file, which is located in J:/epics/devel/CARS/db, not the current directory.
I cannot explain why you are getting the error that STREAM_PROTOCOL_PATH is undefined. Please try the following command at the iocsh prompt.
epicsEnvShow "STREAM_PROTOCOL_PATH"
This is what I see:
epics> epicsEnvShow "STREAM_PROTOCOL_PATH"
STREAM_PROTOCOL_PATH=J:/epics/devel/ip-2-20-1/db:J:/epics/devel/CARS/db
You do get a build error when EPICS_HOST_ARCH=windows-x64-mingw. That is probably because the version of inttypes.h that it is finding does not define SCNx8, but I am not sure.
Mark
From:
吴煊 <wux at ihep.ac.cn>
Sent: Tuesday, July 21, 2020 2:57 AM
To: freddie akeroyd - ukri stfc <freddie.akeroyd at stfc.ac.uk>
Cc: Mark Rivers <rivers at cars.uchicago.edu>; tech-talk at aps.anl.gov
Subject: Re: RE: SteamDevice 2.8.x build on Windows issue
There is something wrong with what I said in my previous email. It's ture that steam 2.8.13 can be built successfully with Visual Studio 2017 and Visual Studio 2019. However, it will be aborted when the application start(when execute iocInit
actually), but it can be run correctly with Stream 2.7.14. You can check the info in attachment.
I also try to compile stream with 3.14.12.8:
MSVC:2017 community
EPICS_HOST_ARCH=windows-x64
Stream 2.8.13 can be built, but the application can't be run properly. The result is the same as Stream2.8.13.PNG
*************************************************************************************************
EPICS_HOST_ARCH=windows-x64-mingw
Stream 2.8.13 build failed. The error info is :../ChecksumConverter.cc:777:51: error: expected ')' before 'SCNx8' Regards,
Xuan
-----原始邮件-----
发件人:"Freddie Akeroyd - UKRI STFC" <freddie.akeroyd at stfc.ac.uk>
发送时间:2020-07-20 20:31:01 (星期一)
收件人: "Mark Rivers" <rivers at cars.uchicago.edu>, "'吴煊'"
<wux at ihep.ac.cn>
抄送: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
主题: RE: SteamDevice 2.8.x build on Windows issue
Hi,
I wasn’t able to check your exact combination, but I ran a few visual studio combinations from 2013 to 2019 through Appveyor and they
all seemed OK
https://ci.appveyor.com/project/FreddieAkeroyd/streamdevice/builds/34184691
Maybe it is picking up an incorrect include or definition from somewhere - if you check
the C pre-processor output for the file compilation that will show what headers are being loaded from where and might help locate the issue
Regards,
Freddie
I just built stream 2.8.14 successfully with both Visual Studio 2015 and Visual Studio 2017. I don’t have 2019 installed so I could not test
that, but I would be surprised if it failed.
My environment:
OS:Windows 10 x64
base:7.0.4
asyn:4-40
MSVC:2015, 2017 Community
GNU make:4.2.1
Perl64:5.24.3
SCNx8 is defined in inttypes.h for Visual Studio. This is where it is found in all of the inttypes.h files in C:\Program Files (x86)\Windows
Kits.
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[2020-07-19 14:46.55] /cygdrive/c/Program Files (x86)/Windows Kits
[rivers.Camaro]
➤ find . -name inttypes.h -exec grep -H SCNx8 {} \;
./10/Include/10.0.10150.0/ucrt/inttypes.h:#define SCNx8 "hhx"
./10/Include/10.0.10150.0/ucrt/inttypes.h:#define SCNxLEAST8 SCNx8
./10/Include/10.0.10150.0/ucrt/inttypes.h:#define SCNxFAST8 SCNx8
./10/Include/10.0.10240.0/ucrt/inttypes.h:#define SCNx8 "hhx"
./10/Include/10.0.10240.0/ucrt/inttypes.h:#define SCNxLEAST8 SCNx8
./10/Include/10.0.10240.0/ucrt/inttypes.h:#define SCNxFAST8 SCNx8
./10/Include/10.0.16299.0/ucrt/inttypes.h:#define SCNx8 "hhx"
./10/Include/10.0.16299.0/ucrt/inttypes.h:#define SCNxLEAST8 SCNx8
./10/Include/10.0.16299.0/ucrt/inttypes.h:#define SCNxFAST8 SCNx8
./10/Include/10.0.17763.0/ucrt/inttypes.h:#define SCNx8 "hhx"
./10/Include/10.0.17763.0/ucrt/inttypes.h:#define SCNxLEAST8 SCNx8
./10/Include/10.0.17763.0/ucrt/inttypes.h:#define SCNxFAST8 SCNx8
I also found that git needed to be installed on Windows to build 2.8.14. For other modules with base 7.0.4 it was sufficient to make “fake”
git.bat that just contained:
@echo GSECARS-Build
However, stream actually checks the syntax of the returned string, and that trick fails.
Mark
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of ?? via Tech-talk
Sent: Sunday, July 19, 2020 8:19 AM
To: tech-talk <tech-talk at aps.anl.gov>
Subject: SteamDevice 2.8.x build on Windows issue
Hi all,
I find that the SteamDevice(from 2.8 to 2.8.14) can not be built on Win7 x64. The error info is :../ChecksumConverter.cc:777:51: error: expected ')' before 'SCNx8'. However the version of 2.7.14 can be built successfully. I've checked
the file ChecksumConverter.cc, there is some difference between them like following:
2.8.x: if (sscanf(input(cursor+2*i), "%2" SCNx8, &inchar) != 1)
2.7.14: if (sscanf(input(cursor+2*i), "%2X", &inchar) != 1)
The software environment I'm using:
OS:Win7 x64
base:3.15.8
asyn:4-38
MSVC:2019 community
GNU make:4.2.1
Strawberry:5.30.1
PS:SteamDevice 2.8.14 is dependency with git, the other versions are not
Cheers,
Xuan
This email and any attachments are intended solely for the use of the named recipients. If you are not the intended recipient you must not use, disclose, copy or distribute this email or any of its attachments and
should notify the sender immediately and delete this email from your system. UK Research and Innovation (UKRI) has taken every reasonable precaution to minimise risk of this email or any attachments containing viruses or malware but the recipient should carry
out its own virus and malware checks before opening the attachments. UKRI does not accept any liability for any losses or damages which the recipient may sustain due to presence of any viruses. Opinions, conclusions or other information in this message and
attachments that are not related directly to UKRI business are solely those of the author and do not represent the views of UKRI.