diff --git a/testAsynPortDriverApp/op/Makefile b/testAsynPortDriverApp/op/Makefile
new file mode 100644
index 000000000..c0b8a1e0b
--- /dev/null
+++ b/testAsynPortDriverApp/op/Makefile
@@ -0,0 +1,12 @@
+TOP = ../..
+include $(TOP)/configure/CONFIG
+
+ADL_DIR = adl
+UI_DIR = ui/autoconvert
+EDL_DIR = edl/autoconvert
+OPI_DIR = opi/autoconvert
+BOB_DIR = bob/autoconvert
+
+include $(CONFIG)/RULES_DIRS
+
+-include $(SUPPORT)/configure/RULES_OPI
diff --git a/testAsynPortDriverApp/adl/testAsynPortDriver.adl b/testAsynPortDriverApp/op/adl/testAsynPortDriver.adl
similarity index 100%
rename from testAsynPortDriverApp/adl/testAsynPortDriver.adl
rename to testAsynPortDriverApp/op/adl/testAsynPortDriver.adl
diff --git a/testAsynPortDriverApp/adl/testAsynPortDriverTop.adl b/testAsynPortDriverApp/op/adl/testAsynPortDriverTop.adl
similarity index 100%
rename from testAsynPortDriverApp/adl/testAsynPortDriverTop.adl
rename to testAsynPortDriverApp/op/adl/testAsynPortDriverTop.adl
diff --git a/testAsynPortDriverApp/op/bob/autoconvert/testAsynPortDriver.bob b/testAsynPortDriverApp/op/bob/autoconvert/testAsynPortDriver.bob
new file mode 100644
index 000000000..f618f9c69
--- /dev/null
+++ b/testAsynPortDriverApp/op/bob/autoconvert/testAsynPortDriver.bob
@@ -0,0 +1,807 @@
+
+
+ testAsynPortDriver
+ 317
+ 111
+ 830
+ 490
+
+
+
+
+ false
+ 5
+
+ text #6
+ 1 kHz, 1 volt, sin wave
+ 20
+ 39
+ 230
+
+
+
+
+ 1
+
+
+ text #9
+ Noise (V)
+ 20
+ 320
+ 90
+
+
+
+
+ 2
+
+
+ text entry #12
+ $(P)$(R)NoiseAmplitude
+ 118
+ 320
+ 80
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #16
+ $(P)$(R)NoiseAmplitude_RBV
+ 118
+ 297
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ text #20
+ Run/stop
+ 30
+ 420
+ 80
+
+
+
+
+ 2
+
+
+ choice button #23
+ $(P)$(R)Run
+ 118
+ 400
+ 80
+ 40
+
+
+
+
+ false
+ false
+
+ - Item 1
+ - Item 2
+
+
+
+ text update #26
+ $(P)$(R)Run_RBV
+ 118
+ 378
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+
+
+ text #30
+ Offset (V)
+ 10
+ 240
+
+
+
+
+ 2
+
+
+ text entry #33
+ $(P)$(R)VoltOffset
+ 118
+ 240
+ 80
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #37
+ $(P)$(R)VoltOffset_RBV
+ 118
+ 217
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ text #41
+ Volts/div
+ 20
+ 180
+ 90
+
+
+
+
+ 2
+
+
+ text update #44
+ $(P)$(R)VoltsPerDiv_RBV
+ 117
+ 134
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ menu #48
+ $(P)$(R)VoltsPerDivSelect
+ 117
+ 180
+ 80
+ 20
+
+
+
+
+ false
+
+
+ text #51
+ Vert gain
+ 20
+ 100
+ 90
+
+
+
+
+ 2
+
+
+ text update #54
+ $(P)$(R)VertGain_RBV
+ 118
+ 77
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ menu #58
+ $(P)$(R)VertGainSelect
+ 118
+ 100
+ 80
+ 20
+
+
+
+
+ false
+
+
+ text update #61
+ $(P)$(R)VoltsPerDivSelect_RBV
+ 117
+ 157
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ composite #65
+ 220
+ 66
+ 601
+ 407
+
+ true
+
+ cartesian plot #68
+ 1
+ 600
+ Digital scope simulator
+
+ Horizontal divisions
+ true
+ false
+ 0.0
+ 100.0
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ Vertical divisions
+ true
+ false
+ 0.0
+ 100.0
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ $(traces[0].y_pv)
+ $(P)$(R)TimeBase_RBV
+ $(P)$(R)Waveform_RBV
+
+ 0
+ 1
+
+
+
+
+ 1
+ 0
+ 0
+ 10
+ true
+
+
+
+
+ composite #72
+ 396
+ 304
+ 200
+ 100
+
+ true
+
+ rectangle #75
+ 200
+ 100
+ 1
+
+
+
+
+
+
+
+
+ true
+
+
+ composite #78
+ 45
+ 2
+ 110
+ 21
+
+ true
+
+ rectangle #81
+ 110
+ 21
+
+
+
+
+
+
+
+
+
+
+ text #84
+ Statistics
+ 3
+ 103
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ composite #87
+ 11
+ 25
+ 178
+ 70
+
+ true
+
+ composite #90
+ 157
+ 20
+
+ true
+
+ text #93
+ Minimum
+ 70
+
+
+
+
+ 2
+
+
+ text update #96
+ $(P)$(R)MinValue_RBV
+ 75
+ 1
+ 82
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+
+ composite #100
+ 25
+ 157
+ 20
+
+ true
+
+ text #103
+ Maximum
+ 70
+
+
+
+
+ 2
+
+
+ text update #106
+ $(P)$(R)MaxValue_RBV
+ 75
+ 1
+ 82
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+
+ composite #110
+ 30
+ 50
+ 148
+ 20
+
+ true
+
+ text #113
+ Mean
+ 40
+
+
+
+
+ 2
+
+
+ text update #116
+ $(P)$(R)MeanValue_RBV
+ 45
+ 1
+ 103
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+
+
+
+ composite #120
+ 235
+ 304
+ 130
+ 68
+
+ true
+
+ text entry #123
+ $(P)$(R)TriggerDelay
+ 35
+ 23
+ 60
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text #127
+ Trigger delay
+ 48
+ 130
+
+
+
+
+ 2
+
+
+ text update #130
+ $(P)$(R)TriggerDelay_RBV
+ 35
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+
+ composite #134
+ 304
+ 110
+ 68
+
+ true
+
+ text #137
+ Update time
+ 48
+ 110
+
+
+
+
+ 2
+
+
+ text entry #140
+ $(P)$(R)UpdateTime
+ 25
+ 23
+ 60
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #144
+ $(P)$(R)UpdateTime_RBV
+ 25
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+
+ text #148
+ Time/div
+ 142
+ 352
+ 80
+
+
+
+
+ 2
+
+
+ text update #151
+ $(P)$(R)TimePerDiv_RBV
+ 152
+ 304
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ menu #155
+ $(P)$(R)TimePerDivSelect
+ 132
+ 327
+ 20
+
+
+
+
+ false
+
+
+ composite #158
+ 1
+ 387
+ 235
+ 20
+
+ true
+
+ text #161
+ Waveform scan
+ 130
+
+
+
+
+ 2
+
+
+ menu #164
+ $(P)$(R)Waveform_RBV.SCAN
+ 135
+ 20
+
+
+
+
+ false
+
+
+
+
+ composite #167
+ 320
+ 5
+ 360
+ 55
+
+ true
+
+ text #170
+ Simple digital scope simulator
+ 360
+ 25
+
+
+
+
+ 1
+
+
+ text #173
+ $(P)$(R)
+ 144
+ 30
+ 96
+ 25
+
+
+
+
+
+
+
+
+ 1
+
+
+
diff --git a/testAsynPortDriverApp/op/bob/autoconvert/testAsynPortDriverTop.bob b/testAsynPortDriverApp/op/bob/autoconvert/testAsynPortDriverTop.bob
new file mode 100644
index 000000000..c1eec3703
--- /dev/null
+++ b/testAsynPortDriverApp/op/bob/autoconvert/testAsynPortDriverTop.bob
@@ -0,0 +1,58 @@
+
+
+ testAsynPortDriverTop
+ 1217
+ 235
+ 300
+ 50
+
+
+
+
+ false
+ 5
+
+ related display #6
+
+
+ testAsynPortDriver.opi
+
+ testAPD:
+ scope1:
+
+ tab
+ testAsynPortDriver
+
+
+ asynRecord.opi
+
+ testAPD:
+ asyn1
+
+ tab
+ asyn record
+
+
+
+ 191
+ 12
+ 80
+ 20
+
+
+
+
+
+
+ text #10
+ testAsynPortDriver
+ 6
+ 12
+ 180
+
+
+
+
+ true
+
+
diff --git a/testAsynPortDriverApp/op/edl/autoconvert/testAsynPortDriver.edl b/testAsynPortDriverApp/op/edl/autoconvert/testAsynPortDriver.edl
new file mode 100644
index 000000000..f82fb0f8f
--- /dev/null
+++ b/testAsynPortDriverApp/op/edl/autoconvert/testAsynPortDriver.edl
@@ -0,0 +1,1310 @@
+4 0 1
+beginScreenProperties
+major 4
+minor 0
+release 1
+x 317
+y 111
+w 830
+h 490
+font "helvetica-medium-r-18.0"
+ctlFont "helvetica-bold-r-10.0"
+btnFont "helvetica-medium-r-18.0"
+fgColor rgb 0 0 0
+bgColor rgb 47872 47872 47872
+textColor rgb 0 0 0
+ctlFgColor1 rgb 64256 62208 18944
+ctlFgColor2 rgb 60928 46592 11008
+ctlBgColor1 rgb 52480 24832 0
+ctlBgColor2 rgb 65280 45056 65280
+topShadowColor rgb 44544 19968 48128
+botShadowColor rgb 13312 13056 34304
+showGrid
+snapToGrid
+gridSize 4
+endScreenProperties
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 20
+y 39
+w 230
+h 20
+font "helvetica-medium-r-14.0"
+fontAlign "center"
+fgColor rgb 0 0 0
+bgColor index 3
+useDisplayBg
+value {
+ "1 kHz, 1 volt, sin wave"
+}
+endObjectProperties
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 20
+y 320
+w 90
+h 20
+font "helvetica-medium-r-14.0"
+fontAlign "right"
+fgColor rgb 0 0 0
+bgColor index 3
+useDisplayBg
+value {
+ "Noise (V)"
+}
+endObjectProperties
+
+# (Text Control)
+object activeXTextDspClass
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 118
+y 320
+w 80
+h 20
+controlPv "$(P)$(R)NoiseAmplitude"
+format "decimal"
+font "helvetica-medium-r-12.0"
+fontAlign "left"
+fgColor rgb 0 0 0
+bgColor rgb 29440 57088 65280
+editable
+motifWidget
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+# (Text Monitor)
+object activeXTextDspClass:noedit
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 118
+y 297
+w 80
+h 18
+controlPv "$(P)$(R)NoiseAmplitude_RBV"
+format "decimal"
+font "helvetica-medium-r-14.0"
+fontAlign "center"
+fgColor rgb 2560 0 47104
+bgColor rgb 47872 47872 47872
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 30
+y 420
+w 80
+h 20
+font "helvetica-medium-r-14.0"
+fontAlign "right"
+fgColor rgb 0 0 0
+bgColor index 3
+useDisplayBg
+value {
+ "Run/stop"
+}
+endObjectProperties
+
+# (Text Monitor)
+object activeXTextDspClass:noedit
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 118
+y 378
+w 80
+h 18
+controlPv "$(P)$(R)Run_RBV"
+format "decimal"
+font "helvetica-medium-r-14.0"
+fontAlign "center"
+fgColor rgb 0 65535 0
+fgAlarm
+bgColor rgb 55808 55808 55808
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 10
+y 240
+w 100
+h 20
+font "helvetica-medium-r-14.0"
+fontAlign "right"
+fgColor rgb 0 0 0
+bgColor index 3
+useDisplayBg
+value {
+ "Offset (V)"
+}
+endObjectProperties
+
+# (Text Control)
+object activeXTextDspClass
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 118
+y 240
+w 80
+h 20
+controlPv "$(P)$(R)VoltOffset"
+format "decimal"
+font "helvetica-medium-r-12.0"
+fontAlign "left"
+fgColor rgb 0 0 0
+bgColor rgb 29440 57088 65280
+editable
+motifWidget
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+# (Text Monitor)
+object activeXTextDspClass:noedit
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 118
+y 217
+w 80
+h 18
+controlPv "$(P)$(R)VoltOffset_RBV"
+format "decimal"
+font "helvetica-medium-r-14.0"
+fontAlign "center"
+fgColor rgb 2560 0 47104
+bgColor rgb 47872 47872 47872
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 20
+y 180
+w 90
+h 20
+font "helvetica-medium-r-14.0"
+fontAlign "right"
+fgColor rgb 0 0 0
+bgColor index 3
+useDisplayBg
+value {
+ "Volts/div"
+}
+endObjectProperties
+
+# (Text Monitor)
+object activeXTextDspClass:noedit
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 117
+y 134
+w 80
+h 18
+controlPv "$(P)$(R)VoltsPerDiv_RBV"
+format "decimal"
+font "helvetica-medium-r-14.0"
+fontAlign "center"
+fgColor rgb 2560 0 47104
+bgColor rgb 47872 47872 47872
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 20
+y 100
+w 90
+h 20
+font "helvetica-medium-r-14.0"
+fontAlign "right"
+fgColor rgb 0 0 0
+bgColor index 3
+useDisplayBg
+value {
+ "Vert gain"
+}
+endObjectProperties
+
+# (Text Monitor)
+object activeXTextDspClass:noedit
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 118
+y 77
+w 80
+h 18
+controlPv "$(P)$(R)VertGain_RBV"
+format "decimal"
+font "helvetica-medium-r-14.0"
+fontAlign "center"
+fgColor rgb 2560 0 47104
+bgColor rgb 47872 47872 47872
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+# (Text Monitor)
+object activeXTextDspClass:noedit
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 117
+y 157
+w 80
+h 18
+controlPv "$(P)$(R)VoltsPerDivSelect_RBV"
+format "decimal"
+font "helvetica-medium-r-14.0"
+fontAlign "center"
+fgColor rgb 2560 0 47104
+bgColor rgb 47872 47872 47872
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 220
+y 66
+w 601
+h 407
+
+beginGroup
+
+# (X-Y Graph)
+object xyGraphClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 221
+y 66
+w 600
+h 300
+# Appearance
+border
+graphTitle "Digital scope simulator"
+xLabel "Horizontal divisions"
+yLabel "Vertical divisions"
+fgColor rgb 0 0 0
+bgColor rgb 29440 57088 65280
+gridColor rgb 0 0 0
+font "helvetica-medium-r-10.0"
+# Operating Modes
+plotMode "plotLastNPts"
+nPts 1
+# X axis properties
+showXAxis
+xAxisSrc "AutoScale"
+xMin -9
+xMax 9
+xLablePrecision 1
+# Y axis properties
+showYAxis
+yAxisSrc "AutoScale"
+yMin -9
+yMax 9
+# Trace Properties
+numTraces 1
+xPv {
+ 0 "$(P)$(R)TimeBase_RBV"
+}
+yPv {
+ 0 "$(P)$(R)Waveform_RBV"
+}
+plotStyle {
+ 0 "line"
+}
+plotUpdateMode {
+ 0 "x"
+}
+plotSymbolType {
+ 0 "circle"
+}
+plotColor {
+ 0 rgb 0 0 0
+}
+endObjectProperties
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 616
+y 370
+w 200
+h 100
+
+beginGroup
+
+# (Rectangle)
+object activeRectangleClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 616
+y 370
+w 200
+h 100
+lineColor rgb 0 0 0
+fillColor rgb 0 0 0
+lineWidth 0
+endObjectProperties
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 661
+y 372
+w 110
+h 21
+
+beginGroup
+
+# (Rectangle)
+object activeRectangleClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 661
+y 372
+w 109
+h 20
+lineColor rgb 55808 55808 55808
+fill
+fillColor rgb 55808 55808 55808
+lineWidth 0
+endObjectProperties
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 664
+y 372
+w 103
+h 20
+font "helvetica-medium-r-14.0"
+fontAlign "center"
+fgColor rgb 2560 0 47104
+bgColor index 3
+useDisplayBg
+value {
+ "Statistics"
+}
+endObjectProperties
+
+endGroup
+
+endObjectProperties
+
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 627
+y 395
+w 178
+h 70
+
+beginGroup
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 627
+y 395
+w 157
+h 20
+
+beginGroup
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 626
+y 395
+w 71
+h 20
+font "helvetica-medium-r-14.0"
+fontAlign "right"
+fgColor rgb 0 0 0
+bgColor index 3
+useDisplayBg
+value {
+ "Minimum"
+}
+endObjectProperties
+
+# (Text Monitor)
+object activeXTextDspClass:noedit
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 702
+y 396
+w 82
+h 18
+controlPv "$(P)$(R)MinValue_RBV"
+format "decimal"
+font "helvetica-medium-r-14.0"
+fontAlign "left"
+fgColor rgb 2560 0 47104
+bgColor rgb 47872 47872 47872
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+endGroup
+
+endObjectProperties
+
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 627
+y 420
+w 157
+h 20
+
+beginGroup
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 622
+y 420
+w 75
+h 20
+font "helvetica-medium-r-14.0"
+fontAlign "right"
+fgColor rgb 0 0 0
+bgColor index 3
+useDisplayBg
+value {
+ "Maximum"
+}
+endObjectProperties
+
+# (Text Monitor)
+object activeXTextDspClass:noedit
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 702
+y 421
+w 82
+h 18
+controlPv "$(P)$(R)MaxValue_RBV"
+format "decimal"
+font "helvetica-medium-r-14.0"
+fontAlign "left"
+fgColor rgb 2560 0 47104
+bgColor rgb 47872 47872 47872
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+endGroup
+
+endObjectProperties
+
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 657
+y 445
+w 148
+h 20
+
+beginGroup
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 646
+y 445
+w 51
+h 20
+font "helvetica-medium-r-14.0"
+fontAlign "right"
+fgColor rgb 0 0 0
+bgColor index 3
+useDisplayBg
+value {
+ "Mean"
+}
+endObjectProperties
+
+# (Text Monitor)
+object activeXTextDspClass:noedit
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 702
+y 446
+w 103
+h 18
+controlPv "$(P)$(R)MeanValue_RBV"
+format "decimal"
+font "helvetica-medium-r-14.0"
+fontAlign "left"
+fgColor rgb 2560 0 47104
+bgColor rgb 47872 47872 47872
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+endGroup
+
+endObjectProperties
+
+
+endGroup
+
+endObjectProperties
+
+
+endGroup
+
+endObjectProperties
+
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 455
+y 370
+w 130
+h 68
+
+beginGroup
+
+# (Text Control)
+object activeXTextDspClass
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 490
+y 393
+w 60
+h 20
+controlPv "$(P)$(R)TriggerDelay"
+format "decimal"
+font "helvetica-medium-r-12.0"
+fontAlign "left"
+fgColor rgb 0 0 0
+bgColor rgb 29440 57088 65280
+editable
+motifWidget
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 455
+y 418
+w 130
+h 20
+font "helvetica-medium-r-14.0"
+fontAlign "right"
+fgColor rgb 0 0 0
+bgColor index 3
+useDisplayBg
+value {
+ "Trigger delay"
+}
+endObjectProperties
+
+# (Text Monitor)
+object activeXTextDspClass:noedit
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 490
+y 370
+w 61
+h 18
+controlPv "$(P)$(R)TriggerDelay_RBV"
+format "decimal"
+font "helvetica-medium-r-14.0"
+fontAlign "center"
+fgColor rgb 2560 0 47104
+bgColor rgb 47872 47872 47872
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+endGroup
+
+endObjectProperties
+
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 220
+y 370
+w 110
+h 68
+
+beginGroup
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 220
+y 418
+w 110
+h 20
+font "helvetica-medium-r-14.0"
+fontAlign "right"
+fgColor rgb 0 0 0
+bgColor index 3
+useDisplayBg
+value {
+ "Update time"
+}
+endObjectProperties
+
+# (Text Control)
+object activeXTextDspClass
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 245
+y 393
+w 60
+h 20
+controlPv "$(P)$(R)UpdateTime"
+format "decimal"
+font "helvetica-medium-r-12.0"
+fontAlign "left"
+fgColor rgb 0 0 0
+bgColor rgb 29440 57088 65280
+editable
+motifWidget
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+# (Text Monitor)
+object activeXTextDspClass:noedit
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 245
+y 370
+w 61
+h 18
+controlPv "$(P)$(R)UpdateTime_RBV"
+format "decimal"
+font "helvetica-medium-r-14.0"
+fontAlign "center"
+fgColor rgb 2560 0 47104
+bgColor rgb 47872 47872 47872
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+endGroup
+
+endObjectProperties
+
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 362
+y 418
+w 80
+h 20
+font "helvetica-medium-r-14.0"
+fontAlign "right"
+fgColor rgb 0 0 0
+bgColor index 3
+useDisplayBg
+value {
+ "Time/div"
+}
+endObjectProperties
+
+# (Text Monitor)
+object activeXTextDspClass:noedit
+beginObjectProperties
+major 4
+minor 7
+release 0
+x 372
+y 370
+w 61
+h 18
+controlPv "$(P)$(R)TimePerDiv_RBV"
+format "decimal"
+font "helvetica-medium-r-14.0"
+fontAlign "center"
+fgColor rgb 2560 0 47104
+bgColor rgb 47872 47872 47872
+limitsFromDb
+nullColor rgb 60928 46592 11008
+smartRefresh
+fastUpdate
+newPos
+objType "controls"
+endObjectProperties
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 221
+y 453
+w 235
+h 20
+
+beginGroup
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 221
+y 453
+w 130
+h 20
+font "helvetica-medium-r-14.0"
+fontAlign "right"
+fgColor rgb 0 0 0
+bgColor index 3
+useDisplayBg
+value {
+ "Waveform scan"
+}
+endObjectProperties
+
+endGroup
+
+endObjectProperties
+
+
+endGroup
+
+endObjectProperties
+
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 320
+y 5
+w 360
+h 55
+
+beginGroup
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 320
+y 5
+w 360
+h 25
+font "helvetica-medium-r-18.0"
+fontAlign "center"
+fgColor rgb 0 0 0
+bgColor index 3
+useDisplayBg
+value {
+ "Simple digital scope simulator"
+}
+endObjectProperties
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 464
+y 35
+w 96
+h 25
+font "helvetica-medium-r-18.0"
+fontAlign "center"
+fgColor rgb 22784 32256 57600
+bgColor index 3
+useDisplayBg
+value {
+ "$(P)$(R)"
+}
+endObjectProperties
+
+endGroup
+
+endObjectProperties
+
+
+# (Choice Button)
+object activeChoiceButtonClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 118
+y 400
+w 80
+h 40
+fgColor rgb 0 0 0
+bgColor rgb 29440 57088 65280
+selectColor rgb 29440 57088 65280
+inconsistentColor rgb 0 0 0
+topShadowColor rgb 65280 65280 65280
+botShadowColor rgb 0 0 0
+controlPv "$(P)$(R)Run"
+font "helvetica-medium-r-10.0"
+endObjectProperties
+
+# (Menu Button)
+object activeMenuButtonClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 117
+y 180
+w 80
+h 20
+fgColor rgb 0 0 0
+bgColor rgb 29440 57088 65280
+inconsistentColor rgb 17920 17920 17920
+topShadowColor rgb 55808 55808 55808
+botShadowColor rgb 17920 17920 17920
+controlPv "$(P)$(R)VoltsPerDivSelect"
+indicatorPv "$(P)$(R)VoltsPerDivSelect"
+font "helvetica-medium-r-12.0"
+endObjectProperties
+
+# (Menu Button)
+object activeMenuButtonClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 118
+y 100
+w 80
+h 20
+fgColor rgb 0 0 0
+bgColor rgb 29440 57088 65280
+inconsistentColor rgb 17920 17920 17920
+topShadowColor rgb 55808 55808 55808
+botShadowColor rgb 17920 17920 17920
+controlPv "$(P)$(R)VertGainSelect"
+indicatorPv "$(P)$(R)VertGainSelect"
+font "helvetica-medium-r-12.0"
+endObjectProperties
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 220
+y 66
+w 601
+h 407
+
+beginGroup
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 616
+y 370
+w 200
+h 100
+
+beginGroup
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 661
+y 372
+w 110
+h 21
+
+beginGroup
+
+endGroup
+
+endObjectProperties
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 627
+y 395
+w 178
+h 70
+
+beginGroup
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 627
+y 395
+w 157
+h 20
+
+beginGroup
+
+endGroup
+
+endObjectProperties
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 627
+y 420
+w 157
+h 20
+
+beginGroup
+
+endGroup
+
+endObjectProperties
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 657
+y 445
+w 148
+h 20
+
+beginGroup
+
+endGroup
+
+endObjectProperties
+
+
+endGroup
+
+endObjectProperties
+
+
+endGroup
+
+endObjectProperties
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 455
+y 370
+w 130
+h 68
+
+beginGroup
+
+endGroup
+
+endObjectProperties
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 220
+y 370
+w 110
+h 68
+
+beginGroup
+
+endGroup
+
+endObjectProperties
+
+
+# (Menu Button)
+object activeMenuButtonClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 352
+y 393
+w 100
+h 20
+fgColor rgb 0 0 0
+bgColor rgb 29440 57088 65280
+inconsistentColor rgb 17920 17920 17920
+topShadowColor rgb 55808 55808 55808
+botShadowColor rgb 17920 17920 17920
+controlPv "$(P)$(R)TimePerDivSelect"
+indicatorPv "$(P)$(R)TimePerDivSelect"
+font "helvetica-medium-r-12.0"
+endObjectProperties
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 221
+y 453
+w 235
+h 20
+
+beginGroup
+
+# (Menu Button)
+object activeMenuButtonClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 356
+y 453
+w 100
+h 20
+fgColor rgb 0 0 0
+bgColor rgb 29440 57088 65280
+inconsistentColor rgb 17920 17920 17920
+topShadowColor rgb 55808 55808 55808
+botShadowColor rgb 17920 17920 17920
+controlPv "$(P)$(R)Waveform_RBV.SCAN"
+indicatorPv "$(P)$(R)Waveform_RBV.SCAN"
+font "helvetica-medium-r-12.0"
+endObjectProperties
+
+endGroup
+
+endObjectProperties
+
+
+endGroup
+
+endObjectProperties
+
+# (Group)
+object activeGroupClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 320
+y 5
+w 360
+h 55
+
+beginGroup
+
+endGroup
+
+endObjectProperties
+
+
diff --git a/testAsynPortDriverApp/op/edl/autoconvert/testAsynPortDriverTop.edl b/testAsynPortDriverApp/op/edl/autoconvert/testAsynPortDriverTop.edl
new file mode 100644
index 000000000..2ae375dcc
--- /dev/null
+++ b/testAsynPortDriverApp/op/edl/autoconvert/testAsynPortDriverTop.edl
@@ -0,0 +1,81 @@
+4 0 1
+beginScreenProperties
+major 4
+minor 0
+release 1
+x 1217
+y 235
+w 300
+h 50
+font "helvetica-medium-r-18.0"
+ctlFont "helvetica-bold-r-10.0"
+btnFont "helvetica-medium-r-18.0"
+fgColor rgb 0 0 0
+bgColor rgb 47872 47872 47872
+textColor rgb 0 0 0
+ctlFgColor1 rgb 64256 62208 18944
+ctlFgColor2 rgb 60928 46592 11008
+ctlBgColor1 rgb 52480 24832 0
+ctlBgColor2 rgb 65280 45056 65280
+topShadowColor rgb 44544 19968 48128
+botShadowColor rgb 13312 13056 34304
+showGrid
+snapToGrid
+gridSize 4
+endScreenProperties
+
+# (Static Text)
+object activeXTextClass
+beginObjectProperties
+major 4
+minor 1
+release 1
+x 6
+y 12
+w 180
+h 20
+font "helvetica-medium-r-14.0"
+fgColor rgb 0 0 0
+bgColor index 3
+useDisplayBg
+value {
+ "testAsynPortDriver"
+}
+endObjectProperties
+
+# (Related Display)
+object relatedDisplayClass
+beginObjectProperties
+major 4
+minor 0
+release 0
+x 191
+y 12
+w 80
+h 20
+fgColor rgb 0 0 0
+bgColor rgb 47872 47872 47872
+topShadowColor rgb 55808 55808 55808
+botShadowColor rgb 17920 17920 17920
+font "helvetica-medium-r-8.0"
+icon
+numPvs 4
+numDsps 2
+displayFileName {
+ 0 "testAsynPortDriver.edl"
+ 1 "asynRecord.edl"
+}
+menuLabel {
+ 0 "testAsynPortDriver"
+ 1 "asyn record"
+}
+symbols {
+ 0 "P=testAPD:,R=scope1:"
+ 1 "P=testAPD:,R=asyn1"
+}
+replaceSymbols {
+ 0 1
+ 1 1
+}
+endObjectProperties
+
diff --git a/testAsynPortDriverApp/op/opi/autoconvert/testAsynPortDriver.opi b/testAsynPortDriverApp/op/opi/autoconvert/testAsynPortDriver.opi
new file mode 100644
index 000000000..2025ac54e
--- /dev/null
+++ b/testAsynPortDriverApp/op/opi/autoconvert/testAsynPortDriver.opi
@@ -0,0 +1,2881 @@
+
+
+
+ false
+ -1
+ -1
+
+ false
+
+
+
+ 5.1.0
+
+
+
+ 5
+ 490
+
+ true
+
+ testAsynPortDriver
+
+
+ true
+ true
+ false
+ true
+ false
+ Display
+ 830
+ 317
+ 111
+
+
+
+
+
+
+
+
+ 0
+ 1
+ true
+ false
+
+ Default
+
+
+
+
+ 407
+ false
+
+ true
+
+ Grouping Container
+
+
+ true
+ true
+ false
+
+
+ false
+
+ true
+ true
+ Grouping Container
+ 601
+ 220
+ 66
+
+
+
+
+
+
+
+
+ 0
+ 1
+ true
+ false
+
+ Default
+
+
+
+
+ 100
+ false
+
+ true
+
+ Grouping Container
+
+
+ true
+ true
+ false
+
+
+ false
+
+ true
+ true
+ Grouping Container
+ 200
+ 396
+ 304
+
+
+ false
+ 255
+ true
+ false
+
+
+
+
+
+
+ false
+
+
+
+ 0
+ 1
+ true
+
+
+
+ 0.0
+
+ Default
+
+ false
+
+
+
+ false
+ 100
+ true
+
+
+
+ 0
+ 1
+ Rectangle
+
+
+
+
+ true
+ true
+ false
+
+
+ $(pv_name)
+$(pv_value)
+ true
+ true
+ Rectangle
+ 200
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+ 1
+ true
+ false
+
+ Default
+
+
+
+
+ 21
+ false
+
+ true
+
+ Grouping Container
+
+
+ true
+ true
+ false
+
+
+ false
+
+ true
+ true
+ Grouping Container
+ 110
+ 45
+ 2
+
+
+ false
+ 255
+ true
+ false
+
+
+
+
+
+
+ false
+
+
+
+ 0
+ 1
+ true
+
+
+
+ 100.0
+
+ Default
+
+ false
+
+
+
+ false
+ 21
+ true
+
+
+
+ 0
+ 0
+ Rectangle
+
+
+
+
+ true
+ true
+ false
+
+
+ $(pv_name)
+$(pv_value)
+ false
+ true
+ Rectangle
+ 110
+ 0
+ 0
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 20
+ 1
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Statistics
+
+ true
+ 1
+ true
+ Label
+ 103
+ false
+ 3
+ 0
+
+
+
+
+
+
+
+
+
+
+ 0
+ 1
+ true
+ false
+
+ Default
+
+
+
+
+ 70
+ false
+
+ true
+
+ Grouping Container
+
+
+ true
+ true
+ false
+
+
+ false
+
+ true
+ true
+ Grouping Container
+ 178
+ 11
+ 25
+
+
+
+
+
+
+
+
+ 0
+ 1
+ true
+ false
+
+ Default
+
+
+
+
+ 20
+ false
+
+ true
+
+ Grouping Container
+
+
+ true
+ true
+ false
+
+
+ false
+
+ true
+ true
+ Grouping Container
+ 157
+ 0
+ 0
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 20
+ 2
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Minimum
+
+ true
+ 1
+ true
+ Label
+ 70
+ false
+ 0
+ 0
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+
+
+ false
+
+
+
+ 1
+ 18
+ 0
+ Text Update
+ 0
+ true
+ $(P)$(R)MinValue_RBV
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ false
+ ######
+ $(pv_name)
+$(pv_value)
+ false
+ 1
+ true
+ Text Update
+ 82
+ false
+ 75
+ 1
+
+
+
+
+
+
+
+
+
+
+ 0
+ 1
+ true
+ false
+
+ Default
+
+
+
+
+ 20
+ false
+
+ true
+
+ Grouping Container
+
+
+ true
+ true
+ false
+
+
+ false
+
+ true
+ true
+ Grouping Container
+ 157
+ 0
+ 25
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 20
+ 2
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Maximum
+
+ true
+ 1
+ true
+ Label
+ 70
+ false
+ 0
+ 0
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+
+
+ false
+
+
+
+ 1
+ 18
+ 0
+ Text Update
+ 0
+ true
+ $(P)$(R)MaxValue_RBV
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ false
+ ######
+ $(pv_name)
+$(pv_value)
+ false
+ 1
+ true
+ Text Update
+ 82
+ false
+ 75
+ 1
+
+
+
+
+
+
+
+
+
+
+ 0
+ 1
+ true
+ false
+
+ Default
+
+
+
+
+ 20
+ false
+
+ true
+
+ Grouping Container
+
+
+ true
+ true
+ false
+
+
+ false
+
+ true
+ true
+ Grouping Container
+ 148
+ 30
+ 50
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 20
+ 2
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Mean
+
+ true
+ 1
+ true
+ Label
+ 40
+ false
+ 0
+ 0
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+
+
+ false
+
+
+
+ 1
+ 18
+ 0
+ Text Update
+ 0
+ true
+ $(P)$(R)MeanValue_RBV
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ false
+ ######
+ $(pv_name)
+$(pv_value)
+ false
+ 1
+ true
+ Text Update
+ 103
+ false
+ 45
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 1
+ true
+ false
+
+ Default
+
+
+
+
+ 68
+ false
+
+ true
+
+ Grouping Container
+
+
+ true
+ true
+ false
+
+
+ false
+
+ true
+ true
+ Grouping Container
+ 130
+ 235
+ 304
+
+
+ false
+ false
+ false
+
+
+
+ false
+
+
+
+ 3
+ 1
+
+ true
+
+
+
+ false
+
+
+
+ 1
+ 20
+ 0
+ false
+ Infinity
+ -Infinity
+ false
+ Text Input
+ 0
+ false
+ 0
+ true
+ $(P)$(R)TriggerDelay
+
+ false
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ 0
+ false
+ true
+ false
+ false
+
+
+ $(pv_name)
+$(pv_value)
+ false
+ true
+ Text Input
+ 60
+ 35
+ 23
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 20
+ 2
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Trigger delay
+
+ true
+ 1
+ true
+ Label
+ 130
+ false
+ 0
+ 48
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+
+
+ false
+
+
+
+ 1
+ 18
+ 1
+ Text Update
+ 0
+ true
+ $(P)$(R)TriggerDelay_RBV
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ false
+ ######
+ $(pv_name)
+$(pv_value)
+ false
+ 1
+ true
+ Text Update
+ 61
+ false
+ 35
+ 0
+
+
+
+
+
+
+
+
+
+
+ 0
+ 1
+ true
+ false
+
+ Default
+
+
+
+
+ 68
+ false
+
+ true
+
+ Grouping Container
+
+
+ true
+ true
+ false
+
+
+ false
+
+ true
+ true
+ Grouping Container
+ 110
+ 0
+ 304
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 20
+ 2
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Update time
+
+ true
+ 1
+ true
+ Label
+ 110
+ false
+ 0
+ 48
+
+
+
+ false
+ false
+ false
+
+
+
+ false
+
+
+
+ 3
+ 1
+
+ true
+
+
+
+ false
+
+
+
+ 1
+ 20
+ 0
+ false
+ Infinity
+ -Infinity
+ false
+ Text Input
+ 0
+ false
+ 0
+ true
+ $(P)$(R)UpdateTime
+
+ false
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ 0
+ false
+ true
+ false
+ false
+
+
+ $(pv_name)
+$(pv_value)
+ false
+ true
+ Text Input
+ 60
+ 25
+ 23
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+
+
+ false
+
+
+
+ 1
+ 18
+ 1
+ Text Update
+ 0
+ true
+ $(P)$(R)UpdateTime_RBV
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ false
+ ######
+ $(pv_name)
+$(pv_value)
+ false
+ 1
+ true
+ Text Update
+ 61
+ false
+ 25
+ 0
+
+
+
+
+
+
+
+
+
+
+ 0
+ 1
+ true
+ false
+
+ Default
+
+
+
+
+ 20
+ false
+
+ true
+
+ Grouping Container
+
+
+ true
+ true
+ false
+
+
+ false
+
+ true
+ true
+ Grouping Container
+ 235
+ 1
+ 387
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 20
+ 2
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Waveform scan
+
+ true
+ 1
+ true
+ Label
+ 130
+ false
+ 0
+ 0
+
+
+
+ true
+ false
+ false
+
+
+
+ false
+
+
+
+ 6
+ 1
+ true
+
+ Default
+
+ false
+
+
+
+ 20
+
+ Menu Button
+ $(P)$(R)Waveform_RBV.SCAN
+
+
+
+ true
+ true
+ false
+
+
+ false
+ $(pv_name)
+$(pv_value)
+ false
+ true
+ Menu Button
+ 100
+ 135
+ 0
+
+
+
+
+ false
+ true
+ 0.0
+
+
+
+ Horizontal divisions
+ true
+
+
+
+ false
+ 100.0
+ 0.0
+
+ Default
+
+
+ true
+ 0
+
+ Default Bold
+
+ true
+ true
+ 0.0
+
+
+
+ Vertical divisions
+ true
+
+
+
+ false
+ 100.0
+ 0.0
+
+ Default
+
+
+ true
+ 0
+
+ Default Bold
+
+ true
+ true
+ 0.0
+
+
+
+ Secondary Axis (2)
+ true
+
+
+
+ true
+ false
+ 100.0
+ 0.0
+
+ Default
+
+
+ true
+ 0
+
+ Default Bold
+
+ true
+ true
+ true
+ 0.0
+
+
+
+ Secondary Axis (3)
+ true
+
+
+
+ true
+ false
+ 100.0
+ 0.0
+
+ Default
+
+
+ true
+ 0
+
+ Default Bold
+
+ true
+ true
+ 2
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+ false
+
+
+
+ 300
+ XY Graph
+
+
+
+
+
+
+
+ true
+ true
+ false
+
+
+ true
+ false
+ true
+ Digital scope simulator
+
+ Default Bold
+
+ $(trace_0_y_pv)
+$(trace_0_y_pv_value)
+ true
+ 0
+ false
+ 1
+ $(trace_0_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+ $(P)$(R)TimeBase_RBV
+
+ 1
+ $(P)$(R)Waveform_RBV
+
+ true
+ 100
+ true
+ 1
+ $(trace_10_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_11_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_12_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_13_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_14_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_15_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_16_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_17_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_18_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_19_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_1_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_2_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_3_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_4_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_5_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_6_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_7_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_8_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ true
+ 100
+ true
+ 1
+ $(trace_9_y_pv)
+ 0
+ 4
+ 0
+
+
+
+ 0
+ 100
+ 0
+ true
+ 0
+
+
+ 1
+
+
+ 1
+ false
+
+
+ true
+ XY Graph
+ 600
+ 1
+ 0
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 20
+ 2
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Time/div
+
+ true
+ 1
+ true
+ Label
+ 80
+ false
+ 142
+ 352
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+
+
+ false
+
+
+
+ 1
+ 18
+ 1
+ Text Update
+ 0
+ true
+ $(P)$(R)TimePerDiv_RBV
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ false
+ ######
+ $(pv_name)
+$(pv_value)
+ false
+ 1
+ true
+ Text Update
+ 61
+ false
+ 152
+ 304
+
+
+
+ true
+ false
+ false
+
+
+
+ false
+
+
+
+ 6
+ 1
+ true
+
+ Default
+
+ false
+
+
+
+ 20
+
+ Menu Button
+ $(P)$(R)TimePerDivSelect
+
+
+
+ true
+ true
+ false
+
+
+ false
+ $(pv_name)
+$(pv_value)
+ false
+ true
+ Menu Button
+ 100
+ 132
+ 327
+
+
+
+
+
+
+
+
+
+
+ 0
+ 1
+ true
+ false
+
+ Default
+
+
+
+
+ 55
+ false
+
+ true
+
+ Grouping Container
+
+
+ true
+ true
+ false
+
+
+ false
+
+ true
+ true
+ Grouping Container
+ 360
+ 320
+ 5
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 25
+ 1
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Simple digital scope simulator
+
+ true
+ 1
+ true
+ Label
+ 360
+ false
+ 0
+ 0
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 25
+ 1
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ $(P)$(R)
+
+ true
+ 1
+ true
+ Label
+ 96
+ false
+ 144
+ 30
+
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 20
+ 1
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ 1 kHz, 1 volt, sin wave
+
+ true
+ 1
+ true
+ Label
+ 230
+ false
+ 20
+ 39
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 20
+ 2
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Noise (V)
+
+ true
+ 1
+ true
+ Label
+ 90
+ false
+ 20
+ 320
+
+
+
+ false
+ false
+ false
+
+
+
+ false
+
+
+
+ 3
+ 1
+
+ true
+
+
+
+ false
+
+
+
+ 1
+ 20
+ 0
+ false
+ Infinity
+ -Infinity
+ false
+ Text Input
+ 0
+ false
+ 0
+ true
+ $(P)$(R)NoiseAmplitude
+
+ false
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ 0
+ false
+ true
+ false
+ false
+
+
+ $(pv_name)
+$(pv_value)
+ false
+ true
+ Text Input
+ 80
+ 118
+ 320
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+
+
+ false
+
+
+
+ 1
+ 18
+ 1
+ Text Update
+ 0
+ true
+ $(P)$(R)NoiseAmplitude_RBV
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ false
+ ######
+ $(pv_name)
+$(pv_value)
+ false
+ 1
+ true
+ Text Update
+ 80
+ false
+ 118
+ 297
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 20
+ 2
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Run/stop
+
+ true
+ 1
+ true
+ Label
+ 80
+ false
+ 30
+ 420
+
+
+
+ false
+ false
+
+
+
+ false
+
+
+
+ 0
+ 1
+ true
+
+ Default
+
+ false
+
+
+
+ 40
+ false
+
+ Choice 1
+ Choice 2
+ Choice 3
+
+ true
+ Choice Button
+ $(P)$(R)Run
+
+
+
+ true
+ true
+ false
+
+
+
+
+
+ $(pv_name)
+$(pv_value)
+ true
+ Choice Button
+ 80
+ 118
+ 400
+
+
+
+ false
+ false
+ false
+
+
+
+ false
+
+
+
+ 0
+ 1
+ true
+
+
+
+ true
+
+
+
+ 1
+ 18
+ 1
+ Text Update
+ 0
+ true
+ $(P)$(R)Run_RBV
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ false
+ ######
+ $(pv_name)
+$(pv_value)
+ false
+ 1
+ true
+ Text Update
+ 80
+ false
+ 118
+ 378
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 20
+ 2
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Offset (V)
+
+ true
+ 1
+ true
+ Label
+ 100
+ false
+ 10
+ 240
+
+
+
+ false
+ false
+ false
+
+
+
+ false
+
+
+
+ 3
+ 1
+
+ true
+
+
+
+ false
+
+
+
+ 1
+ 20
+ 0
+ false
+ Infinity
+ -Infinity
+ false
+ Text Input
+ 0
+ false
+ 0
+ true
+ $(P)$(R)VoltOffset
+
+ false
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ 0
+ false
+ true
+ false
+ false
+
+
+ $(pv_name)
+$(pv_value)
+ false
+ true
+ Text Input
+ 80
+ 118
+ 240
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+
+
+ false
+
+
+
+ 1
+ 18
+ 1
+ Text Update
+ 0
+ true
+ $(P)$(R)VoltOffset_RBV
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ false
+ ######
+ $(pv_name)
+$(pv_value)
+ false
+ 1
+ true
+ Text Update
+ 80
+ false
+ 118
+ 217
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 20
+ 2
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Volts/div
+
+ true
+ 1
+ true
+ Label
+ 90
+ false
+ 20
+ 180
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+
+
+ false
+
+
+
+ 1
+ 18
+ 1
+ Text Update
+ 0
+ true
+ $(P)$(R)VoltsPerDiv_RBV
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ false
+ ######
+ $(pv_name)
+$(pv_value)
+ false
+ 1
+ true
+ Text Update
+ 80
+ false
+ 117
+ 134
+
+
+
+ true
+ false
+ false
+
+
+
+ false
+
+
+
+ 6
+ 1
+ true
+
+ Default
+
+ false
+
+
+
+ 20
+
+ Menu Button
+ $(P)$(R)VoltsPerDivSelect
+
+
+
+ true
+ true
+ false
+
+
+ false
+ $(pv_name)
+$(pv_value)
+ false
+ true
+ Menu Button
+ 80
+ 117
+ 180
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 20
+ 2
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ Vert gain
+
+ true
+ 1
+ true
+ Label
+ 90
+ false
+ 20
+ 100
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+
+
+ false
+
+
+
+ 1
+ 18
+ 1
+ Text Update
+ 0
+ true
+ $(P)$(R)VertGain_RBV
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ false
+ ######
+ $(pv_name)
+$(pv_value)
+ false
+ 1
+ true
+ Text Update
+ 80
+ false
+ 118
+ 77
+
+
+
+ true
+ false
+ false
+
+
+
+ false
+
+
+
+ 6
+ 1
+ true
+
+ Default
+
+ false
+
+
+
+ 20
+
+ Menu Button
+ $(P)$(R)VertGainSelect
+
+
+
+ true
+ true
+ false
+
+
+ false
+ $(pv_name)
+$(pv_value)
+ false
+ true
+ Menu Button
+ 80
+ 118
+ 100
+
+
+
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+ 0
+ 1
+ true
+
+
+
+ false
+
+
+
+ 1
+ 18
+ 1
+ Text Update
+ 0
+ true
+ $(P)$(R)VoltsPerDivSelect_RBV
+
+ 0.0
+
+
+ true
+ true
+ false
+
+
+ false
+ ######
+ $(pv_name)
+$(pv_value)
+ false
+ 1
+ true
+ Text Update
+ 80
+ false
+ 117
+ 157
+
+
diff --git a/testAsynPortDriverApp/op/opi/autoconvert/testAsynPortDriverTop.opi b/testAsynPortDriverApp/op/opi/autoconvert/testAsynPortDriverTop.opi
new file mode 100644
index 000000000..e41ffe434
--- /dev/null
+++ b/testAsynPortDriverApp/op/opi/autoconvert/testAsynPortDriverTop.opi
@@ -0,0 +1,138 @@
+
+
+
+ false
+ -1
+ -1
+
+ false
+
+
+
+ 5.1.0
+
+
+
+ 5
+ 50
+
+ true
+
+ testAsynPortDriverTop
+
+
+ true
+ true
+ false
+ true
+ false
+ Display
+ 300
+ 1217
+ 235
+
+
+
+ testAsynPortDriver.opi
+
+ true
+ testAPD:
+ scope1:
+
+ 1
+ testAsynPortDriver
+
+
+ asynRecord.opi
+
+ true
+ testAPD:
+ asyn1
+
+ 1
+ asyn record
+
+
+ false
+ false
+ false
+
+
+
+ false
+
+
+
+ 6
+ 1
+ true
+
+ Default
+
+ false
+
+
+
+ 20
+
+ Menu Button
+
+
+
+
+ true
+ true
+ false
+
+
+ false
+ $(pv_name)
+$(pv_value)
+ false
+ true
+ Menu Button
+ 80
+ 191
+ 12
+
+
+
+ false
+
+
+
+
+
+
+ 0
+ 1
+ true
+
+
+
+
+
+
+ 20
+ 0
+ Label
+
+
+ true
+ true
+ false
+
+
+ false
+ testAsynPortDriver
+
+ true
+ 1
+ true
+ Label
+ 180
+ false
+ 6
+ 12
+
+
diff --git a/testAsynPortDriverApp/op/ui/autoconvert/testAsynPortDriver.ui b/testAsynPortDriverApp/op/ui/autoconvert/testAsynPortDriver.ui
new file mode 100644
index 000000000..df334abd9
--- /dev/null
+++ b/testAsynPortDriverApp/op/ui/autoconvert/testAsynPortDriver.ui
@@ -0,0 +1,1994 @@
+
+
+MainWindow
+
+
+
+ 317
+ 111
+ 830
+ 490
+
+
+
+
+
+QWidget#centralWidget {background: rgba(187, 187, 187, 255);}
+
+caTable {
+ font: 10pt;
+ background: cornsilk;
+ alternate-background-color: wheat;
+}
+
+caLineEdit {
+ border-radius: 1px;
+ background: lightyellow;
+ color: black;
+ }
+
+caTextEntry {
+ color: rgb(127, 0, 63);
+ background-color: cornsilk;
+ selection-color: #0a214c;
+ selection-background-color: wheat;
+ border: 1px groove black;
+ border-radius: 1px;
+ padding: 1px;
+}
+
+caTextEntry:focus {
+ padding: 0px;
+ border: 2px groove darkred;
+ border-radius: 1px;
+}
+
+QPushButton {
+ border-color: #00b;
+ border-radius: 2px;
+ padding: 3px;
+ border-width: 1px;
+
+ background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,
+ stop:0 rgba(224, 239, 255, 255),
+ stop:0.5 rgba(199, 215, 230, 255),
+ stop:1 rgba(184, 214, 236, 255));
+}
+QPushButton:hover {
+ background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,
+ stop:0 rgba(201, 226, 255, 255),
+ stop:0.5 rgba(177, 204, 230, 255),
+ stop:1 rgba(163, 205, 236, 255));
+}
+QPushButton:pressed {
+ background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,
+ stop:0 rgba(174, 219, 255, 255),
+ stop:0.5 rgba(165, 199, 230, 255),
+ stop:1 rgba(134, 188, 236, 255));
+}
+
+QPushButton:disabled {
+ background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,
+ stop:0 rgba(174, 219, 255, 255),
+ stop:0.5 rgba(165, 199, 230, 255),
+ stop:1 rgba(134, 188, 236, 255));
+}
+
+caChoice {
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
+ stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
+}
+
+caChoice > QPushButton {
+ text-align: left;
+ padding: 1px;
+}
+
+caSlider::groove:horizontal {
+border: 1px solid #bbb;
+background: lightgrey;
+height: 20px;
+border-radius: 4px;
+}
+
+caSlider::handle:horizontal {
+background: red;
+border: 1px solid #777;
+width: 13px;
+margin-top: -2px;
+margin-bottom: -2px;
+border-radius: 2px;
+}
+
+
+
+
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1 kHz, 1 volt, sin wave
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter
+
+
+
+ 20
+ 39
+ 230
+ 20
+
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ Noise (V)
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter
+
+
+
+ 20
+ 320
+ 90
+ 20
+
+
+
+
+
+
+ 118
+ 320
+ 80
+ 20
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)NoiseAmplitude
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 115
+ 223
+ 255
+
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ caLineEdit::Static
+
+
+ decimal
+
+
+
+
+
+ 118
+ 297
+ 80
+ 18
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)NoiseAmplitude_RBV
+
+
+
+ 10
+ 0
+ 184
+
+
+
+
+ 187
+ 187
+ 187
+
+
+
+ Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ decimal
+
+
+ caLineEdit::Static
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ Run/stop
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter
+
+
+
+ 30
+ 420
+ 80
+ 20
+
+
+
+
+
+
+ 118
+ 400
+ 80
+ 40
+
+
+
+ $(P)$(R)Run
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 115
+ 223
+ 255
+
+
+
+ caChoice::Static
+
+
+
+
+
+ 118
+ 378
+ 80
+ 18
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)Run_RBV
+
+
+
+ 10
+ 0
+ 184
+
+
+
+
+ 218
+ 218
+ 218
+
+
+
+ Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ decimal
+
+
+ caLineEdit::Alarm_Static
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ Offset (V)
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter
+
+
+
+ 10
+ 240
+ 100
+ 20
+
+
+
+
+
+
+ 118
+ 240
+ 80
+ 20
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)VoltOffset
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 115
+ 223
+ 255
+
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ caLineEdit::Static
+
+
+ decimal
+
+
+
+
+
+ 118
+ 217
+ 80
+ 18
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)VoltOffset_RBV
+
+
+
+ 10
+ 0
+ 184
+
+
+
+
+ 187
+ 187
+ 187
+
+
+
+ Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ decimal
+
+
+ caLineEdit::Static
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ Volts/div
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter
+
+
+
+ 20
+ 180
+ 90
+ 20
+
+
+
+
+
+
+ 117
+ 134
+ 80
+ 18
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)VoltsPerDiv_RBV
+
+
+
+ 10
+ 0
+ 184
+
+
+
+
+ 187
+ 187
+ 187
+
+
+
+ Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ decimal
+
+
+ caLineEdit::Static
+
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ Vert gain
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter
+
+
+
+ 20
+ 100
+ 90
+ 20
+
+
+
+
+
+
+ 118
+ 77
+ 80
+ 18
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)VertGain_RBV
+
+
+
+ 10
+ 0
+ 184
+
+
+
+
+ 187
+ 187
+ 187
+
+
+
+ Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ decimal
+
+
+ caLineEdit::Static
+
+
+
+
+
+
+ 117
+ 157
+ 80
+ 18
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)VoltsPerDivSelect_RBV
+
+
+
+ 10
+ 0
+ 184
+
+
+
+
+ 187
+ 187
+ 187
+
+
+
+ Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ decimal
+
+
+ caLineEdit::Static
+
+
+
+
+
+ 220
+ 66
+ 603
+ 409
+
+
+
+
+
+ 1
+ 0
+ 600
+ 300
+
+
+
+ Digital scope simulator
+
+
+ Horizontal divisions
+
+
+ Vertical divisions
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 115
+ 223
+ 255
+
+
+
+
+ 115
+ 223
+ 255
+
+
+
+ caCartesianPlot::Lines
+
+
+ caCartesianPlot::Lines
+
+
+ caCartesianPlot::Lines
+
+
+ caCartesianPlot::NoSymbol
+
+
+ caCartesianPlot::Rect
+
+
+ caCartesianPlot::Triangle
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ $(P)$(R)TimeBase_RBV;$(P)$(R)Waveform_RBV
+
+
+ caCartesianPlot::Channel
+
+
+ caCartesianPlot::Channel
+
+
+
+
+
+ 396
+ 304
+ 202
+ 102
+
+
+
+
+ caGraphics::Rectangle
+
+
+
+ 0
+ 0
+ 200
+ 100
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ Solid
+
+
+
+
+
+ 45
+ 2
+ 112
+ 23
+
+
+
+
+ caGraphics::Rectangle
+
+
+
+ 0
+ 0
+ 110
+ 21
+
+
+
+
+ 218
+ 218
+ 218
+
+
+
+ Filled
+
+
+
+ 218
+ 218
+ 218
+
+
+
+ Solid
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 10
+ 0
+ 184
+
+
+
+
+ 10
+ 0
+ 184
+
+
+
+ Statistics
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter
+
+
+
+ 3
+ 0
+ 103
+ 20
+
+
+
+
+
+
+
+ 11
+ 25
+ 180
+ 72
+
+
+
+
+
+ 0
+ 0
+ 159
+ 22
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ Minimum
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter
+
+
+
+ 0
+ 0
+ 70
+ 20
+
+
+
+
+
+
+ 75
+ 1
+ 82
+ 18
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)MinValue_RBV
+
+
+
+ 10
+ 0
+ 184
+
+
+
+
+ 187
+ 187
+ 187
+
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter
+
+
+ decimal
+
+
+ caLineEdit::Static
+
+
+
+
+
+
+ 0
+ 25
+ 159
+ 22
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ Maximum
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter
+
+
+
+ 0
+ 0
+ 70
+ 20
+
+
+
+
+
+
+ 75
+ 1
+ 82
+ 18
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)MaxValue_RBV
+
+
+
+ 10
+ 0
+ 184
+
+
+
+
+ 187
+ 187
+ 187
+
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter
+
+
+ decimal
+
+
+ caLineEdit::Static
+
+
+
+
+
+
+ 30
+ 50
+ 150
+ 22
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ Mean
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter
+
+
+
+ 0
+ 0
+ 40
+ 20
+
+
+
+
+
+
+ 45
+ 1
+ 103
+ 18
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)MeanValue_RBV
+
+
+
+ 10
+ 0
+ 184
+
+
+
+
+ 187
+ 187
+ 187
+
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter
+
+
+ decimal
+
+
+ caLineEdit::Static
+
+
+
+
+
+
+
+
+ 235
+ 304
+ 132
+ 70
+
+
+
+
+
+ 35
+ 23
+ 60
+ 20
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)TriggerDelay
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 115
+ 223
+ 255
+
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ caLineEdit::Static
+
+
+ decimal
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ Trigger delay
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter
+
+
+
+ 0
+ 48
+ 130
+ 20
+
+
+
+
+
+
+ 35
+ 0
+ 61
+ 18
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)TriggerDelay_RBV
+
+
+
+ 10
+ 0
+ 184
+
+
+
+
+ 187
+ 187
+ 187
+
+
+
+ Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ decimal
+
+
+ caLineEdit::Static
+
+
+
+
+
+
+ 0
+ 304
+ 112
+ 70
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ Update time
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter
+
+
+
+ 0
+ 48
+ 110
+ 20
+
+
+
+
+
+
+ 25
+ 23
+ 60
+ 20
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)UpdateTime
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 115
+ 223
+ 255
+
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ caLineEdit::Static
+
+
+ decimal
+
+
+
+
+
+ 25
+ 0
+ 61
+ 18
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)UpdateTime_RBV
+
+
+
+ 10
+ 0
+ 184
+
+
+
+
+ 187
+ 187
+ 187
+
+
+
+ Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ decimal
+
+
+ caLineEdit::Static
+
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ Time/div
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter
+
+
+
+ 142
+ 352
+ 80
+ 20
+
+
+
+
+
+
+ 152
+ 304
+ 61
+ 18
+
+
+
+ caLineEdit::WidthAndHeight
+
+
+ $(P)$(R)TimePerDiv_RBV
+
+
+
+ 10
+ 0
+ 184
+
+
+
+
+ 187
+ 187
+ 187
+
+
+
+ Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ caLineEdit::Channel
+
+
+ 0.0
+
+
+ 1.0
+
+
+ decimal
+
+
+ caLineEdit::Static
+
+
+
+
+
+
+ 1
+ 387
+ 237
+ 22
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ Waveform scan
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter
+
+
+
+ 0
+ 0
+ 130
+ 20
+
+
+
+
+
+
+
+
+
+ 320
+ 5
+ 362
+ 57
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ Simple digital scope simulator
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter
+
+
+
+ 0
+ 0
+ 360
+ 25
+
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 89
+ 126
+ 225
+
+
+
+
+ 89
+ 126
+ 225
+
+
+
+ $(P)$(R)
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+ Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter
+
+
+
+ 144
+ 30
+ 96
+ 25
+
+
+
+
+ caLabel_0
+ caLabel_1
+ caLabel_2
+ caLabel_3
+ caLabel_4
+ caLabel_5
+ caRectangle_0
+ caRectangle_1
+ caLabel_6
+ caFrame_2
+ caLabel_7
+ caFrame_4
+ caLabel_8
+ caFrame_5
+ caLabel_9
+ caFrame_6
+ caFrame_3
+ caFrame_1
+ caLabel_10
+ caFrame_7
+ caLabel_11
+ caFrame_8
+ caLabel_12
+ caLabel_13
+ caFrame_9
+ caFrame_0
+ caLabel_14
+ caLabel_15
+ caFrame_10
+ caTextEntry_0
+ caLineEdit_0
+ caChoice_0
+ caLineEdit_1
+ caTextEntry_1
+ caLineEdit_2
+ caLineEdit_3
+ caMenu_0
+ caLineEdit_4
+ caMenu_1
+ caLineEdit_5
+ caCartesianPlot_0
+ caLineEdit_6
+ caLineEdit_7
+ caLineEdit_8
+ caTextEntry_2
+ caLineEdit_9
+ caTextEntry_3
+ caLineEdit_10
+ caLineEdit_11
+ caMenu_2
+ caMenu_3
+
+
+
\ No newline at end of file
diff --git a/testAsynPortDriverApp/op/ui/autoconvert/testAsynPortDriverTop.ui b/testAsynPortDriverApp/op/ui/autoconvert/testAsynPortDriverTop.ui
new file mode 100644
index 000000000..f77a30d31
--- /dev/null
+++ b/testAsynPortDriverApp/op/ui/autoconvert/testAsynPortDriverTop.ui
@@ -0,0 +1,188 @@
+
+
+MainWindow
+
+
+
+ 1217
+ 235
+ 300
+ 50
+
+
+
+
+
+QWidget#centralWidget {background: rgba(187, 187, 187, 255);}
+
+caTable {
+ font: 10pt;
+ background: cornsilk;
+ alternate-background-color: wheat;
+}
+
+caLineEdit {
+ border-radius: 1px;
+ background: lightyellow;
+ color: black;
+ }
+
+caTextEntry {
+ color: rgb(127, 0, 63);
+ background-color: cornsilk;
+ selection-color: #0a214c;
+ selection-background-color: wheat;
+ border: 1px groove black;
+ border-radius: 1px;
+ padding: 1px;
+}
+
+caTextEntry:focus {
+ padding: 0px;
+ border: 2px groove darkred;
+ border-radius: 1px;
+}
+
+QPushButton {
+ border-color: #00b;
+ border-radius: 2px;
+ padding: 3px;
+ border-width: 1px;
+
+ background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,
+ stop:0 rgba(224, 239, 255, 255),
+ stop:0.5 rgba(199, 215, 230, 255),
+ stop:1 rgba(184, 214, 236, 255));
+}
+QPushButton:hover {
+ background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,
+ stop:0 rgba(201, 226, 255, 255),
+ stop:0.5 rgba(177, 204, 230, 255),
+ stop:1 rgba(163, 205, 236, 255));
+}
+QPushButton:pressed {
+ background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,
+ stop:0 rgba(174, 219, 255, 255),
+ stop:0.5 rgba(165, 199, 230, 255),
+ stop:1 rgba(134, 188, 236, 255));
+}
+
+QPushButton:disabled {
+ background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,
+ stop:0 rgba(174, 219, 255, 255),
+ stop:0.5 rgba(165, 199, 230, 255),
+ stop:1 rgba(134, 188, 236, 255));
+}
+
+caChoice {
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
+ stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
+}
+
+caChoice > QPushButton {
+ text-align: left;
+ padding: 1px;
+}
+
+caSlider::groove:horizontal {
+border: 1px solid #bbb;
+background: lightgrey;
+height: 20px;
+border-radius: 4px;
+}
+
+caSlider::handle:horizontal {
+background: red;
+border: 1px solid #777;
+width: 13px;
+margin-top: -2px;
+margin-bottom: -2px;
+border-radius: 2px;
+}
+
+
+
+
+
+
+
+
+
+ 191
+ 12
+ 80
+ 20
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 187
+ 187
+ 187
+
+
+
+ Menu
+
+
+ testAsynPortDriver;asyn record
+
+
+ testAsynPortDriver.adl;asynRecord.adl
+
+
+ P=testAPD:, R=scope1:;P=testAPD:, R=asyn1
+
+
+ false;false
+
+
+
+
+ QFrame::NoFrame
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ testAsynPortDriver
+
+
+ ESimpleLabel::WidthAndHeight
+
+
+
+ 6
+ 12
+ 180
+ 20
+
+
+
+ Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter
+
+
+ caLabel_0
+ caRelatedDisplay_0
+
+
+
\ No newline at end of file